add several BSN OXMs
diff --git a/c_gen/c_match.py b/c_gen/c_match.py
index 270a6ba..4001612 100644
--- a/c_gen/c_match.py
+++ b/c_gen/c_match.py
@@ -289,6 +289,11 @@
OF_OXM_INDEX_BSN_IN_PORTS_128 = 36,
OF_OXM_INDEX_BSN_LAG_ID = 37,
+ OF_OXM_INDEX_BSN_VRF = 38,
+ OF_OXM_INDEX_BSN_GLOBAL_VRF_ALLOWED = 39,
+ OF_OXM_INDEX_BSN_L3_INTERFACE_CLASS_ID = 40,
+ OF_OXM_INDEX_BSN_L3_SRC_CLASS_ID = 41,
+ OF_OXM_INDEX_BSN_L3_DST_CLASS_ID = 42,
};
#define OF_OXM_BIT(index) (((uint64_t) 1) << (index))
diff --git a/c_gen/c_type_maps.py b/c_gen/c_type_maps.py
index ab4b3e0..8883193 100644
--- a/c_gen/c_type_maps.py
+++ b/c_gen/c_type_maps.py
@@ -600,6 +600,16 @@
case 0x01: return OF_OXM_BSN_IN_PORTS_128_MASKED;
case 0x02: return OF_OXM_BSN_LAG_ID;
case 0x03: return OF_OXM_BSN_LAG_ID_MASKED;
+ case 0x04: return OF_OXM_BSN_VRF;
+ case 0x05: return OF_OXM_BSN_VRF_MASKED;
+ case 0x06: return OF_OXM_BSN_GLOBAL_VRF_ALLOWED;
+ case 0x07: return OF_OXM_BSN_GLOBAL_VRF_ALLOWED_MASKED;
+ case 0x08: return OF_OXM_BSN_L3_INTERFACE_CLASS_ID;
+ case 0x09: return OF_OXM_BSN_L3_INTERFACE_CLASS_ID_MASKED;
+ case 0x0a: return OF_OXM_BSN_L3_SRC_CLASS_ID;
+ case 0x0b: return OF_OXM_BSN_L3_SRC_CLASS_ID_MASKED;
+ case 0x0c: return OF_OXM_BSN_L3_DST_CLASS_ID;
+ case 0x0d: return OF_OXM_BSN_L3_DST_CLASS_ID_MASKED;
default: return OF_OBJECT_INVALID;
}
} else {
diff --git a/c_gen/templates/loci_show.h b/c_gen/templates/loci_show.h
index de96a4b..f4d3f92 100644
--- a/c_gen/templates/loci_show.h
+++ b/c_gen/templates/loci_show.h
@@ -346,5 +346,10 @@
#define LOCI_SHOW_u32_tx_interval_ms(writer, cookie, val) LOCI_SHOW_u32(writer, cookie, val)
#define LOCI_SHOW_u8_slot_num(writer, cookie, val) LOCI_SHOW_u8(writer, cookie, val)
#define LOCI_SHOW_u32_bsn_lag_id(writer, cookie, val) LOCI_SHOW_u32(writer, cookie, val)
+#define LOCI_SHOW_u32_bsn_vrf(writer, cookie, val) LOCI_SHOW_u32(writer, cookie, val)
+#define LOCI_SHOW_u8_bsn_global_vrf_allowed(writer, cookie, val) LOCI_SHOW_u8(writer, cookie, val)
+#define LOCI_SHOW_u32_bsn_l3_interface_class_id(writer, cookie, val) LOCI_SHOW_u32(writer, cookie, val)
+#define LOCI_SHOW_u32_bsn_l3_src_class_id(writer, cookie, val) LOCI_SHOW_u32(writer, cookie, val)
+#define LOCI_SHOW_u32_bsn_l3_dst_class_id(writer, cookie, val) LOCI_SHOW_u32(writer, cookie, val)
#endif /* _LOCI_SHOW_H_ */
diff --git a/c_gen/templates/of_type_maps.c b/c_gen/templates/of_type_maps.c
index df49492..fabd25f 100644
--- a/c_gen/templates/of_type_maps.c
+++ b/c_gen/templates/of_type_maps.c
@@ -596,6 +596,36 @@
case OF_OXM_BSN_LAG_ID_MASKED:
type_len = 0x00030300 | (type_len & 0xff);
break;
+ case OF_OXM_BSN_VRF:
+ type_len = 0x00030400 | (type_len & 0xff);
+ break;
+ case OF_OXM_BSN_VRF_MASKED:
+ type_len = 0x00030500 | (type_len & 0xff);
+ break;
+ case OF_OXM_BSN_GLOBAL_VRF_ALLOWED:
+ type_len = 0x00030600 | (type_len & 0xff);
+ break;
+ case OF_OXM_BSN_GLOBAL_VRF_ALLOWED_MASKED:
+ type_len = 0x00030700 | (type_len & 0xff);
+ break;
+ case OF_OXM_BSN_L3_INTERFACE_CLASS_ID:
+ type_len = 0x00030800 | (type_len & 0xff);
+ break;
+ case OF_OXM_BSN_L3_INTERFACE_CLASS_ID_MASKED:
+ type_len = 0x00030900 | (type_len & 0xff);
+ break;
+ case OF_OXM_BSN_L3_SRC_CLASS_ID:
+ type_len = 0x00030a00 | (type_len & 0xff);
+ break;
+ case OF_OXM_BSN_L3_SRC_CLASS_ID_MASKED:
+ type_len = 0x00030b00 | (type_len & 0xff);
+ break;
+ case OF_OXM_BSN_L3_DST_CLASS_ID:
+ type_len = 0x00030c00 | (type_len & 0xff);
+ break;
+ case OF_OXM_BSN_L3_DST_CLASS_ID_MASKED:
+ type_len = 0x00030d00 | (type_len & 0xff);
+ break;
default:
wire_type = of_object_to_wire_type(id, obj->version);
ASSERT(wire_type >= 0);