--- openflow-2012-10-09-5.h	2015-07-23 09:54:17.468479375 -0700
+++ openflow-2012-12-04.h	2015-07-23 09:54:17.472479375 -0700
@@ -609,9 +609,10 @@
     OFPXMT_OFB_PBB_ISID       = 37, /* PBB I-SID. */
     OFPXMT_OFB_TUNNEL_ID      = 38, /* Logical Port Metadata. */
     OFPXMT_OFB_IPV6_EXTHDR    = 39, /* IPv6 Extension Header pseudo-field */
+    OFPXMT_OFB_PBB_UCA        = 41, /* PBB UCA header field. */
 };
 
-#define OFPXMT_OFB_ALL    ((UINT64_C(1) << 40) - 1)
+#define OFPXMT_OFB_ALL    ((UINT64_C(1) << 42) - 1)
 
 /* OpenFlow port on which the packet was received.
  * May be a physical port, a logical port, or the reserved port OFPP_LOCAL
@@ -1033,6 +1034,20 @@
     OFPIEH_UNSEQ  = 1 << 8,     /* Unexpected sequencing encountered. */
 };
 
+/* IEEE 802.1ah UCA.
+ *
+ * For a packet with a PBB header, this is the UCA (Use Customer Address)
+ * from the outermost service tag.
+ *
+ * Prereqs:
+ *   OXM_OF_ETH_TYPE must match 0x88E7 exactly.
+ *
+ * Format: 8-bit integer with 7 most-significant bits forced to 0.
+ * Only the lower 1 bit has meaning.
+ *
+ * Masking: Not maskable. */
+#define OXM_OF_PBB_UCA    OXM_HEADER  (0x8000, OFPXMT_OFB_PBB_UCA, 1)
+
 /* Header for OXM experimenter match fields. */
 struct ofp_oxm_experimenter_header {
     uint32_t oxm_header;        /* oxm_class = OFPXMC_EXPERIMENTER */
