update pyloxi to floodlight/loxigen-artifacts @ 6fb4ac9fe79ec8730ae34928df12cdf671f3ba75
diff --git a/src/python/loxi/of13/bsn_tlv.py b/src/python/loxi/of13/bsn_tlv.py
index 66a4839..3559248 100644
--- a/src/python/loxi/of13/bsn_tlv.py
+++ b/src/python/loxi/of13/bsn_tlv.py
@@ -3551,6 +3551,53 @@
bsn_tlv.subtypes[6] = vlan_vid
+class vlan_vid_mask(bsn_tlv):
+ type = 77
+
+ def __init__(self, value=None):
+ if value != None:
+ self.value = value
+ else:
+ self.value = 0
+ return
+
+ def pack(self):
+ packed = []
+ packed.append(struct.pack("!H", self.type))
+ packed.append(struct.pack("!H", 0)) # placeholder for length at index 1
+ packed.append(struct.pack("!H", self.value))
+ length = sum([len(x) for x in packed])
+ packed[1] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = vlan_vid_mask()
+ _type = reader.read("!H")[0]
+ assert(_type == 77)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ obj.value = reader.read("!H")[0]
+ return obj
+
+ def __eq__(self, other):
+ if type(self) != type(other): return False
+ if self.value != other.value: return False
+ return True
+
+ def pretty_print(self, q):
+ q.text("vlan_vid_mask {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[77] = vlan_vid_mask
+
class vrf(bsn_tlv):
type = 19
diff --git a/src/python/loxi/of13/common.py b/src/python/loxi/of13/common.py
index 450c9bb..73011a4 100644
--- a/src/python/loxi/of13/common.py
+++ b/src/python/loxi/of13/common.py
@@ -2951,6 +2951,7 @@
packed.append(loxi.generic_util.pack_list(self.action_ids))
length = sum([len(x) for x in packed])
packed[1] = struct.pack("!H", length)
+ packed.append(loxi.generic_util.pad_to(8, length))
return ''.join(packed)
@staticmethod
@@ -2962,6 +2963,7 @@
orig_reader = reader
reader = orig_reader.slice(_length, 4)
obj.action_ids = loxi.generic_util.unpack_list(reader, ofp.action_id.action_id.unpack)
+ orig_reader.skip_align()
return obj
def __eq__(self, other):
@@ -2998,6 +3000,7 @@
packed.append(loxi.generic_util.pack_list(self.action_ids))
length = sum([len(x) for x in packed])
packed[1] = struct.pack("!H", length)
+ packed.append(loxi.generic_util.pad_to(8, length))
return ''.join(packed)
@staticmethod
@@ -3009,6 +3012,7 @@
orig_reader = reader
reader = orig_reader.slice(_length, 4)
obj.action_ids = loxi.generic_util.unpack_list(reader, ofp.action_id.action_id.unpack)
+ orig_reader.skip_align()
return obj
def __eq__(self, other):
@@ -3045,6 +3049,7 @@
packed.append(loxi.generic_util.pack_list(self.oxm_ids))
length = sum([len(x) for x in packed])
packed[1] = struct.pack("!H", length)
+ packed.append(loxi.generic_util.pad_to(8, length))
return ''.join(packed)
@staticmethod
@@ -3056,6 +3061,7 @@
orig_reader = reader
reader = orig_reader.slice(_length, 4)
obj.oxm_ids = loxi.generic_util.unpack_list(reader, ofp.common.uint32.unpack)
+ orig_reader.skip_align()
return obj
def __eq__(self, other):
@@ -3092,6 +3098,7 @@
packed.append(loxi.generic_util.pack_list(self.oxm_ids))
length = sum([len(x) for x in packed])
packed[1] = struct.pack("!H", length)
+ packed.append(loxi.generic_util.pad_to(8, length))
return ''.join(packed)
@staticmethod
@@ -3103,6 +3110,7 @@
orig_reader = reader
reader = orig_reader.slice(_length, 4)
obj.oxm_ids = loxi.generic_util.unpack_list(reader, ofp.common.uint32.unpack)
+ orig_reader.skip_align()
return obj
def __eq__(self, other):
@@ -3151,6 +3159,7 @@
packed.append(self.experimenter_data)
length = sum([len(x) for x in packed])
packed[1] = struct.pack("!H", length)
+ packed.append(loxi.generic_util.pad_to(8, length))
return ''.join(packed)
@staticmethod
@@ -3169,6 +3178,7 @@
obj.experimenter = reader.read("!L")[0]
obj.subtype = reader.read("!L")[0]
obj.experimenter_data = str(reader.read_all())
+ orig_reader.skip_align()
return obj
def __eq__(self, other):
@@ -3222,6 +3232,7 @@
packed.append(self.experimenter_data)
length = sum([len(x) for x in packed])
packed[1] = struct.pack("!H", length)
+ packed.append(loxi.generic_util.pad_to(8, length))
return ''.join(packed)
@staticmethod
@@ -3240,6 +3251,7 @@
obj.experimenter = reader.read("!L")[0]
obj.subtype = reader.read("!L")[0]
obj.experimenter_data = str(reader.read_all())
+ orig_reader.skip_align()
return obj
def __eq__(self, other):
@@ -3281,6 +3293,7 @@
packed.append(loxi.generic_util.pack_list(self.instruction_ids))
length = sum([len(x) for x in packed])
packed[1] = struct.pack("!H", length)
+ packed.append(loxi.generic_util.pad_to(8, length))
return ''.join(packed)
@staticmethod
@@ -3292,6 +3305,7 @@
orig_reader = reader
reader = orig_reader.slice(_length, 4)
obj.instruction_ids = loxi.generic_util.unpack_list(reader, ofp.instruction_id.instruction_id.unpack)
+ orig_reader.skip_align()
return obj
def __eq__(self, other):
@@ -3328,6 +3342,7 @@
packed.append(loxi.generic_util.pack_list(self.instruction_ids))
length = sum([len(x) for x in packed])
packed[1] = struct.pack("!H", length)
+ packed.append(loxi.generic_util.pad_to(8, length))
return ''.join(packed)
@staticmethod
@@ -3339,6 +3354,7 @@
orig_reader = reader
reader = orig_reader.slice(_length, 4)
obj.instruction_ids = loxi.generic_util.unpack_list(reader, ofp.instruction_id.instruction_id.unpack)
+ orig_reader.skip_align()
return obj
def __eq__(self, other):
@@ -3375,6 +3391,7 @@
packed.append(loxi.generic_util.pack_list(self.oxm_ids))
length = sum([len(x) for x in packed])
packed[1] = struct.pack("!H", length)
+ packed.append(loxi.generic_util.pad_to(8, length))
return ''.join(packed)
@staticmethod
@@ -3386,6 +3403,7 @@
orig_reader = reader
reader = orig_reader.slice(_length, 4)
obj.oxm_ids = loxi.generic_util.unpack_list(reader, ofp.common.uint32.unpack)
+ orig_reader.skip_align()
return obj
def __eq__(self, other):
@@ -3422,6 +3440,7 @@
packed.append(loxi.generic_util.pack_list(self.next_table_ids))
length = sum([len(x) for x in packed])
packed[1] = struct.pack("!H", length)
+ packed.append(loxi.generic_util.pad_to(8, length))
return ''.join(packed)
@staticmethod
@@ -3433,6 +3452,7 @@
orig_reader = reader
reader = orig_reader.slice(_length, 4)
obj.next_table_ids = loxi.generic_util.unpack_list(reader, ofp.common.uint8.unpack)
+ orig_reader.skip_align()
return obj
def __eq__(self, other):
@@ -3469,6 +3489,7 @@
packed.append(loxi.generic_util.pack_list(self.next_table_ids))
length = sum([len(x) for x in packed])
packed[1] = struct.pack("!H", length)
+ packed.append(loxi.generic_util.pad_to(8, length))
return ''.join(packed)
@staticmethod
@@ -3480,6 +3501,7 @@
orig_reader = reader
reader = orig_reader.slice(_length, 4)
obj.next_table_ids = loxi.generic_util.unpack_list(reader, ofp.common.uint8.unpack)
+ orig_reader.skip_align()
return obj
def __eq__(self, other):
@@ -3516,6 +3538,7 @@
packed.append(loxi.generic_util.pack_list(self.oxm_ids))
length = sum([len(x) for x in packed])
packed[1] = struct.pack("!H", length)
+ packed.append(loxi.generic_util.pad_to(8, length))
return ''.join(packed)
@staticmethod
@@ -3527,6 +3550,7 @@
orig_reader = reader
reader = orig_reader.slice(_length, 4)
obj.oxm_ids = loxi.generic_util.unpack_list(reader, ofp.common.uint32.unpack)
+ orig_reader.skip_align()
return obj
def __eq__(self, other):
@@ -3563,6 +3587,7 @@
packed.append(loxi.generic_util.pack_list(self.action_ids))
length = sum([len(x) for x in packed])
packed[1] = struct.pack("!H", length)
+ packed.append(loxi.generic_util.pad_to(8, length))
return ''.join(packed)
@staticmethod
@@ -3574,6 +3599,7 @@
orig_reader = reader
reader = orig_reader.slice(_length, 4)
obj.action_ids = loxi.generic_util.unpack_list(reader, ofp.action_id.action_id.unpack)
+ orig_reader.skip_align()
return obj
def __eq__(self, other):
@@ -3610,6 +3636,7 @@
packed.append(loxi.generic_util.pack_list(self.action_ids))
length = sum([len(x) for x in packed])
packed[1] = struct.pack("!H", length)
+ packed.append(loxi.generic_util.pad_to(8, length))
return ''.join(packed)
@staticmethod
@@ -3621,6 +3648,7 @@
orig_reader = reader
reader = orig_reader.slice(_length, 4)
obj.action_ids = loxi.generic_util.unpack_list(reader, ofp.action_id.action_id.unpack)
+ orig_reader.skip_align()
return obj
def __eq__(self, other):
@@ -3657,6 +3685,7 @@
packed.append(loxi.generic_util.pack_list(self.oxm_ids))
length = sum([len(x) for x in packed])
packed[1] = struct.pack("!H", length)
+ packed.append(loxi.generic_util.pad_to(8, length))
return ''.join(packed)
@staticmethod
@@ -3668,6 +3697,7 @@
orig_reader = reader
reader = orig_reader.slice(_length, 4)
obj.oxm_ids = loxi.generic_util.unpack_list(reader, ofp.common.uint32.unpack)
+ orig_reader.skip_align()
return obj
def __eq__(self, other):
@@ -3704,6 +3734,7 @@
packed.append(loxi.generic_util.pack_list(self.oxm_ids))
length = sum([len(x) for x in packed])
packed[1] = struct.pack("!H", length)
+ packed.append(loxi.generic_util.pad_to(8, length))
return ''.join(packed)
@staticmethod
@@ -3715,6 +3746,7 @@
orig_reader = reader
reader = orig_reader.slice(_length, 4)
obj.oxm_ids = loxi.generic_util.unpack_list(reader, ofp.common.uint32.unpack)
+ orig_reader.skip_align()
return obj
def __eq__(self, other):
diff --git a/src/python/loxi/of13/const.py b/src/python/loxi/of13/const.py
index fc0fd7b..35df7f0 100644
--- a/src/python/loxi/of13/const.py
+++ b/src/python/loxi/of13/const.py
@@ -354,6 +354,7 @@
OFP_BSN_PORT_COUNTER_RX_LENGTH_ERRORS = 24
OFP_BSN_PORT_COUNTER_RX_OVERFLOW_ERRORS = 25
OFP_BSN_PORT_COUNTER_TX_CARRIER_ERRORS = 26
+OFP_BSN_PORT_COUNTER_RX_PACKETS_BAD_VLAN = 27
ofp_bsn_port_counter_map = {
0: 'OFP_BSN_PORT_COUNTER_RX_BYTES',
@@ -383,6 +384,7 @@
24: 'OFP_BSN_PORT_COUNTER_RX_LENGTH_ERRORS',
25: 'OFP_BSN_PORT_COUNTER_RX_OVERFLOW_ERRORS',
26: 'OFP_BSN_PORT_COUNTER_TX_CARRIER_ERRORS',
+ 27: 'OFP_BSN_PORT_COUNTER_RX_PACKETS_BAD_VLAN',
}
# Identifiers from group ofp_bsn_tcp_flag
diff --git a/src/python/loxi/of13/oxm.py b/src/python/loxi/of13/oxm.py
index 603afc3..51b1a73 100644
--- a/src/python/loxi/of13/oxm.py
+++ b/src/python/loxi/of13/oxm.py
@@ -975,6 +975,190 @@
oxm.subtypes[207112] = bsn_ingress_port_group_id_masked
+class bsn_inner_eth_dst(oxm):
+ type_len = 207878
+
+ def __init__(self, value=None):
+ if value != None:
+ self.value = value
+ else:
+ self.value = [0,0,0,0,0,0]
+ return
+
+ def pack(self):
+ packed = []
+ packed.append(struct.pack("!L", self.type_len))
+ packed.append(struct.pack("!6B", *self.value))
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = bsn_inner_eth_dst()
+ _type_len = reader.read("!L")[0]
+ assert(_type_len == 207878)
+ obj.value = list(reader.read('!6B'))
+ return obj
+
+ def __eq__(self, other):
+ if type(self) != type(other): return False
+ if self.value != other.value: return False
+ return True
+
+ def pretty_print(self, q):
+ q.text("bsn_inner_eth_dst {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text(util.pretty_mac(self.value))
+ q.breakable()
+ q.text('}')
+
+oxm.subtypes[207878] = bsn_inner_eth_dst
+
+class bsn_inner_eth_dst_masked(oxm):
+ type_len = 208140
+
+ def __init__(self, value=None, value_mask=None):
+ if value != None:
+ self.value = value
+ else:
+ self.value = [0,0,0,0,0,0]
+ if value_mask != None:
+ self.value_mask = value_mask
+ else:
+ self.value_mask = [0,0,0,0,0,0]
+ return
+
+ def pack(self):
+ packed = []
+ packed.append(struct.pack("!L", self.type_len))
+ packed.append(struct.pack("!6B", *self.value))
+ packed.append(struct.pack("!6B", *self.value_mask))
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = bsn_inner_eth_dst_masked()
+ _type_len = reader.read("!L")[0]
+ assert(_type_len == 208140)
+ obj.value = list(reader.read('!6B'))
+ obj.value_mask = list(reader.read('!6B'))
+ return obj
+
+ def __eq__(self, other):
+ if type(self) != type(other): return False
+ if self.value != other.value: return False
+ if self.value_mask != other.value_mask: return False
+ return True
+
+ def pretty_print(self, q):
+ q.text("bsn_inner_eth_dst_masked {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text(util.pretty_mac(self.value))
+ q.text(","); q.breakable()
+ q.text("value_mask = ");
+ q.text(util.pretty_mac(self.value_mask))
+ q.breakable()
+ q.text('}')
+
+oxm.subtypes[208140] = bsn_inner_eth_dst_masked
+
+class bsn_inner_eth_src(oxm):
+ type_len = 208390
+
+ def __init__(self, value=None):
+ if value != None:
+ self.value = value
+ else:
+ self.value = [0,0,0,0,0,0]
+ return
+
+ def pack(self):
+ packed = []
+ packed.append(struct.pack("!L", self.type_len))
+ packed.append(struct.pack("!6B", *self.value))
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = bsn_inner_eth_src()
+ _type_len = reader.read("!L")[0]
+ assert(_type_len == 208390)
+ obj.value = list(reader.read('!6B'))
+ return obj
+
+ def __eq__(self, other):
+ if type(self) != type(other): return False
+ if self.value != other.value: return False
+ return True
+
+ def pretty_print(self, q):
+ q.text("bsn_inner_eth_src {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text(util.pretty_mac(self.value))
+ q.breakable()
+ q.text('}')
+
+oxm.subtypes[208390] = bsn_inner_eth_src
+
+class bsn_inner_eth_src_masked(oxm):
+ type_len = 208652
+
+ def __init__(self, value=None, value_mask=None):
+ if value != None:
+ self.value = value
+ else:
+ self.value = [0,0,0,0,0,0]
+ if value_mask != None:
+ self.value_mask = value_mask
+ else:
+ self.value_mask = [0,0,0,0,0,0]
+ return
+
+ def pack(self):
+ packed = []
+ packed.append(struct.pack("!L", self.type_len))
+ packed.append(struct.pack("!6B", *self.value))
+ packed.append(struct.pack("!6B", *self.value_mask))
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = bsn_inner_eth_src_masked()
+ _type_len = reader.read("!L")[0]
+ assert(_type_len == 208652)
+ obj.value = list(reader.read('!6B'))
+ obj.value_mask = list(reader.read('!6B'))
+ return obj
+
+ def __eq__(self, other):
+ if type(self) != type(other): return False
+ if self.value != other.value: return False
+ if self.value_mask != other.value_mask: return False
+ return True
+
+ def pretty_print(self, q):
+ q.text("bsn_inner_eth_src_masked {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text(util.pretty_mac(self.value))
+ q.text(","); q.breakable()
+ q.text("value_mask = ");
+ q.text(util.pretty_mac(self.value_mask))
+ q.breakable()
+ q.text('}')
+
+oxm.subtypes[208652] = bsn_inner_eth_src_masked
+
class bsn_l2_cache_hit(oxm):
type_len = 205825
@@ -2447,6 +2631,98 @@
oxm.subtypes[197896] = bsn_vrf_masked
+class bsn_vxlan_network_id(oxm):
+ type_len = 207364
+
+ def __init__(self, value=None):
+ if value != None:
+ self.value = value
+ else:
+ self.value = 0
+ return
+
+ def pack(self):
+ packed = []
+ packed.append(struct.pack("!L", self.type_len))
+ packed.append(struct.pack("!L", self.value))
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = bsn_vxlan_network_id()
+ _type_len = reader.read("!L")[0]
+ assert(_type_len == 207364)
+ obj.value = reader.read("!L")[0]
+ return obj
+
+ def __eq__(self, other):
+ if type(self) != type(other): return False
+ if self.value != other.value: return False
+ return True
+
+ def pretty_print(self, q):
+ q.text("bsn_vxlan_network_id {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+oxm.subtypes[207364] = bsn_vxlan_network_id
+
+class bsn_vxlan_network_id_masked(oxm):
+ type_len = 207624
+
+ def __init__(self, value=None, value_mask=None):
+ if value != None:
+ self.value = value
+ else:
+ self.value = 0
+ if value_mask != None:
+ self.value_mask = value_mask
+ else:
+ self.value_mask = 0
+ return
+
+ def pack(self):
+ packed = []
+ packed.append(struct.pack("!L", self.type_len))
+ packed.append(struct.pack("!L", self.value))
+ packed.append(struct.pack("!L", self.value_mask))
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = bsn_vxlan_network_id_masked()
+ _type_len = reader.read("!L")[0]
+ assert(_type_len == 207624)
+ obj.value = reader.read("!L")[0]
+ obj.value_mask = reader.read("!L")[0]
+ return obj
+
+ def __eq__(self, other):
+ if type(self) != type(other): return False
+ if self.value != other.value: return False
+ if self.value_mask != other.value_mask: return False
+ return True
+
+ def pretty_print(self, q):
+ q.text("bsn_vxlan_network_id_masked {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.text(","); q.breakable()
+ q.text("value_mask = ");
+ q.text("%#x" % self.value_mask)
+ q.breakable()
+ q.text('}')
+
+oxm.subtypes[207624] = bsn_vxlan_network_id_masked
+
class eth_dst(oxm):
type_len = 2147485190