Merge into master from pull request #165:
Use a short timeout when polling for packets. (https://github.com/floodlight/oftest/pull/165)
diff --git a/src/python/loxi/generic_util.py b/src/python/loxi/generic_util.py
index aa218a2..7f3ac46 100644
--- a/src/python/loxi/generic_util.py
+++ b/src/python/loxi/generic_util.py
@@ -82,7 +82,7 @@
self.offset += length
def skip_align(self):
- new_offset = ((self.start + self.offset + 7) / 8 * 8) - self.start
+ new_offset = (self.offset + 7) / 8 * 8
if new_offset > self.length:
raise loxi.ProtocolError("Buffer too short")
self.offset = new_offset
@@ -91,9 +91,10 @@
return self.offset == self.length
# Used when parsing objects that have their own length fields
- def slice(self, length):
- if self.offset + length > self.length:
+ def slice(self, length, rewind=0):
+ if self.offset + length - rewind > self.length:
raise loxi.ProtocolError("Buffer too short")
- reader = OFReader(self.buf, self.start + self.offset, length)
- self.offset += length
+ reader = OFReader(self.buf, self.start + self.offset - rewind, length)
+ reader.skip(rewind)
+ self.offset += length - rewind
return reader
diff --git a/src/python/loxi/of10/action.py b/src/python/loxi/of10/action.py
index e2cf539..d8ac86f 100644
--- a/src/python/loxi/of10/action.py
+++ b/src/python/loxi/of10/action.py
@@ -8,13 +8,12 @@
import struct
import loxi
-import const
-import action
-import message
-import common
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of10']
+
class action(loxi.OFObject):
subtypes = {}
@@ -46,7 +45,7 @@
obj.type = reader.read("!H")[0]
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -102,7 +101,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.experimenter = reader.read("!L")[0]
obj.data = str(reader.read_all())
return obj
@@ -161,7 +160,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
obj.subtype = reader.read("!L")[0]
@@ -213,7 +212,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -279,7 +278,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -345,7 +344,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -402,7 +401,7 @@
assert(_type == 11)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.port = util.unpack_port_no(reader)
reader.skip(6)
obj.queue_id = reader.read("!L")[0]
@@ -466,7 +465,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 8992)
obj.subtype = reader.read("!H")[0]
@@ -516,7 +515,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 8992)
_subtype = reader.read("!H")[0]
@@ -570,7 +569,7 @@
assert(_type == 0)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.port = util.unpack_port_no(reader)
obj.max_len = reader.read("!H")[0]
return obj
@@ -623,7 +622,7 @@
assert(_type == 5)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.dl_addr = list(reader.read('!6B'))
reader.skip(6)
return obj
@@ -672,7 +671,7 @@
assert(_type == 4)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.dl_addr = list(reader.read('!6B'))
reader.skip(6)
return obj
@@ -720,7 +719,7 @@
assert(_type == 7)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.nw_addr = reader.read("!L")[0]
return obj
@@ -767,7 +766,7 @@
assert(_type == 6)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.nw_addr = reader.read("!L")[0]
return obj
@@ -815,7 +814,7 @@
assert(_type == 8)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.nw_tos = reader.read("!B")[0]
reader.skip(3)
return obj
@@ -864,7 +863,7 @@
assert(_type == 10)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.tp_port = reader.read("!H")[0]
reader.skip(2)
return obj
@@ -913,7 +912,7 @@
assert(_type == 9)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.tp_port = reader.read("!H")[0]
reader.skip(2)
return obj
@@ -962,7 +961,7 @@
assert(_type == 2)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.vlan_pcp = reader.read("!B")[0]
reader.skip(3)
return obj
@@ -1011,7 +1010,7 @@
assert(_type == 1)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.vlan_vid = reader.read("!H")[0]
reader.skip(2)
return obj
@@ -1055,7 +1054,7 @@
assert(_type == 3)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
diff --git a/src/python/loxi/of10/common.py b/src/python/loxi/of10/common.py
index fb835a7..98eb158 100644
--- a/src/python/loxi/of10/common.py
+++ b/src/python/loxi/of10/common.py
@@ -8,13 +8,12 @@
import struct
import loxi
-import const
-import action
-import message
-import common
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of10']
+
class bsn_interface(loxi.OFObject):
def __init__(self, hw_addr=None, name=None, ipv4_addr=None, ipv4_netmask=None):
@@ -113,7 +112,7 @@
obj.type = reader.read("!H")[0]
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
return obj
def __eq__(self, other):
@@ -212,7 +211,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.flags = reader.read("!L")[0]
obj.port_no = util.unpack_port_no(reader)
obj.loopback_port_no = util.unpack_port_no(reader)
@@ -340,7 +339,7 @@
assert(_type == 0)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.port_no = reader.read("!L")[0]
obj.ingress_tpid = reader.read("!H")[0]
obj.ingress_vlan_id = reader.read("!H")[0]
@@ -396,7 +395,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if duration_sec != None:
self.duration_sec = duration_sec
else:
@@ -460,10 +459,10 @@
obj = flow_stats_entry()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
obj.table_id = reader.read("!B")[0]
reader.skip(1)
- obj.match = common.match.unpack(reader)
+ obj.match = ofp.match.unpack(reader)
obj.duration_sec = reader.read("!L")[0]
obj.duration_nsec = reader.read("!L")[0]
obj.priority = reader.read("!H")[0]
@@ -473,7 +472,7 @@
obj.cookie = reader.read("!Q")[0]
obj.packet_count = reader.read("!Q")[0]
obj.byte_count = reader.read("!Q")[0]
- obj.actions = loxi.generic_util.unpack_list(reader, action.action.unpack)
+ obj.actions = loxi.generic_util.unpack_list(reader, ofp.action.action.unpack)
return obj
def __eq__(self, other):
@@ -721,9 +720,9 @@
obj.queue_id = reader.read("!L")[0]
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (4 + 2))
+ reader = orig_reader.slice(_len, 6)
reader.skip(2)
- obj.properties = loxi.generic_util.unpack_list(reader, common.queue_prop.unpack)
+ obj.properties = loxi.generic_util.unpack_list(reader, ofp.common.queue_prop.unpack)
return obj
def __eq__(self, other):
@@ -1051,7 +1050,7 @@
obj.type = reader.read("!H")[0]
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -1097,7 +1096,7 @@
assert(_type == 1)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
obj.rate = reader.read("!H")[0]
reader.skip(6)
diff --git a/src/python/loxi/of10/message.py b/src/python/loxi/of10/message.py
index 24b4e94..039891c 100644
--- a/src/python/loxi/of10/message.py
+++ b/src/python/loxi/of10/message.py
@@ -8,13 +8,12 @@
import struct
import loxi
-import const
-import action
-import message
-import common
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of10']
+
class message(loxi.OFObject):
subtypes = {}
@@ -54,7 +53,7 @@
obj.type = reader.read("!B")[0]
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
return obj
@@ -125,7 +124,7 @@
assert(_type == 17)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.stats_type = reader.read("!H")[0]
obj.flags = reader.read("!H")[0]
@@ -209,7 +208,7 @@
assert(_type == 17)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 2)
@@ -303,7 +302,7 @@
assert(_type == 16)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.stats_type = reader.read("!H")[0]
obj.flags = reader.read("!H")[0]
@@ -351,7 +350,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if table_id != None:
self.table_id = table_id
else:
@@ -387,12 +386,12 @@
assert(_type == 16)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 2)
obj.flags = reader.read("!H")[0]
- obj.match = common.match.unpack(reader)
+ obj.match = ofp.match.unpack(reader)
obj.table_id = reader.read("!B")[0]
reader.skip(1)
obj.out_port = util.unpack_port_no(reader)
@@ -476,7 +475,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.err_type = reader.read("!H")[0]
return obj
@@ -544,7 +543,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 2)
@@ -622,7 +621,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 1)
@@ -688,7 +687,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
return obj
@@ -742,7 +741,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
return obj
@@ -813,7 +812,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.experimenter = reader.read("!L")[0]
obj.data = str(reader.read_all())
@@ -888,7 +887,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -955,7 +954,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1022,7 +1021,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1089,7 +1088,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1156,7 +1155,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1228,7 +1227,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1305,7 +1304,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1377,13 +1376,13 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 10)
- obj.interfaces = loxi.generic_util.unpack_list(reader, common.bsn_interface.unpack)
+ obj.interfaces = loxi.generic_util.unpack_list(reader, ofp.common.bsn_interface.unpack)
return obj
def __eq__(self, other):
@@ -1444,7 +1443,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1517,7 +1516,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1596,7 +1595,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1676,7 +1675,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1750,7 +1749,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1818,7 +1817,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1892,7 +1891,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1972,7 +1971,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -2046,7 +2045,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -2123,7 +2122,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -2221,7 +2220,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -2314,7 +2313,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -2401,7 +2400,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -2499,7 +2498,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -2593,7 +2592,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -2682,7 +2681,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -2772,7 +2771,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -2852,7 +2851,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -2925,7 +2924,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -3018,7 +3017,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -3116,7 +3115,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -3193,7 +3192,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -3265,7 +3264,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -3352,7 +3351,7 @@
assert(_type == 17)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -3442,7 +3441,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -3532,7 +3531,7 @@
assert(_type == 16)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -3622,7 +3621,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -3702,7 +3701,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -3754,7 +3753,7 @@
if vport != None:
self.vport = vport
else:
- self.vport = common.bsn_vport()
+ self.vport = ofp.bsn_vport()
return
def pack(self):
@@ -3779,13 +3778,13 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 15)
- obj.vport = common.bsn_vport.unpack(reader)
+ obj.vport = ofp.bsn_vport.unpack(reader)
return obj
def __eq__(self, other):
@@ -3851,7 +3850,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -3923,7 +3922,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -4018,7 +4017,7 @@
assert(_type == 17)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 0)
@@ -4111,7 +4110,7 @@
assert(_type == 16)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 0)
@@ -4177,7 +4176,7 @@
assert(_type == 3)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.data = str(reader.read_all())
return obj
@@ -4241,7 +4240,7 @@
assert(_type == 2)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.data = str(reader.read_all())
return obj
@@ -4331,7 +4330,7 @@
assert(_type == 6)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.datapath_id = reader.read("!Q")[0]
obj.n_buffers = reader.read("!L")[0]
@@ -4339,7 +4338,7 @@
reader.skip(3)
obj.capabilities = reader.read("!L")[0]
obj.actions = reader.read("!L")[0]
- obj.ports = loxi.generic_util.unpack_list(reader, common.port_desc.unpack)
+ obj.ports = loxi.generic_util.unpack_list(reader, ofp.common.port_desc.unpack)
return obj
def __eq__(self, other):
@@ -4416,7 +4415,7 @@
assert(_type == 5)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
return obj
@@ -4454,7 +4453,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if cookie != None:
self.cookie = cookie
else:
@@ -4527,9 +4526,9 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
- obj.match = common.match.unpack(reader)
+ obj.match = ofp.match.unpack(reader)
obj.cookie = reader.read("!Q")[0]
obj._command = util.unpack_fm_cmd(reader)
obj.idle_timeout = reader.read("!H")[0]
@@ -4538,7 +4537,7 @@
obj.buffer_id = reader.read("!L")[0]
obj.out_port = util.unpack_port_no(reader)
obj.flags = reader.read("!H")[0]
- obj.actions = loxi.generic_util.unpack_list(reader, action.action.unpack)
+ obj.actions = loxi.generic_util.unpack_list(reader, ofp.action.action.unpack)
return obj
def __eq__(self, other):
@@ -4611,7 +4610,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if cookie != None:
self.cookie = cookie
else:
@@ -4675,9 +4674,9 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
- obj.match = common.match.unpack(reader)
+ obj.match = ofp.match.unpack(reader)
obj.cookie = reader.read("!Q")[0]
__command = util.unpack_fm_cmd(reader)
assert(__command == 0)
@@ -4687,7 +4686,7 @@
obj.buffer_id = reader.read("!L")[0]
obj.out_port = util.unpack_port_no(reader)
obj.flags = reader.read("!H")[0]
- obj.actions = loxi.generic_util.unpack_list(reader, action.action.unpack)
+ obj.actions = loxi.generic_util.unpack_list(reader, ofp.action.action.unpack)
return obj
def __eq__(self, other):
@@ -4759,7 +4758,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if cookie != None:
self.cookie = cookie
else:
@@ -4823,9 +4822,9 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
- obj.match = common.match.unpack(reader)
+ obj.match = ofp.match.unpack(reader)
obj.cookie = reader.read("!Q")[0]
__command = util.unpack_fm_cmd(reader)
assert(__command == 3)
@@ -4835,7 +4834,7 @@
obj.buffer_id = reader.read("!L")[0]
obj.out_port = util.unpack_port_no(reader)
obj.flags = reader.read("!H")[0]
- obj.actions = loxi.generic_util.unpack_list(reader, action.action.unpack)
+ obj.actions = loxi.generic_util.unpack_list(reader, ofp.action.action.unpack)
return obj
def __eq__(self, other):
@@ -4907,7 +4906,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if cookie != None:
self.cookie = cookie
else:
@@ -4971,9 +4970,9 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
- obj.match = common.match.unpack(reader)
+ obj.match = ofp.match.unpack(reader)
obj.cookie = reader.read("!Q")[0]
__command = util.unpack_fm_cmd(reader)
assert(__command == 4)
@@ -4983,7 +4982,7 @@
obj.buffer_id = reader.read("!L")[0]
obj.out_port = util.unpack_port_no(reader)
obj.flags = reader.read("!H")[0]
- obj.actions = loxi.generic_util.unpack_list(reader, action.action.unpack)
+ obj.actions = loxi.generic_util.unpack_list(reader, ofp.action.action.unpack)
return obj
def __eq__(self, other):
@@ -5084,7 +5083,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 3)
@@ -5133,7 +5132,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if cookie != None:
self.cookie = cookie
else:
@@ -5197,9 +5196,9 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
- obj.match = common.match.unpack(reader)
+ obj.match = ofp.match.unpack(reader)
obj.cookie = reader.read("!Q")[0]
__command = util.unpack_fm_cmd(reader)
assert(__command == 1)
@@ -5209,7 +5208,7 @@
obj.buffer_id = reader.read("!L")[0]
obj.out_port = util.unpack_port_no(reader)
obj.flags = reader.read("!H")[0]
- obj.actions = loxi.generic_util.unpack_list(reader, action.action.unpack)
+ obj.actions = loxi.generic_util.unpack_list(reader, ofp.action.action.unpack)
return obj
def __eq__(self, other):
@@ -5281,7 +5280,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if cookie != None:
self.cookie = cookie
else:
@@ -5345,9 +5344,9 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
- obj.match = common.match.unpack(reader)
+ obj.match = ofp.match.unpack(reader)
obj.cookie = reader.read("!Q")[0]
__command = util.unpack_fm_cmd(reader)
assert(__command == 2)
@@ -5357,7 +5356,7 @@
obj.buffer_id = reader.read("!L")[0]
obj.out_port = util.unpack_port_no(reader)
obj.flags = reader.read("!H")[0]
- obj.actions = loxi.generic_util.unpack_list(reader, action.action.unpack)
+ obj.actions = loxi.generic_util.unpack_list(reader, ofp.action.action.unpack)
return obj
def __eq__(self, other):
@@ -5428,7 +5427,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if cookie != None:
self.cookie = cookie
else:
@@ -5493,9 +5492,9 @@
assert(_type == 11)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
- obj.match = common.match.unpack(reader)
+ obj.match = ofp.match.unpack(reader)
obj.cookie = reader.read("!Q")[0]
obj.priority = reader.read("!H")[0]
obj.reason = reader.read("!B")[0]
@@ -5606,12 +5605,12 @@
assert(_type == 17)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 1)
obj.flags = reader.read("!H")[0]
- obj.entries = loxi.generic_util.unpack_list(reader, common.flow_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.flow_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -5659,7 +5658,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if table_id != None:
self.table_id = table_id
else:
@@ -5695,12 +5694,12 @@
assert(_type == 16)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 1)
obj.flags = reader.read("!H")[0]
- obj.match = common.match.unpack(reader)
+ obj.match = ofp.match.unpack(reader)
obj.table_id = reader.read("!B")[0]
reader.skip(1)
obj.out_port = util.unpack_port_no(reader)
@@ -5782,7 +5781,7 @@
assert(_type == 8)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
obj.miss_send_len = reader.read("!H")[0]
@@ -5846,7 +5845,7 @@
assert(_type == 7)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
return obj
@@ -5900,7 +5899,7 @@
assert(_type == 0)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
return obj
@@ -5966,7 +5965,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 0)
@@ -6046,7 +6045,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 8992)
@@ -6113,7 +6112,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 8992)
@@ -6185,7 +6184,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 8992)
@@ -6274,7 +6273,7 @@
assert(_type == 10)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.buffer_id = reader.read("!L")[0]
obj.total_len = reader.read("!H")[0]
@@ -6376,12 +6375,12 @@
assert(_type == 13)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.buffer_id = reader.read("!L")[0]
obj.in_port = util.unpack_port_no(reader)
_actions_len = reader.read("!H")[0]
- obj.actions = loxi.generic_util.unpack_list(reader.slice(_actions_len), action.action.unpack)
+ obj.actions = loxi.generic_util.unpack_list(reader.slice(_actions_len), ofp.action.action.unpack)
obj.data = str(reader.read_all())
return obj
@@ -6477,7 +6476,7 @@
assert(_type == 15)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.port_no = util.unpack_port_no(reader)
obj.hw_addr = list(reader.read('!6B'))
@@ -6569,7 +6568,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 4)
@@ -6647,12 +6646,12 @@
assert(_type == 17)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 4)
obj.flags = reader.read("!H")[0]
- obj.entries = loxi.generic_util.unpack_list(reader, common.port_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.port_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -6726,7 +6725,7 @@
assert(_type == 16)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 4)
@@ -6779,7 +6778,7 @@
if desc != None:
self.desc = desc
else:
- self.desc = common.port_desc()
+ self.desc = ofp.port_desc()
return
def pack(self):
@@ -6804,11 +6803,11 @@
assert(_type == 12)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.reason = reader.read("!B")[0]
reader.skip(7)
- obj.desc = common.port_desc.unpack(reader)
+ obj.desc = ofp.port_desc.unpack(reader)
return obj
def __eq__(self, other):
@@ -6880,11 +6879,11 @@
assert(_type == 21)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.port = util.unpack_port_no(reader)
reader.skip(6)
- obj.queues = loxi.generic_util.unpack_list(reader, common.packet_queue.unpack)
+ obj.queues = loxi.generic_util.unpack_list(reader, ofp.common.packet_queue.unpack)
return obj
def __eq__(self, other):
@@ -6951,7 +6950,7 @@
assert(_type == 20)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.port = util.unpack_port_no(reader)
reader.skip(2)
@@ -7023,7 +7022,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 5)
@@ -7101,12 +7100,12 @@
assert(_type == 17)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 5)
obj.flags = reader.read("!H")[0]
- obj.entries = loxi.generic_util.unpack_list(reader, common.queue_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.queue_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -7185,7 +7184,7 @@
assert(_type == 16)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 5)
@@ -7267,7 +7266,7 @@
assert(_type == 9)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
obj.miss_send_len = reader.read("!H")[0]
@@ -7342,7 +7341,7 @@
assert(_type == 22)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.table_id = reader.read("!B")[0]
reader.skip(3)
@@ -7419,12 +7418,12 @@
assert(_type == 17)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 3)
obj.flags = reader.read("!H")[0]
- obj.entries = loxi.generic_util.unpack_list(reader, common.table_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.table_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -7492,7 +7491,7 @@
assert(_type == 16)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 3)
@@ -7531,8 +7530,8 @@
def parse_message(buf):
msg_ver, msg_type, msg_len, msg_xid = parse_header(buf)
- if msg_ver != const.OFP_VERSION and msg_type != const.OFPT_HELLO:
- raise loxi.ProtocolError("wrong OpenFlow version (expected %d, got %d)" % (const.OFP_VERSION, msg_ver))
+ if msg_ver != ofp.OFP_VERSION and msg_type != ofp.OFPT_HELLO:
+ raise loxi.ProtocolError("wrong OpenFlow version (expected %d, got %d)" % (ofp.OFP_VERSION, msg_ver))
if len(buf) != msg_len:
raise loxi.ProtocolError("incorrect message size")
return message.unpack(loxi.generic_util.OFReader(buf))
diff --git a/src/python/loxi/of10/util.py b/src/python/loxi/of10/util.py
index 4842a52..7af98be 100644
--- a/src/python/loxi/of10/util.py
+++ b/src/python/loxi/of10/util.py
@@ -96,6 +96,28 @@
x >>= 1
return value
+def pack_bitmap_512(value):
+ words = [0] * 8
+ for v in value:
+ assert v < 512
+ words[7-v/64] |= 1 << (v % 64)
+ return struct.pack("!8Q", *words)
+
+def unpack_bitmap_512(reader):
+ words = reader.read("!8Q")
+ x = 0l
+ for word in words:
+ x <<= 64
+ x |= word
+ i = 0
+ value = set()
+ while x != 0:
+ if x & 1 == 1:
+ value.add(i)
+ i += 1
+ x >>= 1
+ return value
+
def pack_checksum_128(value):
return struct.pack("!QQ", (value >> 64) & MASK64, value & MASK64)
diff --git a/src/python/loxi/of11/action.py b/src/python/loxi/of11/action.py
index bd82ddf..7cf5acb 100644
--- a/src/python/loxi/of11/action.py
+++ b/src/python/loxi/of11/action.py
@@ -8,14 +8,12 @@
import struct
import loxi
-import const
-import action
-import message
-import instruction
-import common
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of11']
+
class action(loxi.OFObject):
subtypes = {}
@@ -47,7 +45,7 @@
obj.type = reader.read("!H")[0]
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -103,7 +101,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.experimenter = reader.read("!L")[0]
obj.data = str(reader.read_all())
return obj
@@ -162,7 +160,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
obj.subtype = reader.read("!L")[0]
@@ -214,7 +212,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -280,7 +278,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -346,7 +344,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -393,7 +391,7 @@
assert(_type == 12)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -433,7 +431,7 @@
assert(_type == 11)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -473,7 +471,7 @@
assert(_type == 16)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -513,7 +511,7 @@
assert(_type == 24)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -557,7 +555,7 @@
assert(_type == 22)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.group_id = reader.read("!L")[0]
return obj
@@ -615,7 +613,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 8992)
obj.subtype = reader.read("!H")[0]
@@ -665,7 +663,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 8992)
_subtype = reader.read("!H")[0]
@@ -720,7 +718,7 @@
assert(_type == 0)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.port = util.unpack_port_no(reader)
obj.max_len = reader.read("!H")[0]
reader.skip(6)
@@ -774,7 +772,7 @@
assert(_type == 20)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.ethertype = reader.read("!H")[0]
reader.skip(2)
return obj
@@ -818,7 +816,7 @@
assert(_type == 18)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -863,7 +861,7 @@
assert(_type == 19)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.ethertype = reader.read("!H")[0]
reader.skip(2)
return obj
@@ -912,7 +910,7 @@
assert(_type == 17)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.ethertype = reader.read("!H")[0]
reader.skip(2)
return obj
@@ -961,7 +959,7 @@
assert(_type == 4)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.dl_addr = list(reader.read('!6B'))
reader.skip(6)
return obj
@@ -1010,7 +1008,7 @@
assert(_type == 3)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.dl_addr = list(reader.read('!6B'))
reader.skip(6)
return obj
@@ -1058,7 +1056,7 @@
assert(_type == 13)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.mpls_label = reader.read("!L")[0]
return obj
@@ -1106,7 +1104,7 @@
assert(_type == 14)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.mpls_tc = reader.read("!B")[0]
reader.skip(3)
return obj
@@ -1155,7 +1153,7 @@
assert(_type == 15)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.mpls_ttl = reader.read("!B")[0]
reader.skip(3)
return obj
@@ -1203,7 +1201,7 @@
assert(_type == 6)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.nw_addr = reader.read("!L")[0]
return obj
@@ -1251,7 +1249,7 @@
assert(_type == 8)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.nw_ecn = reader.read("!B")[0]
reader.skip(3)
return obj
@@ -1299,7 +1297,7 @@
assert(_type == 5)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.nw_addr = reader.read("!L")[0]
return obj
@@ -1347,7 +1345,7 @@
assert(_type == 7)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.nw_tos = reader.read("!B")[0]
reader.skip(3)
return obj
@@ -1396,7 +1394,7 @@
assert(_type == 23)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.nw_ttl = reader.read("!B")[0]
reader.skip(3)
return obj
@@ -1444,7 +1442,7 @@
assert(_type == 21)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.queue_id = reader.read("!L")[0]
return obj
@@ -1492,7 +1490,7 @@
assert(_type == 10)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.tp_port = reader.read("!H")[0]
reader.skip(2)
return obj
@@ -1541,7 +1539,7 @@
assert(_type == 9)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.tp_port = reader.read("!H")[0]
reader.skip(2)
return obj
@@ -1590,7 +1588,7 @@
assert(_type == 2)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.vlan_pcp = reader.read("!B")[0]
reader.skip(3)
return obj
@@ -1639,7 +1637,7 @@
assert(_type == 1)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.vlan_vid = reader.read("!H")[0]
reader.skip(2)
return obj
diff --git a/src/python/loxi/of11/common.py b/src/python/loxi/of11/common.py
index e379ce0..780e4f0 100644
--- a/src/python/loxi/of11/common.py
+++ b/src/python/loxi/of11/common.py
@@ -8,14 +8,12 @@
import struct
import loxi
-import const
-import action
-import message
-import instruction
-import common
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of11']
+
class bsn_interface(loxi.OFObject):
def __init__(self, hw_addr=None, name=None, ipv4_addr=None, ipv4_netmask=None):
@@ -114,7 +112,7 @@
obj.type = reader.read("!H")[0]
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
return obj
def __eq__(self, other):
@@ -213,7 +211,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.flags = reader.read("!L")[0]
obj.port_no = util.unpack_port_no(reader)
obj.loopback_port_no = util.unpack_port_no(reader)
@@ -341,7 +339,7 @@
assert(_type == 0)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.port_no = reader.read("!L")[0]
obj.ingress_tpid = reader.read("!H")[0]
obj.ingress_vlan_id = reader.read("!H")[0]
@@ -425,12 +423,12 @@
obj = bucket()
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (0 + 2))
+ reader = orig_reader.slice(_len, 2)
obj.weight = reader.read("!H")[0]
obj.watch_port = util.unpack_port_no(reader)
obj.watch_group = reader.read("!L")[0]
reader.skip(4)
- obj.actions = loxi.generic_util.unpack_list(reader, action.action.unpack)
+ obj.actions = loxi.generic_util.unpack_list(reader, ofp.action.action.unpack)
return obj
def __eq__(self, other):
@@ -549,7 +547,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if instructions != None:
self.instructions = instructions
else:
@@ -581,7 +579,7 @@
obj = flow_stats_entry()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
obj.table_id = reader.read("!B")[0]
reader.skip(1)
obj.duration_sec = reader.read("!L")[0]
@@ -593,8 +591,8 @@
obj.cookie = reader.read("!Q")[0]
obj.packet_count = reader.read("!Q")[0]
obj.byte_count = reader.read("!Q")[0]
- obj.match = common.match.unpack(reader)
- obj.instructions = loxi.generic_util.unpack_list(reader, instruction.instruction.unpack)
+ obj.match = ofp.match.unpack(reader)
+ obj.instructions = loxi.generic_util.unpack_list(reader, ofp.instruction.instruction.unpack)
return obj
def __eq__(self, other):
@@ -686,11 +684,11 @@
obj = group_desc_stats_entry()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
obj.group_type = reader.read("!B")[0]
reader.skip(1)
obj.group_id = reader.read("!L")[0]
- obj.buckets = loxi.generic_util.unpack_list(reader, common.bucket.unpack)
+ obj.buckets = loxi.generic_util.unpack_list(reader, ofp.common.bucket.unpack)
return obj
def __eq__(self, other):
@@ -761,14 +759,14 @@
obj = group_stats_entry()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
reader.skip(2)
obj.group_id = reader.read("!L")[0]
obj.ref_count = reader.read("!L")[0]
reader.skip(4)
obj.packet_count = reader.read("!Q")[0]
obj.byte_count = reader.read("!Q")[0]
- obj.bucket_stats = loxi.generic_util.unpack_list(reader, common.bucket_counter.unpack)
+ obj.bucket_stats = loxi.generic_util.unpack_list(reader, ofp.common.bucket_counter.unpack)
return obj
def __eq__(self, other):
@@ -931,7 +929,7 @@
assert(_type == 0)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.in_port = util.unpack_port_no(reader)
obj.wildcards = util.unpack_wc_bmap(reader)
obj.eth_src = list(reader.read('!6B'))
@@ -1082,9 +1080,9 @@
obj.queue_id = reader.read("!L")[0]
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (4 + 2))
+ reader = orig_reader.slice(_len, 6)
reader.skip(2)
- obj.properties = loxi.generic_util.unpack_list(reader, common.queue_prop.unpack)
+ obj.properties = loxi.generic_util.unpack_list(reader, ofp.common.queue_prop.unpack)
return obj
def __eq__(self, other):
@@ -1436,7 +1434,7 @@
obj.type = reader.read("!H")[0]
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -1482,7 +1480,7 @@
assert(_type == 1)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
obj.rate = reader.read("!H")[0]
reader.skip(6)
diff --git a/src/python/loxi/of11/instruction.py b/src/python/loxi/of11/instruction.py
index e4d2fb0..8fec8ae 100644
--- a/src/python/loxi/of11/instruction.py
+++ b/src/python/loxi/of11/instruction.py
@@ -8,14 +8,12 @@
import struct
import loxi
-import const
-import action
-import message
-import instruction
-import common
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of11']
+
class instruction(loxi.OFObject):
subtypes = {}
@@ -47,7 +45,7 @@
obj.type = reader.read("!H")[0]
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -92,9 +90,9 @@
assert(_type == 4)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
- obj.actions = loxi.generic_util.unpack_list(reader, action.action.unpack)
+ obj.actions = loxi.generic_util.unpack_list(reader, ofp.action.action.unpack)
return obj
def __eq__(self, other):
@@ -136,7 +134,7 @@
assert(_type == 5)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -192,7 +190,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.experimenter = reader.read("!L")[0]
obj.data = str(reader.read_all())
return obj
@@ -242,7 +240,7 @@
assert(_type == 1)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.table_id = reader.read("!B")[0]
reader.skip(3)
return obj
@@ -291,9 +289,9 @@
assert(_type == 3)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
- obj.actions = loxi.generic_util.unpack_list(reader, action.action.unpack)
+ obj.actions = loxi.generic_util.unpack_list(reader, ofp.action.action.unpack)
return obj
def __eq__(self, other):
@@ -345,7 +343,7 @@
assert(_type == 2)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
obj.metadata = reader.read("!Q")[0]
obj.metadata_mask = reader.read("!Q")[0]
diff --git a/src/python/loxi/of11/message.py b/src/python/loxi/of11/message.py
index c9f05a1..f9586f7 100644
--- a/src/python/loxi/of11/message.py
+++ b/src/python/loxi/of11/message.py
@@ -8,14 +8,12 @@
import struct
import loxi
-import const
-import action
-import message
-import instruction
-import common
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of11']
+
class message(loxi.OFObject):
subtypes = {}
@@ -55,7 +53,7 @@
obj.type = reader.read("!B")[0]
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
return obj
@@ -127,7 +125,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.stats_type = reader.read("!H")[0]
obj.flags = reader.read("!H")[0]
@@ -213,7 +211,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 2)
@@ -309,7 +307,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.stats_type = reader.read("!H")[0]
obj.flags = reader.read("!H")[0]
@@ -378,7 +376,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
return
def pack(self):
@@ -411,7 +409,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 2)
@@ -424,7 +422,7 @@
reader.skip(4)
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
- obj.match = common.match.unpack(reader)
+ obj.match = ofp.match.unpack(reader)
return obj
def __eq__(self, other):
@@ -517,7 +515,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.err_type = reader.read("!H")[0]
return obj
@@ -585,7 +583,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 2)
@@ -663,7 +661,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 3)
@@ -741,7 +739,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 4)
@@ -819,7 +817,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 1)
@@ -885,7 +883,7 @@
assert(_type == 21)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
return obj
@@ -939,7 +937,7 @@
assert(_type == 20)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
return obj
@@ -1010,7 +1008,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.experimenter = reader.read("!L")[0]
obj.data = str(reader.read_all())
@@ -1085,7 +1083,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1152,7 +1150,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1219,7 +1217,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1286,7 +1284,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1353,7 +1351,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1425,7 +1423,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1502,7 +1500,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1574,13 +1572,13 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 10)
- obj.interfaces = loxi.generic_util.unpack_list(reader, common.bsn_interface.unpack)
+ obj.interfaces = loxi.generic_util.unpack_list(reader, ofp.common.bsn_interface.unpack)
return obj
def __eq__(self, other):
@@ -1641,7 +1639,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1709,7 +1707,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1783,7 +1781,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1866,7 +1864,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1964,7 +1962,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -2057,7 +2055,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -2144,7 +2142,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -2242,7 +2240,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -2331,7 +2329,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -2404,7 +2402,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -2497,7 +2495,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -2607,7 +2605,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -2699,7 +2697,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -2791,7 +2789,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -2883,7 +2881,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -2963,7 +2961,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -3015,7 +3013,7 @@
if vport != None:
self.vport = vport
else:
- self.vport = common.bsn_vport()
+ self.vport = ofp.bsn_vport()
return
def pack(self):
@@ -3040,13 +3038,13 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 15)
- obj.vport = common.bsn_vport.unpack(reader)
+ obj.vport = ofp.bsn_vport.unpack(reader)
return obj
def __eq__(self, other):
@@ -3112,7 +3110,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -3184,7 +3182,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -3280,7 +3278,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 0)
@@ -3375,7 +3373,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 0)
@@ -3442,7 +3440,7 @@
assert(_type == 3)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.data = str(reader.read_all())
return obj
@@ -3506,7 +3504,7 @@
assert(_type == 2)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.data = str(reader.read_all())
return obj
@@ -3596,7 +3594,7 @@
assert(_type == 6)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.datapath_id = reader.read("!Q")[0]
obj.n_buffers = reader.read("!L")[0]
@@ -3604,7 +3602,7 @@
reader.skip(3)
obj.capabilities = reader.read("!L")[0]
obj.reserved = reader.read("!L")[0]
- obj.ports = loxi.generic_util.unpack_list(reader, common.port_desc.unpack)
+ obj.ports = loxi.generic_util.unpack_list(reader, ofp.common.port_desc.unpack)
return obj
def __eq__(self, other):
@@ -3681,7 +3679,7 @@
assert(_type == 5)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
return obj
@@ -3763,7 +3761,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if instructions != None:
self.instructions = instructions
else:
@@ -3808,7 +3806,7 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
@@ -3822,8 +3820,8 @@
obj.out_group = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
reader.skip(2)
- obj.match = common.match.unpack(reader)
- obj.instructions = loxi.generic_util.unpack_list(reader, instruction.instruction.unpack)
+ obj.match = ofp.match.unpack(reader)
+ obj.instructions = loxi.generic_util.unpack_list(reader, ofp.instruction.instruction.unpack)
return obj
def __eq__(self, other):
@@ -3948,7 +3946,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if instructions != None:
self.instructions = instructions
else:
@@ -3988,7 +3986,7 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
@@ -4003,8 +4001,8 @@
obj.out_group = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
reader.skip(2)
- obj.match = common.match.unpack(reader)
- obj.instructions = loxi.generic_util.unpack_list(reader, instruction.instruction.unpack)
+ obj.match = ofp.match.unpack(reader)
+ obj.instructions = loxi.generic_util.unpack_list(reader, ofp.instruction.instruction.unpack)
return obj
def __eq__(self, other):
@@ -4128,7 +4126,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if instructions != None:
self.instructions = instructions
else:
@@ -4168,7 +4166,7 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
@@ -4183,8 +4181,8 @@
obj.out_group = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
reader.skip(2)
- obj.match = common.match.unpack(reader)
- obj.instructions = loxi.generic_util.unpack_list(reader, instruction.instruction.unpack)
+ obj.match = ofp.match.unpack(reader)
+ obj.instructions = loxi.generic_util.unpack_list(reader, ofp.instruction.instruction.unpack)
return obj
def __eq__(self, other):
@@ -4308,7 +4306,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if instructions != None:
self.instructions = instructions
else:
@@ -4348,7 +4346,7 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
@@ -4363,8 +4361,8 @@
obj.out_group = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
reader.skip(2)
- obj.match = common.match.unpack(reader)
- obj.instructions = loxi.generic_util.unpack_list(reader, instruction.instruction.unpack)
+ obj.match = ofp.match.unpack(reader)
+ obj.instructions = loxi.generic_util.unpack_list(reader, ofp.instruction.instruction.unpack)
return obj
def __eq__(self, other):
@@ -4477,7 +4475,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 5)
@@ -4566,7 +4564,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if instructions != None:
self.instructions = instructions
else:
@@ -4606,7 +4604,7 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
@@ -4621,8 +4619,8 @@
obj.out_group = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
reader.skip(2)
- obj.match = common.match.unpack(reader)
- obj.instructions = loxi.generic_util.unpack_list(reader, instruction.instruction.unpack)
+ obj.match = ofp.match.unpack(reader)
+ obj.instructions = loxi.generic_util.unpack_list(reader, ofp.instruction.instruction.unpack)
return obj
def __eq__(self, other):
@@ -4746,7 +4744,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if instructions != None:
self.instructions = instructions
else:
@@ -4786,7 +4784,7 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
@@ -4801,8 +4799,8 @@
obj.out_group = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
reader.skip(2)
- obj.match = common.match.unpack(reader)
- obj.instructions = loxi.generic_util.unpack_list(reader, instruction.instruction.unpack)
+ obj.match = ofp.match.unpack(reader)
+ obj.instructions = loxi.generic_util.unpack_list(reader, ofp.instruction.instruction.unpack)
return obj
def __eq__(self, other):
@@ -4921,7 +4919,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
return
def pack(self):
@@ -4954,7 +4952,7 @@
assert(_type == 11)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.cookie = reader.read("!Q")[0]
obj.priority = reader.read("!H")[0]
@@ -4966,7 +4964,7 @@
reader.skip(2)
obj.packet_count = reader.read("!Q")[0]
obj.byte_count = reader.read("!Q")[0]
- obj.match = common.match.unpack(reader)
+ obj.match = ofp.match.unpack(reader)
return obj
def __eq__(self, other):
@@ -5072,13 +5070,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 1)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.flow_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.flow_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -5146,7 +5144,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
return
def pack(self):
@@ -5179,7 +5177,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 1)
@@ -5192,7 +5190,7 @@
reader.skip(4)
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
- obj.match = common.match.unpack(reader)
+ obj.match = ofp.match.unpack(reader)
return obj
def __eq__(self, other):
@@ -5283,7 +5281,7 @@
assert(_type == 8)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
obj.miss_send_len = reader.read("!H")[0]
@@ -5347,7 +5345,7 @@
assert(_type == 7)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
return obj
@@ -5429,13 +5427,13 @@
assert(_type == 15)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.command = reader.read("!H")[0]
obj.group_type = reader.read("!B")[0]
reader.skip(1)
obj.group_id = reader.read("!L")[0]
- obj.buckets = loxi.generic_util.unpack_list(reader, common.bucket.unpack)
+ obj.buckets = loxi.generic_util.unpack_list(reader, ofp.common.bucket.unpack)
return obj
def __eq__(self, other):
@@ -5519,14 +5517,14 @@
assert(_type == 15)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_command = reader.read("!H")[0]
assert(_command == 0)
obj.group_type = reader.read("!B")[0]
reader.skip(1)
obj.group_id = reader.read("!L")[0]
- obj.buckets = loxi.generic_util.unpack_list(reader, common.bucket.unpack)
+ obj.buckets = loxi.generic_util.unpack_list(reader, ofp.common.bucket.unpack)
return obj
def __eq__(self, other):
@@ -5609,14 +5607,14 @@
assert(_type == 15)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_command = reader.read("!H")[0]
assert(_command == 2)
obj.group_type = reader.read("!B")[0]
reader.skip(1)
obj.group_id = reader.read("!L")[0]
- obj.buckets = loxi.generic_util.unpack_list(reader, common.bucket.unpack)
+ obj.buckets = loxi.generic_util.unpack_list(reader, ofp.common.bucket.unpack)
return obj
def __eq__(self, other):
@@ -5694,13 +5692,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 7)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.group_desc_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.group_desc_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -5769,7 +5767,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 7)
@@ -5843,7 +5841,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 6)
@@ -5927,14 +5925,14 @@
assert(_type == 15)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_command = reader.read("!H")[0]
assert(_command == 1)
obj.group_type = reader.read("!B")[0]
reader.skip(1)
obj.group_id = reader.read("!L")[0]
- obj.buckets = loxi.generic_util.unpack_list(reader, common.bucket.unpack)
+ obj.buckets = loxi.generic_util.unpack_list(reader, ofp.common.bucket.unpack)
return obj
def __eq__(self, other):
@@ -6012,13 +6010,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 6)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.group_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.group_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -6093,7 +6091,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 6)
@@ -6161,7 +6159,7 @@
assert(_type == 0)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
return obj
@@ -6227,7 +6225,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 0)
@@ -6307,7 +6305,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 8992)
@@ -6400,7 +6398,7 @@
assert(_type == 10)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.buffer_id = reader.read("!L")[0]
obj.in_port = util.unpack_port_no(reader)
@@ -6512,13 +6510,13 @@
assert(_type == 13)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.buffer_id = reader.read("!L")[0]
obj.in_port = util.unpack_port_no(reader)
_actions_len = reader.read("!H")[0]
reader.skip(6)
- obj.actions = loxi.generic_util.unpack_list(reader.slice(_actions_len), action.action.unpack)
+ obj.actions = loxi.generic_util.unpack_list(reader.slice(_actions_len), ofp.action.action.unpack)
obj.data = str(reader.read_all())
return obj
@@ -6616,7 +6614,7 @@
assert(_type == 16)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.port_no = util.unpack_port_no(reader)
reader.skip(4)
@@ -6710,7 +6708,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 7)
@@ -6789,13 +6787,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 4)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.port_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.port_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -6870,7 +6868,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 4)
@@ -6924,7 +6922,7 @@
if desc != None:
self.desc = desc
else:
- self.desc = common.port_desc()
+ self.desc = ofp.port_desc()
return
def pack(self):
@@ -6949,11 +6947,11 @@
assert(_type == 12)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.reason = reader.read("!B")[0]
reader.skip(7)
- obj.desc = common.port_desc.unpack(reader)
+ obj.desc = ofp.port_desc.unpack(reader)
return obj
def __eq__(self, other):
@@ -7025,11 +7023,11 @@
assert(_type == 23)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.port = util.unpack_port_no(reader)
reader.skip(4)
- obj.queues = loxi.generic_util.unpack_list(reader, common.packet_queue.unpack)
+ obj.queues = loxi.generic_util.unpack_list(reader, ofp.common.packet_queue.unpack)
return obj
def __eq__(self, other):
@@ -7096,7 +7094,7 @@
assert(_type == 22)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.port = util.unpack_port_no(reader)
reader.skip(4)
@@ -7168,7 +7166,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 9)
@@ -7247,13 +7245,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 5)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.queue_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.queue_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -7332,7 +7330,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 5)
@@ -7414,7 +7412,7 @@
assert(_type == 9)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
obj.miss_send_len = reader.read("!H")[0]
@@ -7490,7 +7488,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 10)
@@ -7567,7 +7565,7 @@
assert(_type == 17)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.table_id = reader.read("!B")[0]
reader.skip(3)
@@ -7644,7 +7642,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 8)
@@ -7723,13 +7721,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 3)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.table_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.table_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -7798,7 +7796,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 3)
@@ -7838,8 +7836,8 @@
def parse_message(buf):
msg_ver, msg_type, msg_len, msg_xid = parse_header(buf)
- if msg_ver != const.OFP_VERSION and msg_type != const.OFPT_HELLO:
- raise loxi.ProtocolError("wrong OpenFlow version (expected %d, got %d)" % (const.OFP_VERSION, msg_ver))
+ if msg_ver != ofp.OFP_VERSION and msg_type != ofp.OFPT_HELLO:
+ raise loxi.ProtocolError("wrong OpenFlow version (expected %d, got %d)" % (ofp.OFP_VERSION, msg_ver))
if len(buf) != msg_len:
raise loxi.ProtocolError("incorrect message size")
return message.unpack(loxi.generic_util.OFReader(buf))
diff --git a/src/python/loxi/of11/util.py b/src/python/loxi/of11/util.py
index d5bbe74..9e57e4a 100644
--- a/src/python/loxi/of11/util.py
+++ b/src/python/loxi/of11/util.py
@@ -97,6 +97,28 @@
x >>= 1
return value
+def pack_bitmap_512(value):
+ words = [0] * 8
+ for v in value:
+ assert v < 512
+ words[7-v/64] |= 1 << (v % 64)
+ return struct.pack("!8Q", *words)
+
+def unpack_bitmap_512(reader):
+ words = reader.read("!8Q")
+ x = 0l
+ for word in words:
+ x <<= 64
+ x |= word
+ i = 0
+ value = set()
+ while x != 0:
+ if x & 1 == 1:
+ value.add(i)
+ i += 1
+ x >>= 1
+ return value
+
def pack_checksum_128(value):
return struct.pack("!QQ", (value >> 64) & MASK64, value & MASK64)
diff --git a/src/python/loxi/of12/action.py b/src/python/loxi/of12/action.py
index 5cfd754..a95aa78 100644
--- a/src/python/loxi/of12/action.py
+++ b/src/python/loxi/of12/action.py
@@ -8,15 +8,12 @@
import struct
import loxi
-import const
-import action
-import oxm
-import message
-import instruction
-import common
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of12']
+
class action(loxi.OFObject):
subtypes = {}
@@ -48,7 +45,7 @@
obj.type = reader.read("!H")[0]
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -106,7 +103,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.experimenter = reader.read("!L")[0]
obj.data = str(reader.read_all())
return obj
@@ -165,7 +162,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
obj.subtype = reader.read("!L")[0]
@@ -217,7 +214,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -283,7 +280,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -349,7 +346,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -396,7 +393,7 @@
assert(_type == 12)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -436,7 +433,7 @@
assert(_type == 11)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -476,7 +473,7 @@
assert(_type == 16)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -516,7 +513,7 @@
assert(_type == 24)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -560,7 +557,7 @@
assert(_type == 22)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.group_id = reader.read("!L")[0]
return obj
@@ -618,7 +615,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 8992)
obj.subtype = reader.read("!H")[0]
@@ -668,7 +665,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 8992)
_subtype = reader.read("!H")[0]
@@ -723,7 +720,7 @@
assert(_type == 0)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.port = util.unpack_port_no(reader)
obj.max_len = reader.read("!H")[0]
reader.skip(6)
@@ -777,7 +774,7 @@
assert(_type == 20)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.ethertype = reader.read("!H")[0]
reader.skip(2)
return obj
@@ -821,7 +818,7 @@
assert(_type == 18)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -866,7 +863,7 @@
assert(_type == 19)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.ethertype = reader.read("!H")[0]
reader.skip(2)
return obj
@@ -915,7 +912,7 @@
assert(_type == 17)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.ethertype = reader.read("!H")[0]
reader.skip(2)
return obj
@@ -965,8 +962,8 @@
assert(_type == 25)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
- obj.field = oxm.oxm.unpack(reader)
+ reader = orig_reader.slice(_len, 4)
+ obj.field = ofp.oxm.oxm.unpack(reader)
return obj
def __eq__(self, other):
@@ -1013,7 +1010,7 @@
assert(_type == 15)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.mpls_ttl = reader.read("!B")[0]
reader.skip(3)
return obj
@@ -1062,7 +1059,7 @@
assert(_type == 23)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.nw_ttl = reader.read("!B")[0]
reader.skip(3)
return obj
@@ -1110,7 +1107,7 @@
assert(_type == 21)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.queue_id = reader.read("!L")[0]
return obj
diff --git a/src/python/loxi/of12/common.py b/src/python/loxi/of12/common.py
index 4bb1449..8f167f1 100644
--- a/src/python/loxi/of12/common.py
+++ b/src/python/loxi/of12/common.py
@@ -8,15 +8,12 @@
import struct
import loxi
-import const
-import action
-import oxm
-import message
-import instruction
-import common
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of12']
+
class bsn_interface(loxi.OFObject):
def __init__(self, hw_addr=None, name=None, ipv4_addr=None, ipv4_netmask=None):
@@ -115,7 +112,7 @@
obj.type = reader.read("!H")[0]
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
return obj
def __eq__(self, other):
@@ -214,7 +211,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.flags = reader.read("!L")[0]
obj.port_no = util.unpack_port_no(reader)
obj.loopback_port_no = util.unpack_port_no(reader)
@@ -342,7 +339,7 @@
assert(_type == 0)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.port_no = reader.read("!L")[0]
obj.ingress_tpid = reader.read("!H")[0]
obj.ingress_vlan_id = reader.read("!H")[0]
@@ -426,12 +423,12 @@
obj = bucket()
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (0 + 2))
+ reader = orig_reader.slice(_len, 2)
obj.weight = reader.read("!H")[0]
obj.watch_port = util.unpack_port_no(reader)
obj.watch_group = reader.read("!L")[0]
reader.skip(4)
- obj.actions = loxi.generic_util.unpack_list(reader, action.action.unpack)
+ obj.actions = loxi.generic_util.unpack_list(reader, ofp.action.action.unpack)
return obj
def __eq__(self, other):
@@ -550,7 +547,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if instructions != None:
self.instructions = instructions
else:
@@ -582,7 +579,7 @@
obj = flow_stats_entry()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
obj.table_id = reader.read("!B")[0]
reader.skip(1)
obj.duration_sec = reader.read("!L")[0]
@@ -594,8 +591,8 @@
obj.cookie = reader.read("!Q")[0]
obj.packet_count = reader.read("!Q")[0]
obj.byte_count = reader.read("!Q")[0]
- obj.match = common.match.unpack(reader)
- obj.instructions = loxi.generic_util.unpack_list(reader, instruction.instruction.unpack)
+ obj.match = ofp.match.unpack(reader)
+ obj.instructions = loxi.generic_util.unpack_list(reader, ofp.instruction.instruction.unpack)
return obj
def __eq__(self, other):
@@ -687,11 +684,11 @@
obj = group_desc_stats_entry()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
obj.group_type = reader.read("!B")[0]
reader.skip(1)
obj.group_id = reader.read("!L")[0]
- obj.buckets = loxi.generic_util.unpack_list(reader, common.bucket.unpack)
+ obj.buckets = loxi.generic_util.unpack_list(reader, ofp.common.bucket.unpack)
return obj
def __eq__(self, other):
@@ -762,14 +759,14 @@
obj = group_stats_entry()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
reader.skip(2)
obj.group_id = reader.read("!L")[0]
obj.ref_count = reader.read("!L")[0]
reader.skip(4)
obj.packet_count = reader.read("!Q")[0]
obj.byte_count = reader.read("!Q")[0]
- obj.bucket_stats = loxi.generic_util.unpack_list(reader, common.bucket_counter.unpack)
+ obj.bucket_stats = loxi.generic_util.unpack_list(reader, ofp.common.bucket_counter.unpack)
return obj
def __eq__(self, other):
@@ -831,8 +828,8 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.oxm_list = loxi.generic_util.unpack_list(reader, oxm.oxm.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.oxm_list = loxi.generic_util.unpack_list(reader, ofp.oxm.oxm.unpack)
orig_reader.skip_align()
return obj
@@ -887,9 +884,9 @@
obj.port = util.unpack_port_no(reader)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (8 + 2))
+ reader = orig_reader.slice(_len, 10)
reader.skip(6)
- obj.properties = loxi.generic_util.unpack_list(reader, common.queue_prop.unpack)
+ obj.properties = loxi.generic_util.unpack_list(reader, ofp.common.queue_prop.unpack)
return obj
def __eq__(self, other):
@@ -1245,7 +1242,7 @@
obj.type = reader.read("!H")[0]
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -1303,7 +1300,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
obj.experimenter = reader.read("!L")[0]
reader.skip(4)
@@ -1356,7 +1353,7 @@
assert(_type == 2)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
obj.rate = reader.read("!H")[0]
reader.skip(6)
@@ -1407,7 +1404,7 @@
assert(_type == 1)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
obj.rate = reader.read("!H")[0]
reader.skip(6)
diff --git a/src/python/loxi/of12/instruction.py b/src/python/loxi/of12/instruction.py
index 06786ed..38f8670 100644
--- a/src/python/loxi/of12/instruction.py
+++ b/src/python/loxi/of12/instruction.py
@@ -8,15 +8,12 @@
import struct
import loxi
-import const
-import action
-import oxm
-import message
-import instruction
-import common
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of12']
+
class instruction(loxi.OFObject):
subtypes = {}
@@ -48,7 +45,7 @@
obj.type = reader.read("!H")[0]
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -93,9 +90,9 @@
assert(_type == 4)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
- obj.actions = loxi.generic_util.unpack_list(reader, action.action.unpack)
+ obj.actions = loxi.generic_util.unpack_list(reader, ofp.action.action.unpack)
return obj
def __eq__(self, other):
@@ -137,7 +134,7 @@
assert(_type == 5)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -193,7 +190,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.experimenter = reader.read("!L")[0]
obj.data = str(reader.read_all())
return obj
@@ -243,7 +240,7 @@
assert(_type == 1)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.table_id = reader.read("!B")[0]
reader.skip(3)
return obj
@@ -292,9 +289,9 @@
assert(_type == 3)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
- obj.actions = loxi.generic_util.unpack_list(reader, action.action.unpack)
+ obj.actions = loxi.generic_util.unpack_list(reader, ofp.action.action.unpack)
return obj
def __eq__(self, other):
@@ -346,7 +343,7 @@
assert(_type == 2)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
obj.metadata = reader.read("!Q")[0]
obj.metadata_mask = reader.read("!Q")[0]
diff --git a/src/python/loxi/of12/message.py b/src/python/loxi/of12/message.py
index ab8f30b..5c7b032 100644
--- a/src/python/loxi/of12/message.py
+++ b/src/python/loxi/of12/message.py
@@ -8,15 +8,12 @@
import struct
import loxi
-import const
-import action
-import oxm
-import message
-import instruction
-import common
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of12']
+
class message(loxi.OFObject):
subtypes = {}
@@ -56,7 +53,7 @@
obj.type = reader.read("!B")[0]
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
return obj
@@ -128,7 +125,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.stats_type = reader.read("!H")[0]
obj.flags = reader.read("!H")[0]
@@ -214,7 +211,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 2)
@@ -310,7 +307,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.stats_type = reader.read("!H")[0]
obj.flags = reader.read("!H")[0]
@@ -379,7 +376,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
return
def pack(self):
@@ -412,7 +409,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 2)
@@ -425,7 +422,7 @@
reader.skip(4)
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
- obj.match = common.match.unpack(reader)
+ obj.match = ofp.match.unpack(reader)
return obj
def __eq__(self, other):
@@ -518,7 +515,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.err_type = reader.read("!H")[0]
return obj
@@ -586,7 +583,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 2)
@@ -664,7 +661,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 3)
@@ -742,7 +739,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 4)
@@ -820,7 +817,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 1)
@@ -886,7 +883,7 @@
assert(_type == 21)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
return obj
@@ -940,7 +937,7 @@
assert(_type == 20)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
return obj
@@ -1016,7 +1013,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.experimenter = reader.read("!L")[0]
obj.subtype = reader.read("!L")[0]
@@ -1096,7 +1093,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1163,7 +1160,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1230,7 +1227,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1297,7 +1294,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1364,7 +1361,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1436,7 +1433,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1513,7 +1510,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1585,13 +1582,13 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 10)
- obj.interfaces = loxi.generic_util.unpack_list(reader, common.bsn_interface.unpack)
+ obj.interfaces = loxi.generic_util.unpack_list(reader, ofp.common.bsn_interface.unpack)
return obj
def __eq__(self, other):
@@ -1652,7 +1649,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1720,7 +1717,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1794,7 +1791,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1877,7 +1874,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1975,7 +1972,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -2068,7 +2065,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -2155,7 +2152,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -2253,7 +2250,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -2342,7 +2339,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -2415,7 +2412,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -2508,7 +2505,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -2622,7 +2619,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -2718,7 +2715,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -2814,7 +2811,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -2910,7 +2907,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -2990,7 +2987,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -3042,7 +3039,7 @@
if vport != None:
self.vport = vport
else:
- self.vport = common.bsn_vport()
+ self.vport = ofp.bsn_vport()
return
def pack(self):
@@ -3067,13 +3064,13 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 15)
- obj.vport = common.bsn_vport.unpack(reader)
+ obj.vport = ofp.bsn_vport.unpack(reader)
return obj
def __eq__(self, other):
@@ -3139,7 +3136,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -3211,7 +3208,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -3307,7 +3304,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 0)
@@ -3402,7 +3399,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 0)
@@ -3469,7 +3466,7 @@
assert(_type == 3)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.data = str(reader.read_all())
return obj
@@ -3533,7 +3530,7 @@
assert(_type == 2)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.data = str(reader.read_all())
return obj
@@ -3609,7 +3606,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 65535)
@@ -3711,7 +3708,7 @@
assert(_type == 6)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.datapath_id = reader.read("!Q")[0]
obj.n_buffers = reader.read("!L")[0]
@@ -3719,7 +3716,7 @@
reader.skip(3)
obj.capabilities = reader.read("!L")[0]
obj.reserved = reader.read("!L")[0]
- obj.ports = loxi.generic_util.unpack_list(reader, common.port_desc.unpack)
+ obj.ports = loxi.generic_util.unpack_list(reader, ofp.common.port_desc.unpack)
return obj
def __eq__(self, other):
@@ -3796,7 +3793,7 @@
assert(_type == 5)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
return obj
@@ -3878,7 +3875,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if instructions != None:
self.instructions = instructions
else:
@@ -3923,7 +3920,7 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
@@ -3937,8 +3934,8 @@
obj.out_group = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
reader.skip(2)
- obj.match = common.match.unpack(reader)
- obj.instructions = loxi.generic_util.unpack_list(reader, instruction.instruction.unpack)
+ obj.match = ofp.match.unpack(reader)
+ obj.instructions = loxi.generic_util.unpack_list(reader, ofp.instruction.instruction.unpack)
return obj
def __eq__(self, other):
@@ -4063,7 +4060,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if instructions != None:
self.instructions = instructions
else:
@@ -4103,7 +4100,7 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
@@ -4118,8 +4115,8 @@
obj.out_group = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
reader.skip(2)
- obj.match = common.match.unpack(reader)
- obj.instructions = loxi.generic_util.unpack_list(reader, instruction.instruction.unpack)
+ obj.match = ofp.match.unpack(reader)
+ obj.instructions = loxi.generic_util.unpack_list(reader, ofp.instruction.instruction.unpack)
return obj
def __eq__(self, other):
@@ -4243,7 +4240,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if instructions != None:
self.instructions = instructions
else:
@@ -4283,7 +4280,7 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
@@ -4298,8 +4295,8 @@
obj.out_group = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
reader.skip(2)
- obj.match = common.match.unpack(reader)
- obj.instructions = loxi.generic_util.unpack_list(reader, instruction.instruction.unpack)
+ obj.match = ofp.match.unpack(reader)
+ obj.instructions = loxi.generic_util.unpack_list(reader, ofp.instruction.instruction.unpack)
return obj
def __eq__(self, other):
@@ -4423,7 +4420,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if instructions != None:
self.instructions = instructions
else:
@@ -4463,7 +4460,7 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
@@ -4478,8 +4475,8 @@
obj.out_group = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
reader.skip(2)
- obj.match = common.match.unpack(reader)
- obj.instructions = loxi.generic_util.unpack_list(reader, instruction.instruction.unpack)
+ obj.match = ofp.match.unpack(reader)
+ obj.instructions = loxi.generic_util.unpack_list(reader, ofp.instruction.instruction.unpack)
return obj
def __eq__(self, other):
@@ -4592,7 +4589,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 5)
@@ -4681,7 +4678,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if instructions != None:
self.instructions = instructions
else:
@@ -4721,7 +4718,7 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
@@ -4736,8 +4733,8 @@
obj.out_group = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
reader.skip(2)
- obj.match = common.match.unpack(reader)
- obj.instructions = loxi.generic_util.unpack_list(reader, instruction.instruction.unpack)
+ obj.match = ofp.match.unpack(reader)
+ obj.instructions = loxi.generic_util.unpack_list(reader, ofp.instruction.instruction.unpack)
return obj
def __eq__(self, other):
@@ -4861,7 +4858,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if instructions != None:
self.instructions = instructions
else:
@@ -4901,7 +4898,7 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
@@ -4916,8 +4913,8 @@
obj.out_group = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
reader.skip(2)
- obj.match = common.match.unpack(reader)
- obj.instructions = loxi.generic_util.unpack_list(reader, instruction.instruction.unpack)
+ obj.match = ofp.match.unpack(reader)
+ obj.instructions = loxi.generic_util.unpack_list(reader, ofp.instruction.instruction.unpack)
return obj
def __eq__(self, other):
@@ -5040,7 +5037,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
return
def pack(self):
@@ -5073,7 +5070,7 @@
assert(_type == 11)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.cookie = reader.read("!Q")[0]
obj.priority = reader.read("!H")[0]
@@ -5085,7 +5082,7 @@
obj.hard_timeout = reader.read("!H")[0]
obj.packet_count = reader.read("!Q")[0]
obj.byte_count = reader.read("!Q")[0]
- obj.match = common.match.unpack(reader)
+ obj.match = ofp.match.unpack(reader)
return obj
def __eq__(self, other):
@@ -5195,13 +5192,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 1)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.flow_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.flow_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -5269,7 +5266,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
return
def pack(self):
@@ -5302,7 +5299,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 1)
@@ -5315,7 +5312,7 @@
reader.skip(4)
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
- obj.match = common.match.unpack(reader)
+ obj.match = ofp.match.unpack(reader)
return obj
def __eq__(self, other):
@@ -5406,7 +5403,7 @@
assert(_type == 8)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
obj.miss_send_len = reader.read("!H")[0]
@@ -5470,7 +5467,7 @@
assert(_type == 7)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
return obj
@@ -5552,13 +5549,13 @@
assert(_type == 15)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.command = reader.read("!H")[0]
obj.group_type = reader.read("!B")[0]
reader.skip(1)
obj.group_id = reader.read("!L")[0]
- obj.buckets = loxi.generic_util.unpack_list(reader, common.bucket.unpack)
+ obj.buckets = loxi.generic_util.unpack_list(reader, ofp.common.bucket.unpack)
return obj
def __eq__(self, other):
@@ -5642,14 +5639,14 @@
assert(_type == 15)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_command = reader.read("!H")[0]
assert(_command == 0)
obj.group_type = reader.read("!B")[0]
reader.skip(1)
obj.group_id = reader.read("!L")[0]
- obj.buckets = loxi.generic_util.unpack_list(reader, common.bucket.unpack)
+ obj.buckets = loxi.generic_util.unpack_list(reader, ofp.common.bucket.unpack)
return obj
def __eq__(self, other):
@@ -5732,14 +5729,14 @@
assert(_type == 15)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_command = reader.read("!H")[0]
assert(_command == 2)
obj.group_type = reader.read("!B")[0]
reader.skip(1)
obj.group_id = reader.read("!L")[0]
- obj.buckets = loxi.generic_util.unpack_list(reader, common.bucket.unpack)
+ obj.buckets = loxi.generic_util.unpack_list(reader, ofp.common.bucket.unpack)
return obj
def __eq__(self, other):
@@ -5817,13 +5814,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 7)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.group_desc_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.group_desc_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -5892,7 +5889,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 7)
@@ -6012,7 +6009,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 8)
@@ -6132,7 +6129,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 8)
@@ -6206,7 +6203,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 6)
@@ -6290,14 +6287,14 @@
assert(_type == 15)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_command = reader.read("!H")[0]
assert(_command == 1)
obj.group_type = reader.read("!B")[0]
reader.skip(1)
obj.group_id = reader.read("!L")[0]
- obj.buckets = loxi.generic_util.unpack_list(reader, common.bucket.unpack)
+ obj.buckets = loxi.generic_util.unpack_list(reader, ofp.common.bucket.unpack)
return obj
def __eq__(self, other):
@@ -6375,13 +6372,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 6)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.group_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.group_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -6456,7 +6453,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 6)
@@ -6524,7 +6521,7 @@
assert(_type == 0)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
return obj
@@ -6590,7 +6587,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 0)
@@ -6670,7 +6667,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 8992)
@@ -6726,7 +6723,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if data != None:
self.data = data
else:
@@ -6759,13 +6756,13 @@
assert(_type == 10)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.buffer_id = reader.read("!L")[0]
obj.total_len = reader.read("!H")[0]
obj.reason = reader.read("!B")[0]
obj.table_id = reader.read("!B")[0]
- obj.match = common.match.unpack(reader)
+ obj.match = ofp.match.unpack(reader)
reader.skip(2)
obj.data = str(reader.read_all())
return obj
@@ -6867,13 +6864,13 @@
assert(_type == 13)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.buffer_id = reader.read("!L")[0]
obj.in_port = util.unpack_port_no(reader)
_actions_len = reader.read("!H")[0]
reader.skip(6)
- obj.actions = loxi.generic_util.unpack_list(reader.slice(_actions_len), action.action.unpack)
+ obj.actions = loxi.generic_util.unpack_list(reader.slice(_actions_len), ofp.action.action.unpack)
obj.data = str(reader.read_all())
return obj
@@ -6971,7 +6968,7 @@
assert(_type == 16)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.port_no = util.unpack_port_no(reader)
reader.skip(4)
@@ -7065,7 +7062,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 7)
@@ -7144,13 +7141,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 4)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.port_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.port_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -7225,7 +7222,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 4)
@@ -7279,7 +7276,7 @@
if desc != None:
self.desc = desc
else:
- self.desc = common.port_desc()
+ self.desc = ofp.port_desc()
return
def pack(self):
@@ -7304,11 +7301,11 @@
assert(_type == 12)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.reason = reader.read("!B")[0]
reader.skip(7)
- obj.desc = common.port_desc.unpack(reader)
+ obj.desc = ofp.port_desc.unpack(reader)
return obj
def __eq__(self, other):
@@ -7380,11 +7377,11 @@
assert(_type == 23)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.port = util.unpack_port_no(reader)
reader.skip(4)
- obj.queues = loxi.generic_util.unpack_list(reader, common.packet_queue.unpack)
+ obj.queues = loxi.generic_util.unpack_list(reader, ofp.common.packet_queue.unpack)
return obj
def __eq__(self, other):
@@ -7451,7 +7448,7 @@
assert(_type == 22)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.port = util.unpack_port_no(reader)
reader.skip(4)
@@ -7523,7 +7520,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 9)
@@ -7602,13 +7599,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 5)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.queue_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.queue_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -7687,7 +7684,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 5)
@@ -7770,7 +7767,7 @@
assert(_type == 25)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.role = reader.read("!L")[0]
reader.skip(4)
@@ -7846,7 +7843,7 @@
assert(_type == 24)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.role = reader.read("!L")[0]
reader.skip(4)
@@ -7923,7 +7920,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 11)
@@ -7999,7 +7996,7 @@
assert(_type == 9)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
obj.miss_send_len = reader.read("!H")[0]
@@ -8075,7 +8072,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 10)
@@ -8152,7 +8149,7 @@
assert(_type == 17)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.table_id = reader.read("!B")[0]
reader.skip(3)
@@ -8229,7 +8226,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 8)
@@ -8308,13 +8305,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 3)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.table_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.table_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -8383,7 +8380,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 3)
@@ -8423,8 +8420,8 @@
def parse_message(buf):
msg_ver, msg_type, msg_len, msg_xid = parse_header(buf)
- if msg_ver != const.OFP_VERSION and msg_type != const.OFPT_HELLO:
- raise loxi.ProtocolError("wrong OpenFlow version (expected %d, got %d)" % (const.OFP_VERSION, msg_ver))
+ if msg_ver != ofp.OFP_VERSION and msg_type != ofp.OFPT_HELLO:
+ raise loxi.ProtocolError("wrong OpenFlow version (expected %d, got %d)" % (ofp.OFP_VERSION, msg_ver))
if len(buf) != msg_len:
raise loxi.ProtocolError("incorrect message size")
return message.unpack(loxi.generic_util.OFReader(buf))
diff --git a/src/python/loxi/of12/oxm.py b/src/python/loxi/of12/oxm.py
index a6e0720..3701cc6 100644
--- a/src/python/loxi/of12/oxm.py
+++ b/src/python/loxi/of12/oxm.py
@@ -8,15 +8,12 @@
import struct
import loxi
-import const
-import action
-import oxm
-import message
-import instruction
-import common
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of12']
+
class oxm(loxi.OFObject):
subtypes = {}
@@ -794,6 +791,190 @@
oxm.subtypes[196896] = bsn_in_ports_128_masked
+class bsn_in_ports_512(oxm):
+ type_len = 206400
+
+ def __init__(self, value=None):
+ if value != None:
+ self.value = value
+ else:
+ self.value = set()
+ return
+
+ def pack(self):
+ packed = []
+ packed.append(struct.pack("!L", self.type_len))
+ packed.append(util.pack_bitmap_512(self.value))
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = bsn_in_ports_512()
+ _type_len = reader.read("!L")[0]
+ assert(_type_len == 206400)
+ obj.value = util.unpack_bitmap_512(reader)
+ 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_in_ports_512 {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.pp(self.value)
+ q.breakable()
+ q.text('}')
+
+oxm.subtypes[206400] = bsn_in_ports_512
+
+class bsn_in_ports_512_masked(oxm):
+ type_len = 206720
+
+ def __init__(self, value=None, value_mask=None):
+ if value != None:
+ self.value = value
+ else:
+ self.value = set()
+ if value_mask != None:
+ self.value_mask = value_mask
+ else:
+ self.value_mask = set()
+ return
+
+ def pack(self):
+ packed = []
+ packed.append(struct.pack("!L", self.type_len))
+ packed.append(util.pack_bitmap_512(self.value))
+ packed.append(util.pack_bitmap_512(self.value_mask))
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = bsn_in_ports_512_masked()
+ _type_len = reader.read("!L")[0]
+ assert(_type_len == 206720)
+ obj.value = util.unpack_bitmap_512(reader)
+ obj.value_mask = util.unpack_bitmap_512(reader)
+ 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_in_ports_512_masked {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.pp(self.value)
+ q.text(","); q.breakable()
+ q.text("value_mask = ");
+ q.pp(self.value_mask)
+ q.breakable()
+ q.text('}')
+
+oxm.subtypes[206720] = bsn_in_ports_512_masked
+
+class bsn_ingress_port_group_id(oxm):
+ type_len = 206852
+
+ 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_ingress_port_group_id()
+ _type_len = reader.read("!L")[0]
+ assert(_type_len == 206852)
+ 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_ingress_port_group_id {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+oxm.subtypes[206852] = bsn_ingress_port_group_id
+
+class bsn_ingress_port_group_id_masked(oxm):
+ type_len = 207112
+
+ 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_ingress_port_group_id_masked()
+ _type_len = reader.read("!L")[0]
+ assert(_type_len == 207112)
+ 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_ingress_port_group_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[207112] = bsn_ingress_port_group_id_masked
+
class bsn_l2_cache_hit(oxm):
type_len = 205825
diff --git a/src/python/loxi/of12/util.py b/src/python/loxi/of12/util.py
index e8218ad..a23597d 100644
--- a/src/python/loxi/of12/util.py
+++ b/src/python/loxi/of12/util.py
@@ -90,6 +90,28 @@
x >>= 1
return value
+def pack_bitmap_512(value):
+ words = [0] * 8
+ for v in value:
+ assert v < 512
+ words[7-v/64] |= 1 << (v % 64)
+ return struct.pack("!8Q", *words)
+
+def unpack_bitmap_512(reader):
+ words = reader.read("!8Q")
+ x = 0l
+ for word in words:
+ x <<= 64
+ x |= word
+ i = 0
+ value = set()
+ while x != 0:
+ if x & 1 == 1:
+ value.add(i)
+ i += 1
+ x >>= 1
+ return value
+
def pack_checksum_128(value):
return struct.pack("!QQ", (value >> 64) & MASK64, value & MASK64)
diff --git a/src/python/loxi/of13/action.py b/src/python/loxi/of13/action.py
index 04b17de..5065041 100644
--- a/src/python/loxi/of13/action.py
+++ b/src/python/loxi/of13/action.py
@@ -8,19 +8,12 @@
import struct
import loxi
-import const
-import bsn_tlv
-import meter_band
-import instruction
-import oxm
-import common
-import instruction_id
-import action
-import message
-import action_id
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of13']
+
class action(loxi.OFObject):
subtypes = {}
@@ -52,7 +45,7 @@
obj.type = reader.read("!H")[0]
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -110,7 +103,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.experimenter = reader.read("!L")[0]
obj.data = str(reader.read_all())
return obj
@@ -169,7 +162,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
obj.subtype = reader.read("!L")[0]
@@ -221,7 +214,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -281,13 +274,13 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 5)
obj.table_id = reader.read("!L")[0]
- obj.key = loxi.generic_util.unpack_list(reader, bsn_tlv.bsn_tlv.unpack)
+ obj.key = loxi.generic_util.unpack_list(reader, ofp.bsn_tlv.bsn_tlv.unpack)
return obj
def __eq__(self, other):
@@ -352,7 +345,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -418,7 +411,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -465,7 +458,7 @@
assert(_type == 12)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -505,7 +498,7 @@
assert(_type == 11)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -545,7 +538,7 @@
assert(_type == 16)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -585,7 +578,7 @@
assert(_type == 24)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -629,7 +622,7 @@
assert(_type == 22)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.group_id = reader.read("!L")[0]
return obj
@@ -687,7 +680,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 8992)
obj.subtype = reader.read("!H")[0]
@@ -737,7 +730,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 8992)
_subtype = reader.read("!H")[0]
@@ -792,7 +785,7 @@
assert(_type == 0)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.port = util.unpack_port_no(reader)
obj.max_len = reader.read("!H")[0]
reader.skip(6)
@@ -846,7 +839,7 @@
assert(_type == 20)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.ethertype = reader.read("!H")[0]
reader.skip(2)
return obj
@@ -890,7 +883,7 @@
assert(_type == 27)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -930,7 +923,7 @@
assert(_type == 18)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -975,7 +968,7 @@
assert(_type == 19)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.ethertype = reader.read("!H")[0]
reader.skip(2)
return obj
@@ -1024,7 +1017,7 @@
assert(_type == 26)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.ethertype = reader.read("!H")[0]
reader.skip(2)
return obj
@@ -1073,7 +1066,7 @@
assert(_type == 17)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.ethertype = reader.read("!H")[0]
reader.skip(2)
return obj
@@ -1123,8 +1116,8 @@
assert(_type == 25)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
- obj.field = oxm.oxm.unpack(reader)
+ reader = orig_reader.slice(_len, 4)
+ obj.field = ofp.oxm.oxm.unpack(reader)
return obj
def __eq__(self, other):
@@ -1171,7 +1164,7 @@
assert(_type == 15)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.mpls_ttl = reader.read("!B")[0]
reader.skip(3)
return obj
@@ -1220,7 +1213,7 @@
assert(_type == 23)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.nw_ttl = reader.read("!B")[0]
reader.skip(3)
return obj
@@ -1268,7 +1261,7 @@
assert(_type == 21)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.queue_id = reader.read("!L")[0]
return obj
diff --git a/src/python/loxi/of13/action_id.py b/src/python/loxi/of13/action_id.py
index b8e1a06..b63623e 100644
--- a/src/python/loxi/of13/action_id.py
+++ b/src/python/loxi/of13/action_id.py
@@ -8,19 +8,12 @@
import struct
import loxi
-import const
-import bsn_tlv
-import meter_band
-import instruction
-import oxm
-import common
-import instruction_id
-import action
-import message
-import action_id
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of13']
+
class action_id(loxi.OFObject):
subtypes = {}
@@ -51,7 +44,7 @@
obj.type = reader.read("!H")[0]
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -101,7 +94,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.experimenter = reader.read("!L")[0]
return obj
@@ -155,7 +148,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
obj.subtype = reader.read("!L")[0]
@@ -201,7 +194,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -247,7 +240,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -293,7 +286,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -339,7 +332,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -381,7 +374,7 @@
assert(_type == 12)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -419,7 +412,7 @@
assert(_type == 11)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -457,7 +450,7 @@
assert(_type == 16)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -495,7 +488,7 @@
assert(_type == 24)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -533,7 +526,7 @@
assert(_type == 22)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -585,7 +578,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 8992)
obj.subtype = reader.read("!H")[0]
@@ -631,7 +624,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 8992)
_subtype = reader.read("!H")[0]
@@ -673,7 +666,7 @@
assert(_type == 0)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -711,7 +704,7 @@
assert(_type == 20)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -749,7 +742,7 @@
assert(_type == 27)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -787,7 +780,7 @@
assert(_type == 18)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -825,7 +818,7 @@
assert(_type == 19)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -863,7 +856,7 @@
assert(_type == 26)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -901,7 +894,7 @@
assert(_type == 17)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -939,7 +932,7 @@
assert(_type == 25)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -977,7 +970,7 @@
assert(_type == 15)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -1015,7 +1008,7 @@
assert(_type == 23)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -1053,7 +1046,7 @@
assert(_type == 21)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
diff --git a/src/python/loxi/of13/bsn_tlv.py b/src/python/loxi/of13/bsn_tlv.py
index 422f80a..a1f39e7 100644
--- a/src/python/loxi/of13/bsn_tlv.py
+++ b/src/python/loxi/of13/bsn_tlv.py
@@ -8,19 +8,12 @@
import struct
import loxi
-import const
-import bsn_tlv
-import meter_band
-import instruction
-import oxm
-import common
-import instruction_id
-import action
-import message
-import action_id
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of13']
+
class bsn_tlv(loxi.OFObject):
subtypes = {}
@@ -51,7 +44,7 @@
obj.type = reader.read("!H")[0]
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
return obj
def __eq__(self, other):
@@ -94,7 +87,7 @@
assert(_type == 44)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!H")[0]
return obj
@@ -141,7 +134,7 @@
assert(_type == 43)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!H")[0]
return obj
@@ -188,7 +181,7 @@
assert(_type == 42)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!H")[0]
return obj
@@ -235,7 +228,7 @@
assert(_type == 53)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!B")[0]
return obj
@@ -282,7 +275,7 @@
assert(_type == 41)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = list(reader.read('!6B'))
return obj
@@ -329,7 +322,7 @@
assert(_type == 40)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!H")[0]
return obj
@@ -376,7 +369,7 @@
assert(_type == 10)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -397,6 +390,53 @@
bsn_tlv.subtypes[10] = broadcast_query_timeout
+class bucket(bsn_tlv):
+ type = 64
+
+ def __init__(self, value=None):
+ if value != None:
+ self.value = value
+ else:
+ self.value = []
+ 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(loxi.generic_util.pack_list(self.value))
+ length = sum([len(x) for x in packed])
+ packed[1] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = bucket()
+ _type = reader.read("!H")[0]
+ assert(_type == 64)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ obj.value = loxi.generic_util.unpack_list(reader, ofp.bsn_tlv.bsn_tlv.unpack)
+ 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("bucket {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.pp(self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[64] = bucket
+
class circuit_id(bsn_tlv):
type = 14
@@ -423,7 +463,7 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = str(reader.read_all())
return obj
@@ -470,7 +510,7 @@
assert(_type == 45)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!B")[0]
return obj
@@ -517,7 +557,7 @@
assert(_type == 22)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!B")[0]
return obj
@@ -564,7 +604,7 @@
assert(_type == 55)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = str(reader.read_all())
return obj
@@ -611,7 +651,7 @@
assert(_type == 33)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = list(reader.read('!6B'))
return obj
@@ -658,7 +698,7 @@
assert(_type == 32)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = list(reader.read('!6B'))
return obj
@@ -705,7 +745,7 @@
assert(_type == 26)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -752,7 +792,7 @@
assert(_type == 29)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = list(reader.read('!6B'))
return obj
@@ -799,7 +839,7 @@
assert(_type == 23)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -846,7 +886,7 @@
assert(_type == 24)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = list(reader.read('!6B'))
return obj
@@ -893,7 +933,7 @@
assert(_type == 25)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -940,7 +980,7 @@
assert(_type == 31)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -961,6 +1001,147 @@
bsn_tlv.subtypes[31] = header_size
+class icmp_code(bsn_tlv):
+ type = 69
+
+ 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("!B", self.value))
+ length = sum([len(x) for x in packed])
+ packed[1] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = icmp_code()
+ _type = reader.read("!H")[0]
+ assert(_type == 69)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ obj.value = reader.read("!B")[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("icmp_code {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[69] = icmp_code
+
+class icmp_id(bsn_tlv):
+ type = 70
+
+ 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 = icmp_id()
+ _type = reader.read("!H")[0]
+ assert(_type == 70)
+ _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("icmp_id {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[70] = icmp_id
+
+class icmp_type(bsn_tlv):
+ type = 68
+
+ 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("!B", self.value))
+ length = sum([len(x) for x in packed])
+ packed[1] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = icmp_type()
+ _type = reader.read("!H")[0]
+ assert(_type == 68)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ obj.value = reader.read("!B")[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("icmp_type {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[68] = icmp_type
+
class idle_notification(bsn_tlv):
type = 7
@@ -982,7 +1163,7 @@
assert(_type == 7)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
return obj
def __eq__(self, other):
@@ -1025,7 +1206,7 @@
assert(_type == 5)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!Q")[0]
return obj
@@ -1072,7 +1253,7 @@
assert(_type == 8)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -1119,7 +1300,7 @@
assert(_type == 28)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = list(reader.read('!6B'))
return obj
@@ -1166,7 +1347,7 @@
assert(_type == 27)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = list(reader.read('!6B'))
return obj
@@ -1213,7 +1394,7 @@
assert(_type == 58)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -1234,6 +1415,53 @@
bsn_tlv.subtypes[58] = interval
+class ip_proto(bsn_tlv):
+ type = 67
+
+ 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("!B", self.value))
+ length = sum([len(x) for x in packed])
+ packed[1] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = ip_proto()
+ _type = reader.read("!H")[0]
+ assert(_type == 67)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ obj.value = reader.read("!B")[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("ip_proto {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[67] = ip_proto
+
class ipv4(bsn_tlv):
type = 4
@@ -1260,7 +1488,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -1307,7 +1535,7 @@
assert(_type == 35)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -1354,7 +1582,7 @@
assert(_type == 60)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -1401,7 +1629,7 @@
assert(_type == 34)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -1448,7 +1676,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = list(reader.read('!6B'))
return obj
@@ -1495,7 +1723,7 @@
assert(_type == 56)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = list(reader.read('!6B'))
return obj
@@ -1542,7 +1770,7 @@
assert(_type == 13)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!Q")[0]
return obj
@@ -1563,6 +1791,147 @@
bsn_tlv.subtypes[13] = miss_packets
+class mpls_control_word(bsn_tlv):
+ type = 62
+
+ 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("!B", self.value))
+ length = sum([len(x) for x in packed])
+ packed[1] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = mpls_control_word()
+ _type = reader.read("!H")[0]
+ assert(_type == 62)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ obj.value = reader.read("!B")[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("mpls_control_word {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[62] = mpls_control_word
+
+class mpls_label(bsn_tlv):
+ type = 61
+
+ 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("!L", self.value))
+ length = sum([len(x) for x in packed])
+ packed[1] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = mpls_label()
+ _type = reader.read("!H")[0]
+ assert(_type == 61)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ 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("mpls_label {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[61] = mpls_label
+
+class mpls_sequenced(bsn_tlv):
+ type = 63
+
+ 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("!B", self.value))
+ length = sum([len(x) for x in packed])
+ packed[1] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = mpls_sequenced()
+ _type = reader.read("!H")[0]
+ assert(_type == 63)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ obj.value = reader.read("!B")[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("mpls_sequenced {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[63] = mpls_sequenced
+
class name(bsn_tlv):
type = 52
@@ -1589,7 +1958,7 @@
assert(_type == 52)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = str(reader.read_all())
return obj
@@ -1636,7 +2005,7 @@
assert(_type == 51)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!H")[0]
return obj
@@ -1683,7 +2052,7 @@
assert(_type == 50)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!H")[0]
return obj
@@ -1730,7 +2099,7 @@
assert(_type == 49)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!H")[0]
return obj
@@ -1777,7 +2146,7 @@
assert(_type == 54)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!B")[0]
return obj
@@ -1824,7 +2193,7 @@
assert(_type == 48)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = list(reader.read('!6B'))
return obj
@@ -1871,7 +2240,7 @@
assert(_type == 47)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!H")[0]
return obj
@@ -1918,7 +2287,7 @@
assert(_type == 0)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = util.unpack_port_no(reader)
return obj
@@ -1965,7 +2334,7 @@
assert(_type == 57)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -2012,7 +2381,7 @@
assert(_type == 20)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -2059,7 +2428,7 @@
assert(_type == 21)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -2111,9 +2480,9 @@
assert(_type == 59)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.table_id = reader.read("!H")[0]
- obj.key = loxi.generic_util.unpack_list(reader, bsn_tlv.bsn_tlv.unpack)
+ obj.key = loxi.generic_util.unpack_list(reader, ofp.bsn_tlv.bsn_tlv.unpack)
return obj
def __eq__(self, other):
@@ -2163,7 +2532,7 @@
assert(_type == 12)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!Q")[0]
return obj
@@ -2210,7 +2579,7 @@
assert(_type == 11)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!Q")[0]
return obj
@@ -2231,6 +2600,53 @@
bsn_tlv.subtypes[11] = request_packets
+class rx_bytes(bsn_tlv):
+ type = 71
+
+ 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("!Q", self.value))
+ length = sum([len(x) for x in packed])
+ packed[1] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = rx_bytes()
+ _type = reader.read("!H")[0]
+ assert(_type == 71)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ obj.value = reader.read("!Q")[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("rx_bytes {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[71] = rx_bytes
+
class rx_packets(bsn_tlv):
type = 2
@@ -2257,7 +2673,7 @@
assert(_type == 2)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!Q")[0]
return obj
@@ -2304,7 +2720,7 @@
assert(_type == 30)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -2351,7 +2767,7 @@
assert(_type == 38)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -2372,6 +2788,100 @@
bsn_tlv.subtypes[38] = sub_agent_id
+class tcp_dst(bsn_tlv):
+ type = 66
+
+ 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 = tcp_dst()
+ _type = reader.read("!H")[0]
+ assert(_type == 66)
+ _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("tcp_dst {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[66] = tcp_dst
+
+class tcp_src(bsn_tlv):
+ type = 65
+
+ 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 = tcp_src()
+ _type = reader.read("!H")[0]
+ assert(_type == 65)
+ _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("tcp_src {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[65] = tcp_src
+
class tx_bytes(bsn_tlv):
type = 39
@@ -2398,7 +2908,7 @@
assert(_type == 39)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!Q")[0]
return obj
@@ -2445,7 +2955,7 @@
assert(_type == 3)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!Q")[0]
return obj
@@ -2492,7 +3002,7 @@
assert(_type == 16)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!H")[0]
return obj
@@ -2539,7 +3049,7 @@
assert(_type == 15)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!H")[0]
return obj
@@ -2586,7 +3096,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!H")[0]
return obj
@@ -2633,7 +3143,7 @@
assert(_type == 17)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!H")[0]
return obj
@@ -2680,7 +3190,7 @@
assert(_type == 37)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!H")[0]
return obj
@@ -2727,7 +3237,7 @@
assert(_type == 36)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!H")[0]
return obj
@@ -2774,7 +3284,7 @@
assert(_type == 9)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -2821,7 +3331,7 @@
assert(_type == 6)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!H")[0]
return obj
@@ -2868,7 +3378,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
diff --git a/src/python/loxi/of13/common.py b/src/python/loxi/of13/common.py
index 361865d..450c9bb 100644
--- a/src/python/loxi/of13/common.py
+++ b/src/python/loxi/of13/common.py
@@ -8,19 +8,12 @@
import struct
import loxi
-import const
-import bsn_tlv
-import meter_band
-import instruction
-import oxm
-import common
-import instruction_id
-import action
-import message
-import action_id
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of13']
+
class bsn_controller_connection(loxi.OFObject):
def __init__(self, state=None, auxiliary_id=None, role=None, uri=None):
@@ -227,6 +220,48 @@
q.text('}')
+class bsn_generic_stats_entry(loxi.OFObject):
+
+ def __init__(self, tlvs=None):
+ if tlvs != None:
+ self.tlvs = tlvs
+ else:
+ self.tlvs = []
+ return
+
+ def pack(self):
+ packed = []
+ packed.append(struct.pack("!H", 0)) # placeholder for length at index 0
+ packed.append(loxi.generic_util.pack_list(self.tlvs))
+ length = sum([len(x) for x in packed])
+ packed[0] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = bsn_generic_stats_entry()
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 2)
+ obj.tlvs = loxi.generic_util.unpack_list(reader, ofp.bsn_tlv.bsn_tlv.unpack)
+ return obj
+
+ def __eq__(self, other):
+ if type(self) != type(other): return False
+ if self.tlvs != other.tlvs: return False
+ return True
+
+ def pretty_print(self, q):
+ q.text("bsn_generic_stats_entry {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("tlvs = ");
+ q.pp(self.tlvs)
+ q.breakable()
+ q.text('}')
+
+
class bsn_gentable_bucket_stats_entry(loxi.OFObject):
def __init__(self, checksum=None):
@@ -301,7 +336,7 @@
obj = bsn_gentable_desc_stats_entry()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
obj.table_id = reader.read("!H")[0]
obj.name = reader.read("!32s")[0].rstrip("\x00")
obj.buckets_size = reader.read("!L")[0]
@@ -371,11 +406,11 @@
obj = bsn_gentable_entry_desc_stats_entry()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
_key_length = reader.read("!H")[0]
obj.checksum = util.unpack_checksum_128(reader)
- obj.key = loxi.generic_util.unpack_list(reader.slice(_key_length), bsn_tlv.bsn_tlv.unpack)
- obj.value = loxi.generic_util.unpack_list(reader, bsn_tlv.bsn_tlv.unpack)
+ obj.key = loxi.generic_util.unpack_list(reader.slice(_key_length), ofp.bsn_tlv.bsn_tlv.unpack)
+ obj.value = loxi.generic_util.unpack_list(reader, ofp.bsn_tlv.bsn_tlv.unpack)
return obj
def __eq__(self, other):
@@ -431,10 +466,10 @@
obj = bsn_gentable_entry_stats_entry()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
_key_length = reader.read("!H")[0]
- obj.key = loxi.generic_util.unpack_list(reader.slice(_key_length), bsn_tlv.bsn_tlv.unpack)
- obj.stats = loxi.generic_util.unpack_list(reader, bsn_tlv.bsn_tlv.unpack)
+ obj.key = loxi.generic_util.unpack_list(reader.slice(_key_length), ofp.bsn_tlv.bsn_tlv.unpack)
+ obj.stats = loxi.generic_util.unpack_list(reader, ofp.bsn_tlv.bsn_tlv.unpack)
return obj
def __eq__(self, other):
@@ -761,10 +796,10 @@
obj = bsn_port_counter_stats_entry()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
reader.skip(2)
obj.port_no = util.unpack_port_no(reader)
- obj.values = loxi.generic_util.unpack_list(reader, common.uint64.unpack)
+ obj.values = loxi.generic_util.unpack_list(reader, ofp.common.uint64.unpack)
return obj
def __eq__(self, other):
@@ -899,7 +934,7 @@
obj.type = reader.read("!H")[0]
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
return obj
def __eq__(self, other):
@@ -944,10 +979,10 @@
obj = bsn_vlan_counter_stats_entry()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
obj.vlan_vid = reader.read("!H")[0]
reader.skip(4)
- obj.values = loxi.generic_util.unpack_list(reader, common.uint64.unpack)
+ obj.values = loxi.generic_util.unpack_list(reader, ofp.common.uint64.unpack)
return obj
def __eq__(self, other):
@@ -1052,7 +1087,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.flags = reader.read("!L")[0]
obj.port_no = util.unpack_port_no(reader)
obj.loopback_port_no = util.unpack_port_no(reader)
@@ -1180,7 +1215,7 @@
assert(_type == 0)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.port_no = reader.read("!L")[0]
obj.ingress_tpid = reader.read("!H")[0]
obj.ingress_vlan_id = reader.read("!H")[0]
@@ -1254,10 +1289,10 @@
obj = bsn_vrf_counter_stats_entry()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
reader.skip(2)
obj.vrf = reader.read("!L")[0]
- obj.values = loxi.generic_util.unpack_list(reader, common.uint64.unpack)
+ obj.values = loxi.generic_util.unpack_list(reader, ofp.common.uint64.unpack)
return obj
def __eq__(self, other):
@@ -1318,12 +1353,12 @@
obj = bucket()
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (0 + 2))
+ reader = orig_reader.slice(_len, 2)
obj.weight = reader.read("!H")[0]
obj.watch_port = util.unpack_port_no(reader)
obj.watch_group = reader.read("!L")[0]
reader.skip(4)
- obj.actions = loxi.generic_util.unpack_list(reader, action.action.unpack)
+ obj.actions = loxi.generic_util.unpack_list(reader, ofp.action.action.unpack)
return obj
def __eq__(self, other):
@@ -1446,7 +1481,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if instructions != None:
self.instructions = instructions
else:
@@ -1479,7 +1514,7 @@
obj = flow_stats_entry()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
obj.table_id = reader.read("!B")[0]
reader.skip(1)
obj.duration_sec = reader.read("!L")[0]
@@ -1492,8 +1527,8 @@
obj.cookie = reader.read("!Q")[0]
obj.packet_count = reader.read("!Q")[0]
obj.byte_count = reader.read("!Q")[0]
- obj.match = common.match.unpack(reader)
- obj.instructions = loxi.generic_util.unpack_list(reader, instruction.instruction.unpack)
+ obj.match = ofp.match.unpack(reader)
+ obj.instructions = loxi.generic_util.unpack_list(reader, ofp.instruction.instruction.unpack)
return obj
def __eq__(self, other):
@@ -1589,11 +1624,11 @@
obj = group_desc_stats_entry()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
obj.group_type = reader.read("!B")[0]
reader.skip(1)
obj.group_id = reader.read("!L")[0]
- obj.buckets = loxi.generic_util.unpack_list(reader, common.bucket.unpack)
+ obj.buckets = loxi.generic_util.unpack_list(reader, ofp.common.bucket.unpack)
return obj
def __eq__(self, other):
@@ -1674,7 +1709,7 @@
obj = group_stats_entry()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
reader.skip(2)
obj.group_id = reader.read("!L")[0]
obj.ref_count = reader.read("!L")[0]
@@ -1683,7 +1718,7 @@
obj.byte_count = reader.read("!Q")[0]
obj.duration_sec = reader.read("!L")[0]
obj.duration_nsec = reader.read("!L")[0]
- obj.bucket_stats = loxi.generic_util.unpack_list(reader, common.bucket_counter.unpack)
+ obj.bucket_stats = loxi.generic_util.unpack_list(reader, ofp.common.bucket_counter.unpack)
return obj
def __eq__(self, other):
@@ -1756,7 +1791,7 @@
obj.type = reader.read("!H")[0]
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
return obj
def __eq__(self, other):
@@ -1799,8 +1834,8 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.bitmaps = loxi.generic_util.unpack_list(reader, common.uint32.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.bitmaps = loxi.generic_util.unpack_list(reader, ofp.common.uint32.unpack)
return obj
def __eq__(self, other):
@@ -1847,8 +1882,8 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.oxm_list = loxi.generic_util.unpack_list(reader, oxm.oxm.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.oxm_list = loxi.generic_util.unpack_list(reader, ofp.oxm.oxm.unpack)
orig_reader.skip_align()
return obj
@@ -1946,10 +1981,10 @@
obj = meter_config()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
obj.flags = reader.read("!H")[0]
obj.meter_id = reader.read("!L")[0]
- obj.entries = loxi.generic_util.unpack_list(reader, meter_band.meter_band.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.meter_band.meter_band.unpack)
return obj
def __eq__(self, other):
@@ -2108,14 +2143,14 @@
obj.meter_id = reader.read("!L")[0]
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (4 + 2))
+ reader = orig_reader.slice(_len, 6)
reader.skip(6)
obj.flow_count = reader.read("!L")[0]
obj.packet_in_count = reader.read("!Q")[0]
obj.byte_in_count = reader.read("!Q")[0]
obj.duration_sec = reader.read("!L")[0]
obj.duration_nsec = reader.read("!L")[0]
- obj.band_stats = loxi.generic_util.unpack_list(reader, common.meter_band_stats.unpack)
+ obj.band_stats = loxi.generic_util.unpack_list(reader, ofp.common.meter_band_stats.unpack)
return obj
def __eq__(self, other):
@@ -2193,9 +2228,9 @@
obj.port = util.unpack_port_no(reader)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (8 + 2))
+ reader = orig_reader.slice(_len, 10)
reader.skip(6)
- obj.properties = loxi.generic_util.unpack_list(reader, common.queue_prop.unpack)
+ obj.properties = loxi.generic_util.unpack_list(reader, ofp.common.queue_prop.unpack)
return obj
def __eq__(self, other):
@@ -2571,7 +2606,7 @@
obj.type = reader.read("!H")[0]
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -2629,7 +2664,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
obj.experimenter = reader.read("!L")[0]
reader.skip(4)
@@ -2682,7 +2717,7 @@
assert(_type == 2)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
obj.rate = reader.read("!H")[0]
reader.skip(6)
@@ -2733,7 +2768,7 @@
assert(_type == 1)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
obj.rate = reader.read("!H")[0]
reader.skip(6)
@@ -2882,7 +2917,7 @@
obj.type = reader.read("!H")[0]
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
return obj
def __eq__(self, other):
@@ -2925,8 +2960,8 @@
assert(_type == 6)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.action_ids = loxi.generic_util.unpack_list(reader, action_id.action_id.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.action_ids = loxi.generic_util.unpack_list(reader, ofp.action_id.action_id.unpack)
return obj
def __eq__(self, other):
@@ -2972,8 +3007,8 @@
assert(_type == 7)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.action_ids = loxi.generic_util.unpack_list(reader, action_id.action_id.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.action_ids = loxi.generic_util.unpack_list(reader, ofp.action_id.action_id.unpack)
return obj
def __eq__(self, other):
@@ -3019,8 +3054,8 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.oxm_ids = loxi.generic_util.unpack_list(reader, common.uint32.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.oxm_ids = loxi.generic_util.unpack_list(reader, ofp.common.uint32.unpack)
return obj
def __eq__(self, other):
@@ -3066,8 +3101,8 @@
assert(_type == 15)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.oxm_ids = loxi.generic_util.unpack_list(reader, common.uint32.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.oxm_ids = loxi.generic_util.unpack_list(reader, ofp.common.uint32.unpack)
return obj
def __eq__(self, other):
@@ -3130,7 +3165,7 @@
assert(_type == 65534)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.experimenter = reader.read("!L")[0]
obj.subtype = reader.read("!L")[0]
obj.experimenter_data = str(reader.read_all())
@@ -3201,7 +3236,7 @@
assert(_type == 65535)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.experimenter = reader.read("!L")[0]
obj.subtype = reader.read("!L")[0]
obj.experimenter_data = str(reader.read_all())
@@ -3255,8 +3290,8 @@
assert(_type == 0)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.instruction_ids = loxi.generic_util.unpack_list(reader, instruction_id.instruction_id.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.instruction_ids = loxi.generic_util.unpack_list(reader, ofp.instruction_id.instruction_id.unpack)
return obj
def __eq__(self, other):
@@ -3302,8 +3337,8 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.instruction_ids = loxi.generic_util.unpack_list(reader, instruction_id.instruction_id.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.instruction_ids = loxi.generic_util.unpack_list(reader, ofp.instruction_id.instruction_id.unpack)
return obj
def __eq__(self, other):
@@ -3349,8 +3384,8 @@
assert(_type == 8)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.oxm_ids = loxi.generic_util.unpack_list(reader, common.uint32.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.oxm_ids = loxi.generic_util.unpack_list(reader, ofp.common.uint32.unpack)
return obj
def __eq__(self, other):
@@ -3396,8 +3431,8 @@
assert(_type == 2)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.next_table_ids = loxi.generic_util.unpack_list(reader, common.uint8.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.next_table_ids = loxi.generic_util.unpack_list(reader, ofp.common.uint8.unpack)
return obj
def __eq__(self, other):
@@ -3443,8 +3478,8 @@
assert(_type == 3)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.next_table_ids = loxi.generic_util.unpack_list(reader, common.uint8.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.next_table_ids = loxi.generic_util.unpack_list(reader, ofp.common.uint8.unpack)
return obj
def __eq__(self, other):
@@ -3490,8 +3525,8 @@
assert(_type == 10)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.oxm_ids = loxi.generic_util.unpack_list(reader, common.uint32.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.oxm_ids = loxi.generic_util.unpack_list(reader, ofp.common.uint32.unpack)
return obj
def __eq__(self, other):
@@ -3537,8 +3572,8 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.action_ids = loxi.generic_util.unpack_list(reader, action_id.action_id.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.action_ids = loxi.generic_util.unpack_list(reader, ofp.action_id.action_id.unpack)
return obj
def __eq__(self, other):
@@ -3584,8 +3619,8 @@
assert(_type == 5)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.action_ids = loxi.generic_util.unpack_list(reader, action_id.action_id.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.action_ids = loxi.generic_util.unpack_list(reader, ofp.action_id.action_id.unpack)
return obj
def __eq__(self, other):
@@ -3631,8 +3666,8 @@
assert(_type == 12)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.oxm_ids = loxi.generic_util.unpack_list(reader, common.uint32.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.oxm_ids = loxi.generic_util.unpack_list(reader, ofp.common.uint32.unpack)
return obj
def __eq__(self, other):
@@ -3678,8 +3713,8 @@
assert(_type == 13)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.oxm_ids = loxi.generic_util.unpack_list(reader, common.uint32.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.oxm_ids = loxi.generic_util.unpack_list(reader, ofp.common.uint32.unpack)
return obj
def __eq__(self, other):
@@ -3752,7 +3787,7 @@
obj = table_features()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
obj.table_id = reader.read("!B")[0]
reader.skip(5)
obj.name = reader.read("!32s")[0].rstrip("\x00")
@@ -3760,7 +3795,7 @@
obj.metadata_write = reader.read("!Q")[0]
obj.config = reader.read("!L")[0]
obj.max_entries = reader.read("!L")[0]
- obj.properties = loxi.generic_util.unpack_list(reader, common.table_feature_prop.unpack)
+ obj.properties = loxi.generic_util.unpack_list(reader, ofp.common.table_feature_prop.unpack)
return obj
def __eq__(self, other):
diff --git a/src/python/loxi/of13/const.py b/src/python/loxi/of13/const.py
index 8432825..2465a6e 100644
--- a/src/python/loxi/of13/const.py
+++ b/src/python/loxi/of13/const.py
@@ -284,6 +284,15 @@
5: 'OFP_BSN_LOGLEVEL_TRACE',
}
+# Identifiers from group ofp_bsn_lua_upload_flags
+OFP_BSN_LUA_UPLOAD_MORE = 1
+OFP_BSN_LUA_UPLOAD_FORCE = 2
+
+ofp_bsn_lua_upload_flags_map = {
+ 1: 'OFP_BSN_LUA_UPLOAD_MORE',
+ 2: 'OFP_BSN_LUA_UPLOAD_FORCE',
+}
+
# Identifiers from group ofp_bsn_pktin_flag
OFP_BSN_PKTIN_FLAG_PDU = 1
OFP_BSN_PKTIN_FLAG_NEW_HOST = 2
@@ -297,6 +306,7 @@
OFP_BSN_PKTIN_FLAG_L3_CPU = 512
OFP_BSN_PKTIN_FLAG_INGRESS_ACL = 1024
OFP_BSN_PKTIN_FLAG_SFLOW = 2048
+OFP_BSN_PKTIN_FLAG_ARP_CACHE = 4096
ofp_bsn_pktin_flag_map = {
1: 'OFP_BSN_PKTIN_FLAG_PDU',
@@ -311,6 +321,7 @@
512: 'OFP_BSN_PKTIN_FLAG_L3_CPU',
1024: 'OFP_BSN_PKTIN_FLAG_INGRESS_ACL',
2048: 'OFP_BSN_PKTIN_FLAG_SFLOW',
+ 4096: 'OFP_BSN_PKTIN_FLAG_ARP_CACHE',
}
# Identifiers from group ofp_bsn_port_counter
diff --git a/src/python/loxi/of13/instruction.py b/src/python/loxi/of13/instruction.py
index 49c7d1c..879b246 100644
--- a/src/python/loxi/of13/instruction.py
+++ b/src/python/loxi/of13/instruction.py
@@ -8,19 +8,12 @@
import struct
import loxi
-import const
-import bsn_tlv
-import meter_band
-import instruction
-import oxm
-import common
-import instruction_id
-import action
-import message
-import action_id
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of13']
+
class instruction(loxi.OFObject):
subtypes = {}
@@ -51,7 +44,7 @@
obj.type = reader.read("!H")[0]
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -95,9 +88,9 @@
assert(_type == 4)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
- obj.actions = loxi.generic_util.unpack_list(reader, action.action.unpack)
+ obj.actions = loxi.generic_util.unpack_list(reader, ofp.action.action.unpack)
return obj
def __eq__(self, other):
@@ -155,7 +148,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.experimenter = reader.read("!L")[0]
obj.data = str(reader.read_all())
return obj
@@ -214,7 +207,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
obj.subtype = reader.read("!L")[0]
@@ -262,7 +255,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -310,7 +303,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -358,7 +351,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -406,7 +399,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -454,7 +447,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -502,7 +495,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -550,7 +543,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -598,7 +591,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -646,7 +639,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -694,7 +687,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -742,7 +735,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -790,7 +783,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -834,7 +827,7 @@
assert(_type == 5)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -879,7 +872,7 @@
assert(_type == 1)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.table_id = reader.read("!B")[0]
reader.skip(3)
return obj
@@ -927,7 +920,7 @@
assert(_type == 6)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.meter_id = reader.read("!L")[0]
return obj
@@ -975,9 +968,9 @@
assert(_type == 3)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
- obj.actions = loxi.generic_util.unpack_list(reader, action.action.unpack)
+ obj.actions = loxi.generic_util.unpack_list(reader, ofp.action.action.unpack)
return obj
def __eq__(self, other):
@@ -1029,7 +1022,7 @@
assert(_type == 2)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
obj.metadata = reader.read("!Q")[0]
obj.metadata_mask = reader.read("!Q")[0]
diff --git a/src/python/loxi/of13/instruction_id.py b/src/python/loxi/of13/instruction_id.py
index 3b88750..a6c53a9 100644
--- a/src/python/loxi/of13/instruction_id.py
+++ b/src/python/loxi/of13/instruction_id.py
@@ -8,19 +8,12 @@
import struct
import loxi
-import const
-import bsn_tlv
-import meter_band
-import instruction
-import oxm
-import common
-import instruction_id
-import action
-import message
-import action_id
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of13']
+
class instruction_id(loxi.OFObject):
subtypes = {}
@@ -51,7 +44,7 @@
obj.type = reader.read("!H")[0]
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -89,7 +82,7 @@
assert(_type == 4)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -139,7 +132,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.experimenter = reader.read("!L")[0]
return obj
@@ -193,7 +186,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
obj.subtype = reader.read("!L")[0]
@@ -239,7 +232,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -285,7 +278,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -331,7 +324,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -377,7 +370,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -423,7 +416,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -469,7 +462,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -515,7 +508,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -561,7 +554,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -607,7 +600,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -653,7 +646,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -699,7 +692,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -745,7 +738,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -787,7 +780,7 @@
assert(_type == 5)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -825,7 +818,7 @@
assert(_type == 1)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -863,7 +856,7 @@
assert(_type == 6)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -901,7 +894,7 @@
assert(_type == 3)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -939,7 +932,7 @@
assert(_type == 2)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
diff --git a/src/python/loxi/of13/message.py b/src/python/loxi/of13/message.py
index db67eff..269d5a2 100644
--- a/src/python/loxi/of13/message.py
+++ b/src/python/loxi/of13/message.py
@@ -8,19 +8,12 @@
import struct
import loxi
-import const
-import bsn_tlv
-import meter_band
-import instruction
-import oxm
-import common
-import instruction_id
-import action
-import message
-import action_id
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of13']
+
class message(loxi.OFObject):
subtypes = {}
@@ -60,7 +53,7 @@
obj.type = reader.read("!B")[0]
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
return obj
@@ -132,7 +125,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.stats_type = reader.read("!H")[0]
obj.flags = reader.read("!H")[0]
@@ -218,7 +211,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 2)
@@ -314,7 +307,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.stats_type = reader.read("!H")[0]
obj.flags = reader.read("!H")[0]
@@ -383,7 +376,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
return
def pack(self):
@@ -416,7 +409,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 2)
@@ -429,7 +422,7 @@
reader.skip(4)
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
- obj.match = common.match.unpack(reader)
+ obj.match = ofp.match.unpack(reader)
return obj
def __eq__(self, other):
@@ -540,7 +533,7 @@
assert(_type == 27)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.packet_in_mask_equal_master = reader.read("!L")[0]
obj.packet_in_mask_slave = reader.read("!L")[0]
@@ -654,7 +647,7 @@
assert(_type == 26)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.packet_in_mask_equal_master = reader.read("!L")[0]
obj.packet_in_mask_slave = reader.read("!L")[0]
@@ -768,7 +761,7 @@
assert(_type == 28)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.packet_in_mask_equal_master = reader.read("!L")[0]
obj.packet_in_mask_slave = reader.read("!L")[0]
@@ -864,7 +857,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.err_type = reader.read("!H")[0]
return obj
@@ -932,7 +925,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 2)
@@ -1010,7 +1003,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 3)
@@ -1088,7 +1081,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 4)
@@ -1166,7 +1159,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 1)
@@ -1232,7 +1225,7 @@
assert(_type == 21)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
return obj
@@ -1286,7 +1279,7 @@
assert(_type == 20)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
return obj
@@ -1362,7 +1355,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.experimenter = reader.read("!L")[0]
obj.subtype = reader.read("!L")[0]
@@ -1442,7 +1435,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1515,7 +1508,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1593,7 +1586,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1660,7 +1653,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1727,7 +1720,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1794,7 +1787,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1866,7 +1859,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1943,7 +1936,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -2015,13 +2008,13 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 57)
- obj.connections = loxi.generic_util.unpack_list(reader, common.bsn_controller_connection.unpack)
+ obj.connections = loxi.generic_util.unpack_list(reader, ofp.common.bsn_controller_connection.unpack)
return obj
def __eq__(self, other):
@@ -2082,7 +2075,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -2165,7 +2158,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -2256,7 +2249,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -2339,7 +2332,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -2349,7 +2342,7 @@
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 13)
- obj.entries = loxi.generic_util.unpack_list(reader, common.bsn_debug_counter_desc_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.bsn_debug_counter_desc_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -2435,7 +2428,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -2526,7 +2519,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -2604,7 +2597,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -2687,7 +2680,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -2697,7 +2690,7 @@
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 12)
- obj.entries = loxi.generic_util.unpack_list(reader, common.bsn_debug_counter_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.bsn_debug_counter_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -2770,7 +2763,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -2853,7 +2846,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -2863,7 +2856,7 @@
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 10)
- obj.entries = loxi.generic_util.unpack_list(reader, common.bsn_flow_checksum_bucket_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.bsn_flow_checksum_bucket_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -2941,7 +2934,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -3008,7 +3001,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
return
def pack(self):
@@ -3037,7 +3030,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -3047,7 +3040,7 @@
obj.priority = reader.read("!H")[0]
obj.table_id = reader.read("!B")[0]
reader.skip(5)
- obj.match = common.match.unpack(reader)
+ obj.match = ofp.match.unpack(reader)
return obj
def __eq__(self, other):
@@ -3125,7 +3118,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -3192,7 +3185,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -3264,7 +3257,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -3341,7 +3334,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -3374,6 +3367,192 @@
bsn_header.subtypes[36] = bsn_flow_idle_enable_set_request
+class bsn_generic_stats_reply(bsn_stats_reply):
+ version = 4
+ type = 19
+ stats_type = 65535
+ experimenter = 6035143
+ subtype = 16
+
+ def __init__(self, xid=None, flags=None, entries=None):
+ if xid != None:
+ self.xid = xid
+ else:
+ self.xid = None
+ if flags != None:
+ self.flags = flags
+ else:
+ self.flags = 0
+ if entries != None:
+ self.entries = entries
+ else:
+ self.entries = []
+ return
+
+ def pack(self):
+ packed = []
+ packed.append(struct.pack("!B", self.version))
+ packed.append(struct.pack("!B", self.type))
+ packed.append(struct.pack("!H", 0)) # placeholder for length at index 2
+ packed.append(struct.pack("!L", self.xid))
+ packed.append(struct.pack("!H", self.stats_type))
+ packed.append(struct.pack("!H", self.flags))
+ packed.append('\x00' * 4)
+ packed.append(struct.pack("!L", self.experimenter))
+ packed.append(struct.pack("!L", self.subtype))
+ packed.append(loxi.generic_util.pack_list(self.entries))
+ length = sum([len(x) for x in packed])
+ packed[2] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = bsn_generic_stats_reply()
+ _version = reader.read("!B")[0]
+ assert(_version == 4)
+ _type = reader.read("!B")[0]
+ assert(_type == 19)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ obj.xid = reader.read("!L")[0]
+ _stats_type = reader.read("!H")[0]
+ assert(_stats_type == 65535)
+ obj.flags = reader.read("!H")[0]
+ reader.skip(4)
+ _experimenter = reader.read("!L")[0]
+ assert(_experimenter == 6035143)
+ _subtype = reader.read("!L")[0]
+ assert(_subtype == 16)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.bsn_generic_stats_entry.unpack)
+ return obj
+
+ def __eq__(self, other):
+ if type(self) != type(other): return False
+ if self.xid != other.xid: return False
+ if self.flags != other.flags: return False
+ if self.entries != other.entries: return False
+ return True
+
+ def pretty_print(self, q):
+ q.text("bsn_generic_stats_reply {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("xid = ");
+ if self.xid != None:
+ q.text("%#x" % self.xid)
+ else:
+ q.text('None')
+ q.text(","); q.breakable()
+ q.text("flags = ");
+ q.text("%#x" % self.flags)
+ q.text(","); q.breakable()
+ q.text("entries = ");
+ q.pp(self.entries)
+ q.breakable()
+ q.text('}')
+
+bsn_stats_reply.subtypes[16] = bsn_generic_stats_reply
+
+class bsn_generic_stats_request(bsn_stats_request):
+ version = 4
+ type = 18
+ stats_type = 65535
+ experimenter = 6035143
+ subtype = 16
+
+ def __init__(self, xid=None, flags=None, name=None, tlvs=None):
+ if xid != None:
+ self.xid = xid
+ else:
+ self.xid = None
+ if flags != None:
+ self.flags = flags
+ else:
+ self.flags = 0
+ if name != None:
+ self.name = name
+ else:
+ self.name = ""
+ if tlvs != None:
+ self.tlvs = tlvs
+ else:
+ self.tlvs = []
+ return
+
+ def pack(self):
+ packed = []
+ packed.append(struct.pack("!B", self.version))
+ packed.append(struct.pack("!B", self.type))
+ packed.append(struct.pack("!H", 0)) # placeholder for length at index 2
+ packed.append(struct.pack("!L", self.xid))
+ packed.append(struct.pack("!H", self.stats_type))
+ packed.append(struct.pack("!H", self.flags))
+ packed.append('\x00' * 4)
+ packed.append(struct.pack("!L", self.experimenter))
+ packed.append(struct.pack("!L", self.subtype))
+ packed.append(struct.pack("!64s", self.name))
+ packed.append(loxi.generic_util.pack_list(self.tlvs))
+ length = sum([len(x) for x in packed])
+ packed[2] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = bsn_generic_stats_request()
+ _version = reader.read("!B")[0]
+ assert(_version == 4)
+ _type = reader.read("!B")[0]
+ assert(_type == 18)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ obj.xid = reader.read("!L")[0]
+ _stats_type = reader.read("!H")[0]
+ assert(_stats_type == 65535)
+ obj.flags = reader.read("!H")[0]
+ reader.skip(4)
+ _experimenter = reader.read("!L")[0]
+ assert(_experimenter == 6035143)
+ _subtype = reader.read("!L")[0]
+ assert(_subtype == 16)
+ obj.name = reader.read("!64s")[0].rstrip("\x00")
+ obj.tlvs = loxi.generic_util.unpack_list(reader, ofp.bsn_tlv.bsn_tlv.unpack)
+ return obj
+
+ def __eq__(self, other):
+ if type(self) != type(other): return False
+ if self.xid != other.xid: return False
+ if self.flags != other.flags: return False
+ if self.name != other.name: return False
+ if self.tlvs != other.tlvs: return False
+ return True
+
+ def pretty_print(self, q):
+ q.text("bsn_generic_stats_request {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("xid = ");
+ if self.xid != None:
+ q.text("%#x" % self.xid)
+ else:
+ q.text('None')
+ q.text(","); q.breakable()
+ q.text("flags = ");
+ q.text("%#x" % self.flags)
+ q.text(","); q.breakable()
+ q.text("name = ");
+ q.pp(self.name)
+ q.text(","); q.breakable()
+ q.text("tlvs = ");
+ q.pp(self.tlvs)
+ q.breakable()
+ q.text('}')
+
+bsn_stats_request.subtypes[16] = bsn_generic_stats_request
+
class bsn_gentable_bucket_stats_reply(bsn_stats_reply):
version = 4
type = 19
@@ -3421,7 +3600,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -3431,7 +3610,7 @@
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 5)
- obj.entries = loxi.generic_util.unpack_list(reader, common.bsn_gentable_bucket_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.bsn_gentable_bucket_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -3509,7 +3688,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -3600,7 +3779,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -3694,7 +3873,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -3785,7 +3964,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -3795,7 +3974,7 @@
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.bsn_gentable_desc_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.bsn_gentable_desc_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -3868,7 +4047,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -3960,7 +4139,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -3969,8 +4148,8 @@
obj.table_id = reader.read("!H")[0]
_key_length = reader.read("!H")[0]
obj.checksum = util.unpack_checksum_128(reader)
- obj.key = loxi.generic_util.unpack_list(reader.slice(_key_length), bsn_tlv.bsn_tlv.unpack)
- obj.value = loxi.generic_util.unpack_list(reader, bsn_tlv.bsn_tlv.unpack)
+ obj.key = loxi.generic_util.unpack_list(reader.slice(_key_length), ofp.bsn_tlv.bsn_tlv.unpack)
+ obj.value = loxi.generic_util.unpack_list(reader, ofp.bsn_tlv.bsn_tlv.unpack)
return obj
def __eq__(self, other):
@@ -4053,14 +4232,14 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 47)
obj.table_id = reader.read("!H")[0]
- obj.key = loxi.generic_util.unpack_list(reader, bsn_tlv.bsn_tlv.unpack)
+ obj.key = loxi.generic_util.unpack_list(reader, ofp.bsn_tlv.bsn_tlv.unpack)
return obj
def __eq__(self, other):
@@ -4138,7 +4317,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -4148,7 +4327,7 @@
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 2)
- obj.entries = loxi.generic_util.unpack_list(reader, common.bsn_gentable_entry_desc_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.bsn_gentable_entry_desc_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -4237,7 +4416,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -4336,7 +4515,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -4346,7 +4525,7 @@
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 3)
- obj.entries = loxi.generic_util.unpack_list(reader, common.bsn_gentable_entry_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.bsn_gentable_entry_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -4435,7 +4614,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -4532,7 +4711,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -4618,7 +4797,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -4628,7 +4807,7 @@
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 7)
- obj.entries = loxi.generic_util.unpack_list(reader, common.bsn_gentable_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.bsn_gentable_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -4701,7 +4880,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -4776,13 +4955,13 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 10)
- obj.interfaces = loxi.generic_util.unpack_list(reader, common.bsn_interface.unpack)
+ obj.interfaces = loxi.generic_util.unpack_list(reader, ofp.common.bsn_interface.unpack)
return obj
def __eq__(self, other):
@@ -4843,7 +5022,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -4911,7 +5090,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -4985,7 +5164,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -5058,7 +5237,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -5125,7 +5304,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -5205,7 +5384,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -5293,7 +5472,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -5424,7 +5603,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -5560,7 +5739,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -5570,7 +5749,7 @@
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 1)
- obj.entries = loxi.generic_util.unpack_list(reader, common.bsn_lacp_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.bsn_lacp_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -5643,7 +5822,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -5723,7 +5902,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -5761,6 +5940,314 @@
bsn_header.subtypes[63] = bsn_log
+class bsn_lua_command_reply(bsn_header):
+ version = 4
+ type = 4
+ experimenter = 6035143
+ subtype = 66
+
+ def __init__(self, xid=None, data=None):
+ if xid != None:
+ self.xid = xid
+ else:
+ self.xid = None
+ if data != None:
+ self.data = data
+ else:
+ self.data = ''
+ return
+
+ def pack(self):
+ packed = []
+ packed.append(struct.pack("!B", self.version))
+ packed.append(struct.pack("!B", self.type))
+ packed.append(struct.pack("!H", 0)) # placeholder for length at index 2
+ packed.append(struct.pack("!L", self.xid))
+ packed.append(struct.pack("!L", self.experimenter))
+ packed.append(struct.pack("!L", self.subtype))
+ packed.append(self.data)
+ length = sum([len(x) for x in packed])
+ packed[2] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = bsn_lua_command_reply()
+ _version = reader.read("!B")[0]
+ assert(_version == 4)
+ _type = reader.read("!B")[0]
+ assert(_type == 4)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ obj.xid = reader.read("!L")[0]
+ _experimenter = reader.read("!L")[0]
+ assert(_experimenter == 6035143)
+ _subtype = reader.read("!L")[0]
+ assert(_subtype == 66)
+ obj.data = str(reader.read_all())
+ return obj
+
+ def __eq__(self, other):
+ if type(self) != type(other): return False
+ if self.xid != other.xid: return False
+ if self.data != other.data: return False
+ return True
+
+ def pretty_print(self, q):
+ q.text("bsn_lua_command_reply {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("xid = ");
+ if self.xid != None:
+ q.text("%#x" % self.xid)
+ else:
+ q.text('None')
+ q.text(","); q.breakable()
+ q.text("data = ");
+ q.pp(self.data)
+ q.breakable()
+ q.text('}')
+
+bsn_header.subtypes[66] = bsn_lua_command_reply
+
+class bsn_lua_command_request(bsn_header):
+ version = 4
+ type = 4
+ experimenter = 6035143
+ subtype = 65
+
+ def __init__(self, xid=None, data=None):
+ if xid != None:
+ self.xid = xid
+ else:
+ self.xid = None
+ if data != None:
+ self.data = data
+ else:
+ self.data = ''
+ return
+
+ def pack(self):
+ packed = []
+ packed.append(struct.pack("!B", self.version))
+ packed.append(struct.pack("!B", self.type))
+ packed.append(struct.pack("!H", 0)) # placeholder for length at index 2
+ packed.append(struct.pack("!L", self.xid))
+ packed.append(struct.pack("!L", self.experimenter))
+ packed.append(struct.pack("!L", self.subtype))
+ packed.append(self.data)
+ length = sum([len(x) for x in packed])
+ packed[2] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = bsn_lua_command_request()
+ _version = reader.read("!B")[0]
+ assert(_version == 4)
+ _type = reader.read("!B")[0]
+ assert(_type == 4)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ obj.xid = reader.read("!L")[0]
+ _experimenter = reader.read("!L")[0]
+ assert(_experimenter == 6035143)
+ _subtype = reader.read("!L")[0]
+ assert(_subtype == 65)
+ obj.data = str(reader.read_all())
+ return obj
+
+ def __eq__(self, other):
+ if type(self) != type(other): return False
+ if self.xid != other.xid: return False
+ if self.data != other.data: return False
+ return True
+
+ def pretty_print(self, q):
+ q.text("bsn_lua_command_request {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("xid = ");
+ if self.xid != None:
+ q.text("%#x" % self.xid)
+ else:
+ q.text('None')
+ q.text(","); q.breakable()
+ q.text("data = ");
+ q.pp(self.data)
+ q.breakable()
+ q.text('}')
+
+bsn_header.subtypes[65] = bsn_lua_command_request
+
+class bsn_lua_notification(bsn_header):
+ version = 4
+ type = 4
+ experimenter = 6035143
+ subtype = 67
+
+ def __init__(self, xid=None, data=None):
+ if xid != None:
+ self.xid = xid
+ else:
+ self.xid = None
+ if data != None:
+ self.data = data
+ else:
+ self.data = ''
+ return
+
+ def pack(self):
+ packed = []
+ packed.append(struct.pack("!B", self.version))
+ packed.append(struct.pack("!B", self.type))
+ packed.append(struct.pack("!H", 0)) # placeholder for length at index 2
+ packed.append(struct.pack("!L", self.xid))
+ packed.append(struct.pack("!L", self.experimenter))
+ packed.append(struct.pack("!L", self.subtype))
+ packed.append(self.data)
+ length = sum([len(x) for x in packed])
+ packed[2] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = bsn_lua_notification()
+ _version = reader.read("!B")[0]
+ assert(_version == 4)
+ _type = reader.read("!B")[0]
+ assert(_type == 4)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ obj.xid = reader.read("!L")[0]
+ _experimenter = reader.read("!L")[0]
+ assert(_experimenter == 6035143)
+ _subtype = reader.read("!L")[0]
+ assert(_subtype == 67)
+ obj.data = str(reader.read_all())
+ return obj
+
+ def __eq__(self, other):
+ if type(self) != type(other): return False
+ if self.xid != other.xid: return False
+ if self.data != other.data: return False
+ return True
+
+ def pretty_print(self, q):
+ q.text("bsn_lua_notification {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("xid = ");
+ if self.xid != None:
+ q.text("%#x" % self.xid)
+ else:
+ q.text('None')
+ q.text(","); q.breakable()
+ q.text("data = ");
+ q.pp(self.data)
+ q.breakable()
+ q.text('}')
+
+bsn_header.subtypes[67] = bsn_lua_notification
+
+class bsn_lua_upload(bsn_header):
+ version = 4
+ type = 4
+ experimenter = 6035143
+ subtype = 64
+
+ def __init__(self, xid=None, flags=None, filename=None, data=None):
+ if xid != None:
+ self.xid = xid
+ else:
+ self.xid = None
+ if flags != None:
+ self.flags = flags
+ else:
+ self.flags = 0
+ if filename != None:
+ self.filename = filename
+ else:
+ self.filename = ""
+ if data != None:
+ self.data = data
+ else:
+ self.data = ''
+ return
+
+ def pack(self):
+ packed = []
+ packed.append(struct.pack("!B", self.version))
+ packed.append(struct.pack("!B", self.type))
+ packed.append(struct.pack("!H", 0)) # placeholder for length at index 2
+ packed.append(struct.pack("!L", self.xid))
+ packed.append(struct.pack("!L", self.experimenter))
+ packed.append(struct.pack("!L", self.subtype))
+ packed.append(struct.pack("!H", self.flags))
+ packed.append(struct.pack("!64s", self.filename))
+ packed.append(self.data)
+ length = sum([len(x) for x in packed])
+ packed[2] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = bsn_lua_upload()
+ _version = reader.read("!B")[0]
+ assert(_version == 4)
+ _type = reader.read("!B")[0]
+ assert(_type == 4)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ obj.xid = reader.read("!L")[0]
+ _experimenter = reader.read("!L")[0]
+ assert(_experimenter == 6035143)
+ _subtype = reader.read("!L")[0]
+ assert(_subtype == 64)
+ obj.flags = reader.read("!H")[0]
+ obj.filename = reader.read("!64s")[0].rstrip("\x00")
+ obj.data = str(reader.read_all())
+ return obj
+
+ def __eq__(self, other):
+ if type(self) != type(other): return False
+ if self.xid != other.xid: return False
+ if self.flags != other.flags: return False
+ if self.filename != other.filename: return False
+ if self.data != other.data: return False
+ return True
+
+ def pretty_print(self, q):
+ q.text("bsn_lua_upload {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("xid = ");
+ if self.xid != None:
+ q.text("%#x" % self.xid)
+ else:
+ q.text('None')
+ q.text(","); q.breakable()
+ q.text("flags = ");
+ q.text("%#x" % self.flags)
+ q.text(","); q.breakable()
+ q.text("filename = ");
+ q.pp(self.filename)
+ q.text(","); q.breakable()
+ q.text("data = ");
+ q.pp(self.data)
+ q.breakable()
+ q.text('}')
+
+bsn_header.subtypes[64] = bsn_lua_upload
+
class bsn_pdu_rx_reply(bsn_header):
version = 4
type = 4
@@ -5810,7 +6297,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -5908,7 +6395,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -6001,7 +6488,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -6088,7 +6575,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -6186,7 +6673,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -6282,7 +6769,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -6292,7 +6779,7 @@
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 8)
- obj.entries = loxi.generic_util.unpack_list(reader, common.bsn_port_counter_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.bsn_port_counter_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -6370,7 +6857,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -6461,7 +6948,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -6549,7 +7036,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -6626,7 +7113,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -6703,7 +7190,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -6811,7 +7298,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -6915,7 +7402,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -6988,7 +7475,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -7081,7 +7568,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -7174,7 +7661,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -7246,7 +7733,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -7326,7 +7813,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -7336,7 +7823,7 @@
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 6)
- obj.entries = loxi.generic_util.unpack_list(reader, common.bsn_switch_pipeline_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.bsn_switch_pipeline_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -7409,7 +7896,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -7492,7 +7979,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -7502,7 +7989,7 @@
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 11)
- obj.entries = loxi.generic_util.unpack_list(reader, common.bsn_table_checksum_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.bsn_table_checksum_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -7575,7 +8062,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -7657,7 +8144,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -7736,7 +8223,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -7803,7 +8290,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -7875,7 +8362,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -7927,7 +8414,7 @@
if vport != None:
self.vport = vport
else:
- self.vport = common.bsn_vport()
+ self.vport = ofp.bsn_vport()
return
def pack(self):
@@ -7952,13 +8439,13 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 15)
- obj.vport = common.bsn_vport.unpack(reader)
+ obj.vport = ofp.bsn_vport.unpack(reader)
return obj
def __eq__(self, other):
@@ -8024,7 +8511,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -8096,7 +8583,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -8176,7 +8663,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -8186,7 +8673,7 @@
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 9)
- obj.entries = loxi.generic_util.unpack_list(reader, common.bsn_vlan_counter_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.bsn_vlan_counter_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -8264,7 +8751,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -8352,7 +8839,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -8362,7 +8849,7 @@
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 15)
- obj.entries = loxi.generic_util.unpack_list(reader, common.bsn_vrf_counter_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.bsn_vrf_counter_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -8440,7 +8927,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -8544,7 +9031,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 0)
@@ -8639,7 +9126,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 0)
@@ -8706,7 +9193,7 @@
assert(_type == 3)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.data = str(reader.read_all())
return obj
@@ -8770,7 +9257,7 @@
assert(_type == 2)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.data = str(reader.read_all())
return obj
@@ -8846,7 +9333,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 65535)
@@ -8948,7 +9435,7 @@
assert(_type == 6)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.datapath_id = reader.read("!Q")[0]
obj.n_buffers = reader.read("!L")[0]
@@ -9033,7 +9520,7 @@
assert(_type == 5)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
return obj
@@ -9115,7 +9602,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if instructions != None:
self.instructions = instructions
else:
@@ -9160,7 +9647,7 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
@@ -9174,8 +9661,8 @@
obj.out_group = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
reader.skip(2)
- obj.match = common.match.unpack(reader)
- obj.instructions = loxi.generic_util.unpack_list(reader, instruction.instruction.unpack)
+ obj.match = ofp.match.unpack(reader)
+ obj.instructions = loxi.generic_util.unpack_list(reader, ofp.instruction.instruction.unpack)
return obj
def __eq__(self, other):
@@ -9300,7 +9787,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if instructions != None:
self.instructions = instructions
else:
@@ -9340,7 +9827,7 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
@@ -9355,8 +9842,8 @@
obj.out_group = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
reader.skip(2)
- obj.match = common.match.unpack(reader)
- obj.instructions = loxi.generic_util.unpack_list(reader, instruction.instruction.unpack)
+ obj.match = ofp.match.unpack(reader)
+ obj.instructions = loxi.generic_util.unpack_list(reader, ofp.instruction.instruction.unpack)
return obj
def __eq__(self, other):
@@ -9480,7 +9967,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if instructions != None:
self.instructions = instructions
else:
@@ -9520,7 +10007,7 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
@@ -9535,8 +10022,8 @@
obj.out_group = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
reader.skip(2)
- obj.match = common.match.unpack(reader)
- obj.instructions = loxi.generic_util.unpack_list(reader, instruction.instruction.unpack)
+ obj.match = ofp.match.unpack(reader)
+ obj.instructions = loxi.generic_util.unpack_list(reader, ofp.instruction.instruction.unpack)
return obj
def __eq__(self, other):
@@ -9660,7 +10147,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if instructions != None:
self.instructions = instructions
else:
@@ -9700,7 +10187,7 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
@@ -9715,8 +10202,8 @@
obj.out_group = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
reader.skip(2)
- obj.match = common.match.unpack(reader)
- obj.instructions = loxi.generic_util.unpack_list(reader, instruction.instruction.unpack)
+ obj.match = ofp.match.unpack(reader)
+ obj.instructions = loxi.generic_util.unpack_list(reader, ofp.instruction.instruction.unpack)
return obj
def __eq__(self, other):
@@ -9829,7 +10316,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 5)
@@ -9918,7 +10405,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if instructions != None:
self.instructions = instructions
else:
@@ -9958,7 +10445,7 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
@@ -9973,8 +10460,8 @@
obj.out_group = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
reader.skip(2)
- obj.match = common.match.unpack(reader)
- obj.instructions = loxi.generic_util.unpack_list(reader, instruction.instruction.unpack)
+ obj.match = ofp.match.unpack(reader)
+ obj.instructions = loxi.generic_util.unpack_list(reader, ofp.instruction.instruction.unpack)
return obj
def __eq__(self, other):
@@ -10098,7 +10585,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if instructions != None:
self.instructions = instructions
else:
@@ -10138,7 +10625,7 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
@@ -10153,8 +10640,8 @@
obj.out_group = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
reader.skip(2)
- obj.match = common.match.unpack(reader)
- obj.instructions = loxi.generic_util.unpack_list(reader, instruction.instruction.unpack)
+ obj.match = ofp.match.unpack(reader)
+ obj.instructions = loxi.generic_util.unpack_list(reader, ofp.instruction.instruction.unpack)
return obj
def __eq__(self, other):
@@ -10277,7 +10764,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
return
def pack(self):
@@ -10310,7 +10797,7 @@
assert(_type == 11)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.cookie = reader.read("!Q")[0]
obj.priority = reader.read("!H")[0]
@@ -10322,7 +10809,7 @@
obj.hard_timeout = reader.read("!H")[0]
obj.packet_count = reader.read("!Q")[0]
obj.byte_count = reader.read("!Q")[0]
- obj.match = common.match.unpack(reader)
+ obj.match = ofp.match.unpack(reader)
return obj
def __eq__(self, other):
@@ -10432,13 +10919,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 1)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.flow_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.flow_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -10506,7 +10993,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
return
def pack(self):
@@ -10539,7 +11026,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 1)
@@ -10552,7 +11039,7 @@
reader.skip(4)
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
- obj.match = common.match.unpack(reader)
+ obj.match = ofp.match.unpack(reader)
return obj
def __eq__(self, other):
@@ -10643,7 +11130,7 @@
assert(_type == 8)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
obj.miss_send_len = reader.read("!H")[0]
@@ -10707,7 +11194,7 @@
assert(_type == 7)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
return obj
@@ -10789,13 +11276,13 @@
assert(_type == 15)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.command = reader.read("!H")[0]
obj.group_type = reader.read("!B")[0]
reader.skip(1)
obj.group_id = reader.read("!L")[0]
- obj.buckets = loxi.generic_util.unpack_list(reader, common.bucket.unpack)
+ obj.buckets = loxi.generic_util.unpack_list(reader, ofp.common.bucket.unpack)
return obj
def __eq__(self, other):
@@ -10879,14 +11366,14 @@
assert(_type == 15)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_command = reader.read("!H")[0]
assert(_command == 0)
obj.group_type = reader.read("!B")[0]
reader.skip(1)
obj.group_id = reader.read("!L")[0]
- obj.buckets = loxi.generic_util.unpack_list(reader, common.bucket.unpack)
+ obj.buckets = loxi.generic_util.unpack_list(reader, ofp.common.bucket.unpack)
return obj
def __eq__(self, other):
@@ -10969,14 +11456,14 @@
assert(_type == 15)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_command = reader.read("!H")[0]
assert(_command == 2)
obj.group_type = reader.read("!B")[0]
reader.skip(1)
obj.group_id = reader.read("!L")[0]
- obj.buckets = loxi.generic_util.unpack_list(reader, common.bucket.unpack)
+ obj.buckets = loxi.generic_util.unpack_list(reader, ofp.common.bucket.unpack)
return obj
def __eq__(self, other):
@@ -11054,13 +11541,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 7)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.group_desc_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.group_desc_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -11129,7 +11616,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 7)
@@ -11249,7 +11736,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 8)
@@ -11369,7 +11856,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 8)
@@ -11443,7 +11930,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 6)
@@ -11527,14 +12014,14 @@
assert(_type == 15)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_command = reader.read("!H")[0]
assert(_command == 1)
obj.group_type = reader.read("!B")[0]
reader.skip(1)
obj.group_id = reader.read("!L")[0]
- obj.buckets = loxi.generic_util.unpack_list(reader, common.bucket.unpack)
+ obj.buckets = loxi.generic_util.unpack_list(reader, ofp.common.bucket.unpack)
return obj
def __eq__(self, other):
@@ -11612,13 +12099,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 6)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.group_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.group_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -11693,7 +12180,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 6)
@@ -11766,9 +12253,9 @@
assert(_type == 0)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
- obj.elements = loxi.generic_util.unpack_list(reader, common.hello_elem.unpack)
+ obj.elements = loxi.generic_util.unpack_list(reader, ofp.common.hello_elem.unpack)
return obj
def __eq__(self, other):
@@ -11837,7 +12324,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 0)
@@ -11916,13 +12403,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 10)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, meter_band.meter_band.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.meter_band.meter_band.unpack)
return obj
def __eq__(self, other):
@@ -11997,7 +12484,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 10)
@@ -12052,7 +12539,7 @@
if features != None:
self.features = features
else:
- self.features = common.meter_features()
+ self.features = ofp.meter_features()
return
def pack(self):
@@ -12078,13 +12565,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 11)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.features = common.meter_features.unpack(reader)
+ obj.features = ofp.meter_features.unpack(reader)
return obj
def __eq__(self, other):
@@ -12153,7 +12640,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 11)
@@ -12235,12 +12722,12 @@
assert(_type == 29)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.command = reader.read("!H")[0]
obj.flags = reader.read("!H")[0]
obj.meter_id = reader.read("!L")[0]
- obj.meters = loxi.generic_util.unpack_list(reader, meter_band.meter_band.unpack)
+ obj.meters = loxi.generic_util.unpack_list(reader, ofp.meter_band.meter_band.unpack)
return obj
def __eq__(self, other):
@@ -12321,7 +12808,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 12)
@@ -12400,13 +12887,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 9)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.meter_stats.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.meter_stats.unpack)
return obj
def __eq__(self, other):
@@ -12481,7 +12968,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 9)
@@ -12563,7 +13050,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 8992)
@@ -12623,7 +13110,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if data != None:
self.data = data
else:
@@ -12657,14 +13144,14 @@
assert(_type == 10)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.buffer_id = reader.read("!L")[0]
obj.total_len = reader.read("!H")[0]
obj.reason = reader.read("!B")[0]
obj.table_id = reader.read("!B")[0]
obj.cookie = reader.read("!Q")[0]
- obj.match = common.match.unpack(reader)
+ obj.match = ofp.match.unpack(reader)
reader.skip(2)
obj.data = str(reader.read_all())
return obj
@@ -12770,13 +13257,13 @@
assert(_type == 13)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.buffer_id = reader.read("!L")[0]
obj.in_port = util.unpack_port_no(reader)
_actions_len = reader.read("!H")[0]
reader.skip(6)
- obj.actions = loxi.generic_util.unpack_list(reader.slice(_actions_len), action.action.unpack)
+ obj.actions = loxi.generic_util.unpack_list(reader.slice(_actions_len), ofp.action.action.unpack)
obj.data = str(reader.read_all())
return obj
@@ -12859,13 +13346,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 13)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.port_desc.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.port_desc.unpack)
return obj
def __eq__(self, other):
@@ -12934,7 +13421,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 13)
@@ -13024,7 +13511,7 @@
assert(_type == 16)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.port_no = util.unpack_port_no(reader)
reader.skip(4)
@@ -13118,7 +13605,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 7)
@@ -13197,13 +13684,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 4)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.port_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.port_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -13278,7 +13765,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 4)
@@ -13332,7 +13819,7 @@
if desc != None:
self.desc = desc
else:
- self.desc = common.port_desc()
+ self.desc = ofp.port_desc()
return
def pack(self):
@@ -13357,11 +13844,11 @@
assert(_type == 12)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.reason = reader.read("!B")[0]
reader.skip(7)
- obj.desc = common.port_desc.unpack(reader)
+ obj.desc = ofp.port_desc.unpack(reader)
return obj
def __eq__(self, other):
@@ -13433,11 +13920,11 @@
assert(_type == 23)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.port = util.unpack_port_no(reader)
reader.skip(4)
- obj.queues = loxi.generic_util.unpack_list(reader, common.packet_queue.unpack)
+ obj.queues = loxi.generic_util.unpack_list(reader, ofp.common.packet_queue.unpack)
return obj
def __eq__(self, other):
@@ -13504,7 +13991,7 @@
assert(_type == 22)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.port = util.unpack_port_no(reader)
reader.skip(4)
@@ -13576,7 +14063,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 9)
@@ -13655,13 +14142,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 5)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.queue_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.queue_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -13740,7 +14227,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 5)
@@ -13823,7 +14310,7 @@
assert(_type == 25)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.role = reader.read("!L")[0]
reader.skip(4)
@@ -13899,7 +14386,7 @@
assert(_type == 24)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.role = reader.read("!L")[0]
reader.skip(4)
@@ -13976,7 +14463,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 11)
@@ -14052,7 +14539,7 @@
assert(_type == 9)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
obj.miss_send_len = reader.read("!H")[0]
@@ -14128,7 +14615,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 10)
@@ -14206,7 +14693,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 13)
@@ -14285,13 +14772,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 12)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.table_features.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.table_features.unpack)
return obj
def __eq__(self, other):
@@ -14365,13 +14852,13 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 12)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.table_features.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.table_features.unpack)
return obj
def __eq__(self, other):
@@ -14443,7 +14930,7 @@
assert(_type == 17)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.table_id = reader.read("!B")[0]
reader.skip(3)
@@ -14520,7 +15007,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 8)
@@ -14599,13 +15086,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 3)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.table_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.table_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -14674,7 +15161,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 3)
@@ -14714,8 +15201,8 @@
def parse_message(buf):
msg_ver, msg_type, msg_len, msg_xid = parse_header(buf)
- if msg_ver != const.OFP_VERSION and msg_type != const.OFPT_HELLO:
- raise loxi.ProtocolError("wrong OpenFlow version (expected %d, got %d)" % (const.OFP_VERSION, msg_ver))
+ if msg_ver != ofp.OFP_VERSION and msg_type != ofp.OFPT_HELLO:
+ raise loxi.ProtocolError("wrong OpenFlow version (expected %d, got %d)" % (ofp.OFP_VERSION, msg_ver))
if len(buf) != msg_len:
raise loxi.ProtocolError("incorrect message size")
return message.unpack(loxi.generic_util.OFReader(buf))
diff --git a/src/python/loxi/of13/meter_band.py b/src/python/loxi/of13/meter_band.py
index 18fc066..d21b7d0 100644
--- a/src/python/loxi/of13/meter_band.py
+++ b/src/python/loxi/of13/meter_band.py
@@ -8,19 +8,12 @@
import struct
import loxi
-import const
-import bsn_tlv
-import meter_band
-import instruction
-import oxm
-import common
-import instruction_id
-import action
-import message
-import action_id
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of13']
+
class meter_band(loxi.OFObject):
subtypes = {}
@@ -51,7 +44,7 @@
obj.type = reader.read("!H")[0]
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -100,7 +93,7 @@
assert(_type == 1)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.rate = reader.read("!L")[0]
obj.burst_size = reader.read("!L")[0]
reader.skip(4)
@@ -164,7 +157,7 @@
assert(_type == 2)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.rate = reader.read("!L")[0]
obj.burst_size = reader.read("!L")[0]
obj.prec_level = reader.read("!B")[0]
@@ -232,7 +225,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.rate = reader.read("!L")[0]
obj.burst_size = reader.read("!L")[0]
obj.experimenter = reader.read("!L")[0]
diff --git a/src/python/loxi/of13/oxm.py b/src/python/loxi/of13/oxm.py
index ea56d6e..603afc3 100644
--- a/src/python/loxi/of13/oxm.py
+++ b/src/python/loxi/of13/oxm.py
@@ -8,19 +8,12 @@
import struct
import loxi
-import const
-import bsn_tlv
-import meter_band
-import instruction
-import oxm
-import common
-import instruction_id
-import action
-import message
-import action_id
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of13']
+
class oxm(loxi.OFObject):
subtypes = {}
@@ -798,6 +791,190 @@
oxm.subtypes[196896] = bsn_in_ports_128_masked
+class bsn_in_ports_512(oxm):
+ type_len = 206400
+
+ def __init__(self, value=None):
+ if value != None:
+ self.value = value
+ else:
+ self.value = set()
+ return
+
+ def pack(self):
+ packed = []
+ packed.append(struct.pack("!L", self.type_len))
+ packed.append(util.pack_bitmap_512(self.value))
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = bsn_in_ports_512()
+ _type_len = reader.read("!L")[0]
+ assert(_type_len == 206400)
+ obj.value = util.unpack_bitmap_512(reader)
+ 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_in_ports_512 {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.pp(self.value)
+ q.breakable()
+ q.text('}')
+
+oxm.subtypes[206400] = bsn_in_ports_512
+
+class bsn_in_ports_512_masked(oxm):
+ type_len = 206720
+
+ def __init__(self, value=None, value_mask=None):
+ if value != None:
+ self.value = value
+ else:
+ self.value = set()
+ if value_mask != None:
+ self.value_mask = value_mask
+ else:
+ self.value_mask = set()
+ return
+
+ def pack(self):
+ packed = []
+ packed.append(struct.pack("!L", self.type_len))
+ packed.append(util.pack_bitmap_512(self.value))
+ packed.append(util.pack_bitmap_512(self.value_mask))
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = bsn_in_ports_512_masked()
+ _type_len = reader.read("!L")[0]
+ assert(_type_len == 206720)
+ obj.value = util.unpack_bitmap_512(reader)
+ obj.value_mask = util.unpack_bitmap_512(reader)
+ 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_in_ports_512_masked {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.pp(self.value)
+ q.text(","); q.breakable()
+ q.text("value_mask = ");
+ q.pp(self.value_mask)
+ q.breakable()
+ q.text('}')
+
+oxm.subtypes[206720] = bsn_in_ports_512_masked
+
+class bsn_ingress_port_group_id(oxm):
+ type_len = 206852
+
+ 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_ingress_port_group_id()
+ _type_len = reader.read("!L")[0]
+ assert(_type_len == 206852)
+ 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_ingress_port_group_id {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+oxm.subtypes[206852] = bsn_ingress_port_group_id
+
+class bsn_ingress_port_group_id_masked(oxm):
+ type_len = 207112
+
+ 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_ingress_port_group_id_masked()
+ _type_len = reader.read("!L")[0]
+ assert(_type_len == 207112)
+ 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_ingress_port_group_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[207112] = bsn_ingress_port_group_id_masked
+
class bsn_l2_cache_hit(oxm):
type_len = 205825
diff --git a/src/python/loxi/of13/util.py b/src/python/loxi/of13/util.py
index ec675ed..5eadb10 100644
--- a/src/python/loxi/of13/util.py
+++ b/src/python/loxi/of13/util.py
@@ -93,6 +93,28 @@
x >>= 1
return value
+def pack_bitmap_512(value):
+ words = [0] * 8
+ for v in value:
+ assert v < 512
+ words[7-v/64] |= 1 << (v % 64)
+ return struct.pack("!8Q", *words)
+
+def unpack_bitmap_512(reader):
+ words = reader.read("!8Q")
+ x = 0l
+ for word in words:
+ x <<= 64
+ x |= word
+ i = 0
+ value = set()
+ while x != 0:
+ if x & 1 == 1:
+ value.add(i)
+ i += 1
+ x >>= 1
+ return value
+
def pack_checksum_128(value):
return struct.pack("!QQ", (value >> 64) & MASK64, value & MASK64)
diff --git a/src/python/loxi/of14/action.py b/src/python/loxi/of14/action.py
index 098ae7f..5a9317a 100644
--- a/src/python/loxi/of14/action.py
+++ b/src/python/loxi/of14/action.py
@@ -8,28 +8,12 @@
import struct
import loxi
-import const
-import port_desc_prop
-import bsn_tlv
-import meter_band
-import table_mod_prop
-import instruction
-import queue_desc_prop
-import oxm
-import bundle_prop
-import common
-import instruction_id
-import action
-import role_prop
-import message
-import queue_stats_prop
-import port_stats_prop
-import port_mod_prop
-import async_config_prop
-import action_id
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of14']
+
class action(loxi.OFObject):
subtypes = {}
@@ -61,7 +45,7 @@
obj.type = reader.read("!H")[0]
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -119,7 +103,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.experimenter = reader.read("!L")[0]
obj.data = str(reader.read_all())
return obj
@@ -178,7 +162,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
obj.subtype = reader.read("!L")[0]
@@ -230,7 +214,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -290,13 +274,13 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 5)
obj.table_id = reader.read("!L")[0]
- obj.key = loxi.generic_util.unpack_list(reader, bsn_tlv.bsn_tlv.unpack)
+ obj.key = loxi.generic_util.unpack_list(reader, ofp.bsn_tlv.bsn_tlv.unpack)
return obj
def __eq__(self, other):
@@ -361,7 +345,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -427,7 +411,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -474,7 +458,7 @@
assert(_type == 12)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -514,7 +498,7 @@
assert(_type == 11)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -554,7 +538,7 @@
assert(_type == 16)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -594,7 +578,7 @@
assert(_type == 24)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -638,7 +622,7 @@
assert(_type == 22)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.group_id = reader.read("!L")[0]
return obj
@@ -696,7 +680,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 8992)
obj.subtype = reader.read("!H")[0]
@@ -746,7 +730,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 8992)
_subtype = reader.read("!H")[0]
@@ -801,7 +785,7 @@
assert(_type == 0)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.port = util.unpack_port_no(reader)
obj.max_len = reader.read("!H")[0]
reader.skip(6)
@@ -855,7 +839,7 @@
assert(_type == 20)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.ethertype = reader.read("!H")[0]
reader.skip(2)
return obj
@@ -899,7 +883,7 @@
assert(_type == 27)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -939,7 +923,7 @@
assert(_type == 18)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -984,7 +968,7 @@
assert(_type == 19)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.ethertype = reader.read("!H")[0]
reader.skip(2)
return obj
@@ -1033,7 +1017,7 @@
assert(_type == 26)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.ethertype = reader.read("!H")[0]
reader.skip(2)
return obj
@@ -1082,7 +1066,7 @@
assert(_type == 17)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.ethertype = reader.read("!H")[0]
reader.skip(2)
return obj
@@ -1132,8 +1116,8 @@
assert(_type == 25)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
- obj.field = oxm.oxm.unpack(reader)
+ reader = orig_reader.slice(_len, 4)
+ obj.field = ofp.oxm.oxm.unpack(reader)
return obj
def __eq__(self, other):
@@ -1180,7 +1164,7 @@
assert(_type == 15)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.mpls_ttl = reader.read("!B")[0]
reader.skip(3)
return obj
@@ -1229,7 +1213,7 @@
assert(_type == 23)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.nw_ttl = reader.read("!B")[0]
reader.skip(3)
return obj
@@ -1277,7 +1261,7 @@
assert(_type == 21)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.queue_id = reader.read("!L")[0]
return obj
diff --git a/src/python/loxi/of14/action_id.py b/src/python/loxi/of14/action_id.py
index 4ebcfcd..ee0a453 100644
--- a/src/python/loxi/of14/action_id.py
+++ b/src/python/loxi/of14/action_id.py
@@ -8,28 +8,12 @@
import struct
import loxi
-import const
-import port_desc_prop
-import bsn_tlv
-import meter_band
-import table_mod_prop
-import instruction
-import queue_desc_prop
-import oxm
-import bundle_prop
-import common
-import instruction_id
-import action
-import role_prop
-import message
-import queue_stats_prop
-import port_stats_prop
-import port_mod_prop
-import async_config_prop
-import action_id
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of14']
+
class action_id(loxi.OFObject):
subtypes = {}
@@ -60,7 +44,7 @@
obj.type = reader.read("!H")[0]
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -110,7 +94,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.experimenter = reader.read("!L")[0]
return obj
@@ -164,7 +148,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
obj.subtype = reader.read("!L")[0]
@@ -210,7 +194,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -256,7 +240,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -302,7 +286,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -348,7 +332,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -390,7 +374,7 @@
assert(_type == 12)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -428,7 +412,7 @@
assert(_type == 11)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -466,7 +450,7 @@
assert(_type == 16)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -504,7 +488,7 @@
assert(_type == 24)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -542,7 +526,7 @@
assert(_type == 22)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -594,7 +578,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 8992)
obj.subtype = reader.read("!H")[0]
@@ -640,7 +624,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 8992)
_subtype = reader.read("!H")[0]
@@ -682,7 +666,7 @@
assert(_type == 0)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -720,7 +704,7 @@
assert(_type == 20)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -758,7 +742,7 @@
assert(_type == 27)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -796,7 +780,7 @@
assert(_type == 18)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -834,7 +818,7 @@
assert(_type == 19)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -872,7 +856,7 @@
assert(_type == 26)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -910,7 +894,7 @@
assert(_type == 17)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -948,7 +932,7 @@
assert(_type == 25)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -986,7 +970,7 @@
assert(_type == 15)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -1024,7 +1008,7 @@
assert(_type == 23)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -1062,7 +1046,7 @@
assert(_type == 21)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
diff --git a/src/python/loxi/of14/async_config_prop.py b/src/python/loxi/of14/async_config_prop.py
index f2c1663..569e0b7 100644
--- a/src/python/loxi/of14/async_config_prop.py
+++ b/src/python/loxi/of14/async_config_prop.py
@@ -8,28 +8,12 @@
import struct
import loxi
-import const
-import port_desc_prop
-import bsn_tlv
-import meter_band
-import table_mod_prop
-import instruction
-import queue_desc_prop
-import oxm
-import bundle_prop
-import common
-import instruction_id
-import action
-import role_prop
-import message
-import queue_stats_prop
-import port_stats_prop
-import port_mod_prop
-import async_config_prop
-import action_id
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of14']
+
class async_config_prop(loxi.OFObject):
subtypes = {}
@@ -60,7 +44,7 @@
obj.type = reader.read("!H")[0]
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
return obj
def __eq__(self, other):
@@ -98,7 +82,7 @@
assert(_type == 65535)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
return obj
def __eq__(self, other):
@@ -136,7 +120,7 @@
assert(_type == 65534)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
return obj
def __eq__(self, other):
@@ -179,7 +163,7 @@
assert(_type == 5)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.mask = reader.read("!L")[0]
return obj
@@ -226,7 +210,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.mask = reader.read("!L")[0]
return obj
@@ -273,7 +257,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.mask = reader.read("!L")[0]
return obj
@@ -320,7 +304,7 @@
assert(_type == 0)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.mask = reader.read("!L")[0]
return obj
@@ -367,7 +351,7 @@
assert(_type == 3)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.mask = reader.read("!L")[0]
return obj
@@ -414,7 +398,7 @@
assert(_type == 2)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.mask = reader.read("!L")[0]
return obj
@@ -461,7 +445,7 @@
assert(_type == 11)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.mask = reader.read("!L")[0]
return obj
@@ -508,7 +492,7 @@
assert(_type == 10)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.mask = reader.read("!L")[0]
return obj
@@ -555,7 +539,7 @@
assert(_type == 7)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.mask = reader.read("!L")[0]
return obj
@@ -602,7 +586,7 @@
assert(_type == 6)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.mask = reader.read("!L")[0]
return obj
@@ -649,7 +633,7 @@
assert(_type == 9)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.mask = reader.read("!L")[0]
return obj
@@ -696,7 +680,7 @@
assert(_type == 8)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.mask = reader.read("!L")[0]
return obj
diff --git a/src/python/loxi/of14/bsn_tlv.py b/src/python/loxi/of14/bsn_tlv.py
index f54e7d5..6671b17 100644
--- a/src/python/loxi/of14/bsn_tlv.py
+++ b/src/python/loxi/of14/bsn_tlv.py
@@ -8,28 +8,12 @@
import struct
import loxi
-import const
-import port_desc_prop
-import bsn_tlv
-import meter_band
-import table_mod_prop
-import instruction
-import queue_desc_prop
-import oxm
-import bundle_prop
-import common
-import instruction_id
-import action
-import role_prop
-import message
-import queue_stats_prop
-import port_stats_prop
-import port_mod_prop
-import async_config_prop
-import action_id
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of14']
+
class bsn_tlv(loxi.OFObject):
subtypes = {}
@@ -60,7 +44,7 @@
obj.type = reader.read("!H")[0]
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
return obj
def __eq__(self, other):
@@ -103,7 +87,7 @@
assert(_type == 44)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!H")[0]
return obj
@@ -150,7 +134,7 @@
assert(_type == 43)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!H")[0]
return obj
@@ -197,7 +181,7 @@
assert(_type == 42)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!H")[0]
return obj
@@ -244,7 +228,7 @@
assert(_type == 53)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!B")[0]
return obj
@@ -291,7 +275,7 @@
assert(_type == 41)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = list(reader.read('!6B'))
return obj
@@ -338,7 +322,7 @@
assert(_type == 40)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!H")[0]
return obj
@@ -385,7 +369,7 @@
assert(_type == 10)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -406,6 +390,53 @@
bsn_tlv.subtypes[10] = broadcast_query_timeout
+class bucket(bsn_tlv):
+ type = 64
+
+ def __init__(self, value=None):
+ if value != None:
+ self.value = value
+ else:
+ self.value = []
+ 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(loxi.generic_util.pack_list(self.value))
+ length = sum([len(x) for x in packed])
+ packed[1] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = bucket()
+ _type = reader.read("!H")[0]
+ assert(_type == 64)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ obj.value = loxi.generic_util.unpack_list(reader, ofp.bsn_tlv.bsn_tlv.unpack)
+ 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("bucket {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.pp(self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[64] = bucket
+
class circuit_id(bsn_tlv):
type = 14
@@ -432,7 +463,7 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = str(reader.read_all())
return obj
@@ -479,7 +510,7 @@
assert(_type == 45)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!B")[0]
return obj
@@ -526,7 +557,7 @@
assert(_type == 22)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!B")[0]
return obj
@@ -573,7 +604,7 @@
assert(_type == 55)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = str(reader.read_all())
return obj
@@ -620,7 +651,7 @@
assert(_type == 33)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = list(reader.read('!6B'))
return obj
@@ -667,7 +698,7 @@
assert(_type == 32)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = list(reader.read('!6B'))
return obj
@@ -714,7 +745,7 @@
assert(_type == 26)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -761,7 +792,7 @@
assert(_type == 29)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = list(reader.read('!6B'))
return obj
@@ -808,7 +839,7 @@
assert(_type == 23)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -855,7 +886,7 @@
assert(_type == 24)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = list(reader.read('!6B'))
return obj
@@ -902,7 +933,7 @@
assert(_type == 25)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -949,7 +980,7 @@
assert(_type == 31)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -970,6 +1001,147 @@
bsn_tlv.subtypes[31] = header_size
+class icmp_code(bsn_tlv):
+ type = 69
+
+ 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("!B", self.value))
+ length = sum([len(x) for x in packed])
+ packed[1] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = icmp_code()
+ _type = reader.read("!H")[0]
+ assert(_type == 69)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ obj.value = reader.read("!B")[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("icmp_code {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[69] = icmp_code
+
+class icmp_id(bsn_tlv):
+ type = 70
+
+ 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 = icmp_id()
+ _type = reader.read("!H")[0]
+ assert(_type == 70)
+ _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("icmp_id {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[70] = icmp_id
+
+class icmp_type(bsn_tlv):
+ type = 68
+
+ 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("!B", self.value))
+ length = sum([len(x) for x in packed])
+ packed[1] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = icmp_type()
+ _type = reader.read("!H")[0]
+ assert(_type == 68)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ obj.value = reader.read("!B")[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("icmp_type {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[68] = icmp_type
+
class idle_notification(bsn_tlv):
type = 7
@@ -991,7 +1163,7 @@
assert(_type == 7)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
return obj
def __eq__(self, other):
@@ -1034,7 +1206,7 @@
assert(_type == 5)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!Q")[0]
return obj
@@ -1081,7 +1253,7 @@
assert(_type == 8)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -1128,7 +1300,7 @@
assert(_type == 28)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = list(reader.read('!6B'))
return obj
@@ -1175,7 +1347,7 @@
assert(_type == 27)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = list(reader.read('!6B'))
return obj
@@ -1222,7 +1394,7 @@
assert(_type == 58)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -1243,6 +1415,53 @@
bsn_tlv.subtypes[58] = interval
+class ip_proto(bsn_tlv):
+ type = 67
+
+ 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("!B", self.value))
+ length = sum([len(x) for x in packed])
+ packed[1] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = ip_proto()
+ _type = reader.read("!H")[0]
+ assert(_type == 67)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ obj.value = reader.read("!B")[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("ip_proto {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[67] = ip_proto
+
class ipv4(bsn_tlv):
type = 4
@@ -1269,7 +1488,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -1316,7 +1535,7 @@
assert(_type == 35)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -1363,7 +1582,7 @@
assert(_type == 60)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -1410,7 +1629,7 @@
assert(_type == 34)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -1457,7 +1676,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = list(reader.read('!6B'))
return obj
@@ -1504,7 +1723,7 @@
assert(_type == 56)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = list(reader.read('!6B'))
return obj
@@ -1551,7 +1770,7 @@
assert(_type == 13)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!Q")[0]
return obj
@@ -1572,6 +1791,147 @@
bsn_tlv.subtypes[13] = miss_packets
+class mpls_control_word(bsn_tlv):
+ type = 62
+
+ 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("!B", self.value))
+ length = sum([len(x) for x in packed])
+ packed[1] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = mpls_control_word()
+ _type = reader.read("!H")[0]
+ assert(_type == 62)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ obj.value = reader.read("!B")[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("mpls_control_word {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[62] = mpls_control_word
+
+class mpls_label(bsn_tlv):
+ type = 61
+
+ 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("!L", self.value))
+ length = sum([len(x) for x in packed])
+ packed[1] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = mpls_label()
+ _type = reader.read("!H")[0]
+ assert(_type == 61)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ 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("mpls_label {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[61] = mpls_label
+
+class mpls_sequenced(bsn_tlv):
+ type = 63
+
+ 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("!B", self.value))
+ length = sum([len(x) for x in packed])
+ packed[1] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = mpls_sequenced()
+ _type = reader.read("!H")[0]
+ assert(_type == 63)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ obj.value = reader.read("!B")[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("mpls_sequenced {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[63] = mpls_sequenced
+
class name(bsn_tlv):
type = 52
@@ -1598,7 +1958,7 @@
assert(_type == 52)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = str(reader.read_all())
return obj
@@ -1645,7 +2005,7 @@
assert(_type == 51)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!H")[0]
return obj
@@ -1692,7 +2052,7 @@
assert(_type == 50)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!H")[0]
return obj
@@ -1739,7 +2099,7 @@
assert(_type == 49)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!H")[0]
return obj
@@ -1786,7 +2146,7 @@
assert(_type == 54)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!B")[0]
return obj
@@ -1833,7 +2193,7 @@
assert(_type == 48)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = list(reader.read('!6B'))
return obj
@@ -1880,7 +2240,7 @@
assert(_type == 47)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!H")[0]
return obj
@@ -1927,7 +2287,7 @@
assert(_type == 0)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = util.unpack_port_no(reader)
return obj
@@ -1974,7 +2334,7 @@
assert(_type == 57)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -2021,7 +2381,7 @@
assert(_type == 20)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -2068,7 +2428,7 @@
assert(_type == 21)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -2120,9 +2480,9 @@
assert(_type == 59)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.table_id = reader.read("!H")[0]
- obj.key = loxi.generic_util.unpack_list(reader, bsn_tlv.bsn_tlv.unpack)
+ obj.key = loxi.generic_util.unpack_list(reader, ofp.bsn_tlv.bsn_tlv.unpack)
return obj
def __eq__(self, other):
@@ -2172,7 +2532,7 @@
assert(_type == 12)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!Q")[0]
return obj
@@ -2219,7 +2579,7 @@
assert(_type == 11)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!Q")[0]
return obj
@@ -2240,6 +2600,53 @@
bsn_tlv.subtypes[11] = request_packets
+class rx_bytes(bsn_tlv):
+ type = 71
+
+ 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("!Q", self.value))
+ length = sum([len(x) for x in packed])
+ packed[1] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = rx_bytes()
+ _type = reader.read("!H")[0]
+ assert(_type == 71)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ obj.value = reader.read("!Q")[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("rx_bytes {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[71] = rx_bytes
+
class rx_packets(bsn_tlv):
type = 2
@@ -2266,7 +2673,7 @@
assert(_type == 2)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!Q")[0]
return obj
@@ -2313,7 +2720,7 @@
assert(_type == 30)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -2360,7 +2767,7 @@
assert(_type == 38)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -2381,6 +2788,100 @@
bsn_tlv.subtypes[38] = sub_agent_id
+class tcp_dst(bsn_tlv):
+ type = 66
+
+ 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 = tcp_dst()
+ _type = reader.read("!H")[0]
+ assert(_type == 66)
+ _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("tcp_dst {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[66] = tcp_dst
+
+class tcp_src(bsn_tlv):
+ type = 65
+
+ 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 = tcp_src()
+ _type = reader.read("!H")[0]
+ assert(_type == 65)
+ _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("tcp_src {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[65] = tcp_src
+
class tx_bytes(bsn_tlv):
type = 39
@@ -2407,7 +2908,7 @@
assert(_type == 39)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!Q")[0]
return obj
@@ -2454,7 +2955,7 @@
assert(_type == 3)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!Q")[0]
return obj
@@ -2501,7 +3002,7 @@
assert(_type == 16)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!H")[0]
return obj
@@ -2548,7 +3049,7 @@
assert(_type == 15)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!H")[0]
return obj
@@ -2595,7 +3096,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!H")[0]
return obj
@@ -2642,7 +3143,7 @@
assert(_type == 17)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!H")[0]
return obj
@@ -2689,7 +3190,7 @@
assert(_type == 37)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!H")[0]
return obj
@@ -2736,7 +3237,7 @@
assert(_type == 36)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!H")[0]
return obj
@@ -2783,7 +3284,7 @@
assert(_type == 9)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
@@ -2830,7 +3331,7 @@
assert(_type == 6)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!H")[0]
return obj
@@ -2877,7 +3378,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.value = reader.read("!L")[0]
return obj
diff --git a/src/python/loxi/of14/bundle_prop.py b/src/python/loxi/of14/bundle_prop.py
index f5d8b1a..f409524 100644
--- a/src/python/loxi/of14/bundle_prop.py
+++ b/src/python/loxi/of14/bundle_prop.py
@@ -8,28 +8,12 @@
import struct
import loxi
-import const
-import port_desc_prop
-import bsn_tlv
-import meter_band
-import table_mod_prop
-import instruction
-import queue_desc_prop
-import oxm
-import bundle_prop
-import common
-import instruction_id
-import action
-import role_prop
-import message
-import queue_stats_prop
-import port_stats_prop
-import port_mod_prop
-import async_config_prop
-import action_id
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of14']
+
class bundle_prop(loxi.OFObject):
subtypes = {}
@@ -60,7 +44,7 @@
obj.type = reader.read("!H")[0]
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
return obj
def __eq__(self, other):
@@ -115,7 +99,7 @@
assert(_type == 65535)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.experimenter = reader.read("!L")[0]
obj.exp_type = reader.read("!L")[0]
return obj
diff --git a/src/python/loxi/of14/common.py b/src/python/loxi/of14/common.py
index af39685..a91678e 100644
--- a/src/python/loxi/of14/common.py
+++ b/src/python/loxi/of14/common.py
@@ -8,28 +8,12 @@
import struct
import loxi
-import const
-import port_desc_prop
-import bsn_tlv
-import meter_band
-import table_mod_prop
-import instruction
-import queue_desc_prop
-import oxm
-import bundle_prop
-import common
-import instruction_id
-import action
-import role_prop
-import message
-import queue_stats_prop
-import port_stats_prop
-import port_mod_prop
-import async_config_prop
-import action_id
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of14']
+
class bsn_controller_connection(loxi.OFObject):
def __init__(self, state=None, auxiliary_id=None, role=None, uri=None):
@@ -236,6 +220,48 @@
q.text('}')
+class bsn_generic_stats_entry(loxi.OFObject):
+
+ def __init__(self, tlvs=None):
+ if tlvs != None:
+ self.tlvs = tlvs
+ else:
+ self.tlvs = []
+ return
+
+ def pack(self):
+ packed = []
+ packed.append(struct.pack("!H", 0)) # placeholder for length at index 0
+ packed.append(loxi.generic_util.pack_list(self.tlvs))
+ length = sum([len(x) for x in packed])
+ packed[0] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = bsn_generic_stats_entry()
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 2)
+ obj.tlvs = loxi.generic_util.unpack_list(reader, ofp.bsn_tlv.bsn_tlv.unpack)
+ return obj
+
+ def __eq__(self, other):
+ if type(self) != type(other): return False
+ if self.tlvs != other.tlvs: return False
+ return True
+
+ def pretty_print(self, q):
+ q.text("bsn_generic_stats_entry {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("tlvs = ");
+ q.pp(self.tlvs)
+ q.breakable()
+ q.text('}')
+
+
class bsn_gentable_bucket_stats_entry(loxi.OFObject):
def __init__(self, checksum=None):
@@ -310,7 +336,7 @@
obj = bsn_gentable_desc_stats_entry()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
obj.table_id = reader.read("!H")[0]
obj.name = reader.read("!32s")[0].rstrip("\x00")
obj.buckets_size = reader.read("!L")[0]
@@ -380,11 +406,11 @@
obj = bsn_gentable_entry_desc_stats_entry()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
_key_length = reader.read("!H")[0]
obj.checksum = util.unpack_checksum_128(reader)
- obj.key = loxi.generic_util.unpack_list(reader.slice(_key_length), bsn_tlv.bsn_tlv.unpack)
- obj.value = loxi.generic_util.unpack_list(reader, bsn_tlv.bsn_tlv.unpack)
+ obj.key = loxi.generic_util.unpack_list(reader.slice(_key_length), ofp.bsn_tlv.bsn_tlv.unpack)
+ obj.value = loxi.generic_util.unpack_list(reader, ofp.bsn_tlv.bsn_tlv.unpack)
return obj
def __eq__(self, other):
@@ -440,10 +466,10 @@
obj = bsn_gentable_entry_stats_entry()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
_key_length = reader.read("!H")[0]
- obj.key = loxi.generic_util.unpack_list(reader.slice(_key_length), bsn_tlv.bsn_tlv.unpack)
- obj.stats = loxi.generic_util.unpack_list(reader, bsn_tlv.bsn_tlv.unpack)
+ obj.key = loxi.generic_util.unpack_list(reader.slice(_key_length), ofp.bsn_tlv.bsn_tlv.unpack)
+ obj.stats = loxi.generic_util.unpack_list(reader, ofp.bsn_tlv.bsn_tlv.unpack)
return obj
def __eq__(self, other):
@@ -770,10 +796,10 @@
obj = bsn_port_counter_stats_entry()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
reader.skip(2)
obj.port_no = util.unpack_port_no(reader)
- obj.values = loxi.generic_util.unpack_list(reader, common.uint64.unpack)
+ obj.values = loxi.generic_util.unpack_list(reader, ofp.common.uint64.unpack)
return obj
def __eq__(self, other):
@@ -908,7 +934,7 @@
obj.type = reader.read("!H")[0]
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
return obj
def __eq__(self, other):
@@ -953,10 +979,10 @@
obj = bsn_vlan_counter_stats_entry()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
obj.vlan_vid = reader.read("!H")[0]
reader.skip(4)
- obj.values = loxi.generic_util.unpack_list(reader, common.uint64.unpack)
+ obj.values = loxi.generic_util.unpack_list(reader, ofp.common.uint64.unpack)
return obj
def __eq__(self, other):
@@ -1061,7 +1087,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.flags = reader.read("!L")[0]
obj.port_no = util.unpack_port_no(reader)
obj.loopback_port_no = util.unpack_port_no(reader)
@@ -1189,7 +1215,7 @@
assert(_type == 0)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.port_no = reader.read("!L")[0]
obj.ingress_tpid = reader.read("!H")[0]
obj.ingress_vlan_id = reader.read("!H")[0]
@@ -1263,10 +1289,10 @@
obj = bsn_vrf_counter_stats_entry()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
reader.skip(2)
obj.vrf = reader.read("!L")[0]
- obj.values = loxi.generic_util.unpack_list(reader, common.uint64.unpack)
+ obj.values = loxi.generic_util.unpack_list(reader, ofp.common.uint64.unpack)
return obj
def __eq__(self, other):
@@ -1327,12 +1353,12 @@
obj = bucket()
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (0 + 2))
+ reader = orig_reader.slice(_len, 2)
obj.weight = reader.read("!H")[0]
obj.watch_port = util.unpack_port_no(reader)
obj.watch_group = reader.read("!L")[0]
reader.skip(4)
- obj.actions = loxi.generic_util.unpack_list(reader, action.action.unpack)
+ obj.actions = loxi.generic_util.unpack_list(reader, ofp.action.action.unpack)
return obj
def __eq__(self, other):
@@ -1459,7 +1485,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if instructions != None:
self.instructions = instructions
else:
@@ -1493,7 +1519,7 @@
obj = flow_stats_entry()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
obj.table_id = reader.read("!B")[0]
reader.skip(1)
obj.duration_sec = reader.read("!L")[0]
@@ -1507,8 +1533,8 @@
obj.cookie = reader.read("!Q")[0]
obj.packet_count = reader.read("!Q")[0]
obj.byte_count = reader.read("!Q")[0]
- obj.match = common.match.unpack(reader)
- obj.instructions = loxi.generic_util.unpack_list(reader, instruction.instruction.unpack)
+ obj.match = ofp.match.unpack(reader)
+ obj.instructions = loxi.generic_util.unpack_list(reader, ofp.instruction.instruction.unpack)
return obj
def __eq__(self, other):
@@ -1608,11 +1634,11 @@
obj = group_desc_stats_entry()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
obj.group_type = reader.read("!B")[0]
reader.skip(1)
obj.group_id = reader.read("!L")[0]
- obj.buckets = loxi.generic_util.unpack_list(reader, common.bucket.unpack)
+ obj.buckets = loxi.generic_util.unpack_list(reader, ofp.common.bucket.unpack)
return obj
def __eq__(self, other):
@@ -1693,7 +1719,7 @@
obj = group_stats_entry()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
reader.skip(2)
obj.group_id = reader.read("!L")[0]
obj.ref_count = reader.read("!L")[0]
@@ -1702,7 +1728,7 @@
obj.byte_count = reader.read("!Q")[0]
obj.duration_sec = reader.read("!L")[0]
obj.duration_nsec = reader.read("!L")[0]
- obj.bucket_stats = loxi.generic_util.unpack_list(reader, common.bucket_counter.unpack)
+ obj.bucket_stats = loxi.generic_util.unpack_list(reader, ofp.common.bucket_counter.unpack)
return obj
def __eq__(self, other):
@@ -1775,7 +1801,7 @@
obj.type = reader.read("!H")[0]
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
return obj
def __eq__(self, other):
@@ -1818,8 +1844,8 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.bitmaps = loxi.generic_util.unpack_list(reader, common.uint32.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.bitmaps = loxi.generic_util.unpack_list(reader, ofp.common.uint32.unpack)
return obj
def __eq__(self, other):
@@ -1866,8 +1892,8 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.oxm_list = loxi.generic_util.unpack_list(reader, oxm.oxm.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.oxm_list = loxi.generic_util.unpack_list(reader, ofp.oxm.oxm.unpack)
orig_reader.skip_align()
return obj
@@ -1965,10 +1991,10 @@
obj = meter_config()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
obj.flags = reader.read("!H")[0]
obj.meter_id = reader.read("!L")[0]
- obj.entries = loxi.generic_util.unpack_list(reader, meter_band.meter_band.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.meter_band.meter_band.unpack)
return obj
def __eq__(self, other):
@@ -2127,14 +2153,14 @@
obj.meter_id = reader.read("!L")[0]
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (4 + 2))
+ reader = orig_reader.slice(_len, 6)
reader.skip(6)
obj.flow_count = reader.read("!L")[0]
obj.packet_in_count = reader.read("!Q")[0]
obj.byte_in_count = reader.read("!Q")[0]
obj.duration_sec = reader.read("!L")[0]
obj.duration_nsec = reader.read("!L")[0]
- obj.band_stats = loxi.generic_util.unpack_list(reader, common.meter_band_stats.unpack)
+ obj.band_stats = loxi.generic_util.unpack_list(reader, ofp.common.meter_band_stats.unpack)
return obj
def __eq__(self, other):
@@ -2212,9 +2238,9 @@
obj.port = util.unpack_port_no(reader)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (8 + 2))
+ reader = orig_reader.slice(_len, 10)
reader.skip(6)
- obj.properties = loxi.generic_util.unpack_list(reader, common.queue_prop.unpack)
+ obj.properties = loxi.generic_util.unpack_list(reader, ofp.common.queue_prop.unpack)
return obj
def __eq__(self, other):
@@ -2291,14 +2317,14 @@
obj.port_no = util.unpack_port_no(reader)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (4 + 2))
+ reader = orig_reader.slice(_length, 6)
reader.skip(2)
obj.hw_addr = list(reader.read('!6B'))
reader.skip(2)
obj.name = reader.read("!16s")[0].rstrip("\x00")
obj.config = reader.read("!L")[0]
obj.state = reader.read("!L")[0]
- obj.properties = loxi.generic_util.unpack_list(reader, port_desc_prop.port_desc_prop.unpack)
+ obj.properties = loxi.generic_util.unpack_list(reader, ofp.port_desc_prop.port_desc_prop.unpack)
return obj
def __eq__(self, other):
@@ -2415,7 +2441,7 @@
obj = port_stats_entry()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
reader.skip(2)
obj.port_no = util.unpack_port_no(reader)
obj.duration_sec = reader.read("!L")[0]
@@ -2428,7 +2454,7 @@
obj.tx_dropped = reader.read("!Q")[0]
obj.rx_errors = reader.read("!Q")[0]
obj.tx_errors = reader.read("!Q")[0]
- obj.properties = loxi.generic_util.unpack_list(reader, port_stats_prop.port_stats_prop.unpack)
+ obj.properties = loxi.generic_util.unpack_list(reader, ofp.port_stats_prop.port_stats_prop.unpack)
return obj
def __eq__(self, other):
@@ -2526,9 +2552,9 @@
obj.queue_id = reader.read("!L")[0]
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (8 + 2))
+ reader = orig_reader.slice(_length, 10)
reader.skip(6)
- obj.properties = loxi.generic_util.unpack_list(reader, queue_desc_prop.queue_desc_prop.unpack)
+ obj.properties = loxi.generic_util.unpack_list(reader, ofp.queue_desc_prop.queue_desc_prop.unpack)
return obj
def __eq__(self, other):
@@ -2586,7 +2612,7 @@
obj.type = reader.read("!H")[0]
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -2644,7 +2670,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
obj.experimenter = reader.read("!L")[0]
reader.skip(4)
@@ -2697,7 +2723,7 @@
assert(_type == 2)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
obj.rate = reader.read("!H")[0]
reader.skip(6)
@@ -2748,7 +2774,7 @@
assert(_type == 1)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
obj.rate = reader.read("!H")[0]
reader.skip(6)
@@ -2829,7 +2855,7 @@
obj = queue_stats_entry()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
reader.skip(6)
obj.port_no = util.unpack_port_no(reader)
obj.queue_id = reader.read("!L")[0]
@@ -2838,7 +2864,7 @@
obj.tx_errors = reader.read("!Q")[0]
obj.duration_sec = reader.read("!L")[0]
obj.duration_nsec = reader.read("!L")[0]
- obj.properties = loxi.generic_util.unpack_list(reader, queue_stats_prop.queue_stats_prop.unpack)
+ obj.properties = loxi.generic_util.unpack_list(reader, ofp.queue_stats_prop.queue_stats_prop.unpack)
return obj
def __eq__(self, other):
@@ -2913,7 +2939,7 @@
obj = table_desc()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
obj.table_id = reader.read("!B")[0]
reader.skip(1)
obj.config = reader.read("!L")[0]
@@ -2969,7 +2995,7 @@
obj.type = reader.read("!H")[0]
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
return obj
def __eq__(self, other):
@@ -3012,8 +3038,8 @@
assert(_type == 6)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.action_ids = loxi.generic_util.unpack_list(reader, action_id.action_id.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.action_ids = loxi.generic_util.unpack_list(reader, ofp.action_id.action_id.unpack)
return obj
def __eq__(self, other):
@@ -3059,8 +3085,8 @@
assert(_type == 7)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.action_ids = loxi.generic_util.unpack_list(reader, action_id.action_id.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.action_ids = loxi.generic_util.unpack_list(reader, ofp.action_id.action_id.unpack)
return obj
def __eq__(self, other):
@@ -3106,8 +3132,8 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.oxm_ids = loxi.generic_util.unpack_list(reader, common.uint32.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.oxm_ids = loxi.generic_util.unpack_list(reader, ofp.common.uint32.unpack)
return obj
def __eq__(self, other):
@@ -3153,8 +3179,8 @@
assert(_type == 15)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.oxm_ids = loxi.generic_util.unpack_list(reader, common.uint32.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.oxm_ids = loxi.generic_util.unpack_list(reader, ofp.common.uint32.unpack)
return obj
def __eq__(self, other):
@@ -3217,7 +3243,7 @@
assert(_type == 65534)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.experimenter = reader.read("!L")[0]
obj.subtype = reader.read("!L")[0]
obj.experimenter_data = str(reader.read_all())
@@ -3288,7 +3314,7 @@
assert(_type == 65535)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.experimenter = reader.read("!L")[0]
obj.subtype = reader.read("!L")[0]
obj.experimenter_data = str(reader.read_all())
@@ -3342,8 +3368,8 @@
assert(_type == 0)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.instruction_ids = loxi.generic_util.unpack_list(reader, instruction_id.instruction_id.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.instruction_ids = loxi.generic_util.unpack_list(reader, ofp.instruction_id.instruction_id.unpack)
return obj
def __eq__(self, other):
@@ -3389,8 +3415,8 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.instruction_ids = loxi.generic_util.unpack_list(reader, instruction_id.instruction_id.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.instruction_ids = loxi.generic_util.unpack_list(reader, ofp.instruction_id.instruction_id.unpack)
return obj
def __eq__(self, other):
@@ -3436,8 +3462,8 @@
assert(_type == 8)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.oxm_ids = loxi.generic_util.unpack_list(reader, common.uint32.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.oxm_ids = loxi.generic_util.unpack_list(reader, ofp.common.uint32.unpack)
return obj
def __eq__(self, other):
@@ -3483,8 +3509,8 @@
assert(_type == 2)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.next_table_ids = loxi.generic_util.unpack_list(reader, common.uint8.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.next_table_ids = loxi.generic_util.unpack_list(reader, ofp.common.uint8.unpack)
return obj
def __eq__(self, other):
@@ -3530,8 +3556,8 @@
assert(_type == 3)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.next_table_ids = loxi.generic_util.unpack_list(reader, common.uint8.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.next_table_ids = loxi.generic_util.unpack_list(reader, ofp.common.uint8.unpack)
return obj
def __eq__(self, other):
@@ -3577,8 +3603,8 @@
assert(_type == 16)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.table_ids = loxi.generic_util.unpack_list(reader, common.uint8.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.table_ids = loxi.generic_util.unpack_list(reader, ofp.common.uint8.unpack)
return obj
def __eq__(self, other):
@@ -3624,8 +3650,8 @@
assert(_type == 10)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.oxm_ids = loxi.generic_util.unpack_list(reader, common.uint32.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.oxm_ids = loxi.generic_util.unpack_list(reader, ofp.common.uint32.unpack)
return obj
def __eq__(self, other):
@@ -3671,8 +3697,8 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.action_ids = loxi.generic_util.unpack_list(reader, action_id.action_id.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.action_ids = loxi.generic_util.unpack_list(reader, ofp.action_id.action_id.unpack)
return obj
def __eq__(self, other):
@@ -3718,8 +3744,8 @@
assert(_type == 5)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.action_ids = loxi.generic_util.unpack_list(reader, action_id.action_id.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.action_ids = loxi.generic_util.unpack_list(reader, ofp.action_id.action_id.unpack)
return obj
def __eq__(self, other):
@@ -3765,8 +3791,8 @@
assert(_type == 12)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.oxm_ids = loxi.generic_util.unpack_list(reader, common.uint32.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.oxm_ids = loxi.generic_util.unpack_list(reader, ofp.common.uint32.unpack)
return obj
def __eq__(self, other):
@@ -3812,8 +3838,8 @@
assert(_type == 13)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.oxm_ids = loxi.generic_util.unpack_list(reader, common.uint32.unpack)
+ reader = orig_reader.slice(_length, 4)
+ obj.oxm_ids = loxi.generic_util.unpack_list(reader, ofp.common.uint32.unpack)
return obj
def __eq__(self, other):
@@ -3886,7 +3912,7 @@
obj = table_features()
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (0 + 2))
+ reader = orig_reader.slice(_length, 2)
obj.table_id = reader.read("!B")[0]
reader.skip(5)
obj.name = reader.read("!32s")[0].rstrip("\x00")
@@ -3894,7 +3920,7 @@
obj.metadata_write = reader.read("!Q")[0]
obj.config = reader.read("!L")[0]
obj.max_entries = reader.read("!L")[0]
- obj.properties = loxi.generic_util.unpack_list(reader, common.table_feature_prop.unpack)
+ obj.properties = loxi.generic_util.unpack_list(reader, ofp.common.table_feature_prop.unpack)
return obj
def __eq__(self, other):
@@ -3963,7 +3989,7 @@
assert(_type == 2)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.flags = reader.read("!L")[0]
return obj
@@ -4021,7 +4047,7 @@
assert(_type == 65535)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.experimenter = reader.read("!L")[0]
obj.exp_type = reader.read("!L")[0]
return obj
@@ -4080,7 +4106,7 @@
assert(_type == 3)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.vacancy_down = reader.read("!B")[0]
obj.vacancy_up = reader.read("!B")[0]
obj.vacancy = reader.read("!B")[0]
diff --git a/src/python/loxi/of14/const.py b/src/python/loxi/of14/const.py
index 5fa645e..dc93b71 100644
--- a/src/python/loxi/of14/const.py
+++ b/src/python/loxi/of14/const.py
@@ -313,6 +313,15 @@
5: 'OFP_BSN_LOGLEVEL_TRACE',
}
+# Identifiers from group ofp_bsn_lua_upload_flags
+OFP_BSN_LUA_UPLOAD_MORE = 1
+OFP_BSN_LUA_UPLOAD_FORCE = 2
+
+ofp_bsn_lua_upload_flags_map = {
+ 1: 'OFP_BSN_LUA_UPLOAD_MORE',
+ 2: 'OFP_BSN_LUA_UPLOAD_FORCE',
+}
+
# Identifiers from group ofp_bsn_pktin_flag
OFP_BSN_PKTIN_FLAG_PDU = 1
OFP_BSN_PKTIN_FLAG_NEW_HOST = 2
@@ -326,6 +335,7 @@
OFP_BSN_PKTIN_FLAG_L3_CPU = 512
OFP_BSN_PKTIN_FLAG_INGRESS_ACL = 1024
OFP_BSN_PKTIN_FLAG_SFLOW = 2048
+OFP_BSN_PKTIN_FLAG_ARP_CACHE = 4096
ofp_bsn_pktin_flag_map = {
1: 'OFP_BSN_PKTIN_FLAG_PDU',
@@ -340,6 +350,7 @@
512: 'OFP_BSN_PKTIN_FLAG_L3_CPU',
1024: 'OFP_BSN_PKTIN_FLAG_INGRESS_ACL',
2048: 'OFP_BSN_PKTIN_FLAG_SFLOW',
+ 4096: 'OFP_BSN_PKTIN_FLAG_ARP_CACHE',
}
# Identifiers from group ofp_bsn_port_counter
@@ -1103,6 +1114,7 @@
OFPPF_AUTONEG = 8192
OFPPF_PAUSE = 16384
OFPPF_PAUSE_ASYM = 32768
+OFPPF_BSN_BREAKOUT_CAPABLE = 2147483648
ofp_port_features_map = {
1: 'OFPPF_10MB_HD',
@@ -1121,6 +1133,7 @@
8192: 'OFPPF_AUTONEG',
16384: 'OFPPF_PAUSE',
32768: 'OFPPF_PAUSE_ASYM',
+ 2147483648: 'OFPPF_BSN_BREAKOUT_CAPABLE',
}
# Identifiers from group ofp_port_mod_failed_code
diff --git a/src/python/loxi/of14/instruction.py b/src/python/loxi/of14/instruction.py
index 5b451fa..022c2fb 100644
--- a/src/python/loxi/of14/instruction.py
+++ b/src/python/loxi/of14/instruction.py
@@ -8,28 +8,12 @@
import struct
import loxi
-import const
-import port_desc_prop
-import bsn_tlv
-import meter_band
-import table_mod_prop
-import instruction
-import queue_desc_prop
-import oxm
-import bundle_prop
-import common
-import instruction_id
-import action
-import role_prop
-import message
-import queue_stats_prop
-import port_stats_prop
-import port_mod_prop
-import async_config_prop
-import action_id
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of14']
+
class instruction(loxi.OFObject):
subtypes = {}
@@ -60,7 +44,7 @@
obj.type = reader.read("!H")[0]
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -104,9 +88,9 @@
assert(_type == 4)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
- obj.actions = loxi.generic_util.unpack_list(reader, action.action.unpack)
+ obj.actions = loxi.generic_util.unpack_list(reader, ofp.action.action.unpack)
return obj
def __eq__(self, other):
@@ -164,7 +148,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.experimenter = reader.read("!L")[0]
obj.data = str(reader.read_all())
return obj
@@ -223,7 +207,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
obj.subtype = reader.read("!L")[0]
@@ -271,7 +255,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -319,7 +303,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -367,7 +351,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -415,7 +399,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -463,7 +447,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -511,7 +495,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -559,7 +543,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -607,7 +591,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -655,7 +639,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -703,7 +687,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -751,7 +735,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -795,7 +779,7 @@
assert(_type == 5)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
return obj
@@ -840,7 +824,7 @@
assert(_type == 1)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.table_id = reader.read("!B")[0]
reader.skip(3)
return obj
@@ -888,7 +872,7 @@
assert(_type == 6)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.meter_id = reader.read("!L")[0]
return obj
@@ -936,9 +920,9 @@
assert(_type == 3)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
- obj.actions = loxi.generic_util.unpack_list(reader, action.action.unpack)
+ obj.actions = loxi.generic_util.unpack_list(reader, ofp.action.action.unpack)
return obj
def __eq__(self, other):
@@ -990,7 +974,7 @@
assert(_type == 2)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
reader.skip(4)
obj.metadata = reader.read("!Q")[0]
obj.metadata_mask = reader.read("!Q")[0]
diff --git a/src/python/loxi/of14/instruction_id.py b/src/python/loxi/of14/instruction_id.py
index aca4976..fcbfc83 100644
--- a/src/python/loxi/of14/instruction_id.py
+++ b/src/python/loxi/of14/instruction_id.py
@@ -8,28 +8,12 @@
import struct
import loxi
-import const
-import port_desc_prop
-import bsn_tlv
-import meter_band
-import table_mod_prop
-import instruction
-import queue_desc_prop
-import oxm
-import bundle_prop
-import common
-import instruction_id
-import action
-import role_prop
-import message
-import queue_stats_prop
-import port_stats_prop
-import port_mod_prop
-import async_config_prop
-import action_id
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of14']
+
class instruction_id(loxi.OFObject):
subtypes = {}
@@ -60,7 +44,7 @@
obj.type = reader.read("!H")[0]
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -98,7 +82,7 @@
assert(_type == 4)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -148,7 +132,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.experimenter = reader.read("!L")[0]
return obj
@@ -202,7 +186,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
obj.subtype = reader.read("!L")[0]
@@ -248,7 +232,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -294,7 +278,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -340,7 +324,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -386,7 +370,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -432,7 +416,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -478,7 +462,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -524,7 +508,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -570,7 +554,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -616,7 +600,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -662,7 +646,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -708,7 +692,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
@@ -750,7 +734,7 @@
assert(_type == 5)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -788,7 +772,7 @@
assert(_type == 1)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -826,7 +810,7 @@
assert(_type == 6)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -864,7 +848,7 @@
assert(_type == 3)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -902,7 +886,7 @@
assert(_type == 2)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
diff --git a/src/python/loxi/of14/message.py b/src/python/loxi/of14/message.py
index 67c8f9a..e1962ee 100644
--- a/src/python/loxi/of14/message.py
+++ b/src/python/loxi/of14/message.py
@@ -8,28 +8,12 @@
import struct
import loxi
-import const
-import port_desc_prop
-import bsn_tlv
-import meter_band
-import table_mod_prop
-import instruction
-import queue_desc_prop
-import oxm
-import bundle_prop
-import common
-import instruction_id
-import action
-import role_prop
-import message
-import queue_stats_prop
-import port_stats_prop
-import port_mod_prop
-import async_config_prop
-import action_id
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of14']
+
class message(loxi.OFObject):
subtypes = {}
@@ -69,7 +53,7 @@
obj.type = reader.read("!B")[0]
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
return obj
@@ -141,7 +125,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.stats_type = reader.read("!H")[0]
obj.flags = reader.read("!H")[0]
@@ -227,7 +211,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 2)
@@ -323,7 +307,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.stats_type = reader.read("!H")[0]
obj.flags = reader.read("!H")[0]
@@ -392,7 +376,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
return
def pack(self):
@@ -425,7 +409,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 2)
@@ -438,7 +422,7 @@
reader.skip(4)
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
- obj.match = common.match.unpack(reader)
+ obj.match = ofp.match.unpack(reader)
return obj
def __eq__(self, other):
@@ -531,7 +515,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.err_type = reader.read("!H")[0]
return obj
@@ -599,7 +583,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 15)
@@ -670,9 +654,9 @@
assert(_type == 27)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
- obj.properties = loxi.generic_util.unpack_list(reader, async_config_prop.async_config_prop.unpack)
+ obj.properties = loxi.generic_util.unpack_list(reader, ofp.async_config_prop.async_config_prop.unpack)
return obj
def __eq__(self, other):
@@ -734,9 +718,9 @@
assert(_type == 26)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
- obj.properties = loxi.generic_util.unpack_list(reader, async_config_prop.async_config_prop.unpack)
+ obj.properties = loxi.generic_util.unpack_list(reader, ofp.async_config_prop.async_config_prop.unpack)
return obj
def __eq__(self, other):
@@ -798,9 +782,9 @@
assert(_type == 28)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
- obj.properties = loxi.generic_util.unpack_list(reader, async_config_prop.async_config_prop.unpack)
+ obj.properties = loxi.generic_util.unpack_list(reader, ofp.async_config_prop.async_config_prop.unpack)
return obj
def __eq__(self, other):
@@ -869,7 +853,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 2)
@@ -947,7 +931,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 3)
@@ -1025,7 +1009,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 4)
@@ -1103,7 +1087,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 14)
@@ -1181,7 +1165,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 1)
@@ -1247,7 +1231,7 @@
assert(_type == 21)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
return obj
@@ -1301,7 +1285,7 @@
assert(_type == 20)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
return obj
@@ -1377,7 +1361,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.experimenter = reader.read("!L")[0]
obj.subtype = reader.read("!L")[0]
@@ -1457,7 +1441,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1530,7 +1514,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1608,7 +1592,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1675,7 +1659,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1742,7 +1726,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1809,7 +1793,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1881,7 +1865,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -1958,7 +1942,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -2030,13 +2014,13 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 57)
- obj.connections = loxi.generic_util.unpack_list(reader, common.bsn_controller_connection.unpack)
+ obj.connections = loxi.generic_util.unpack_list(reader, ofp.common.bsn_controller_connection.unpack)
return obj
def __eq__(self, other):
@@ -2097,7 +2081,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -2180,7 +2164,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -2271,7 +2255,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -2354,7 +2338,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -2364,7 +2348,7 @@
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 13)
- obj.entries = loxi.generic_util.unpack_list(reader, common.bsn_debug_counter_desc_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.bsn_debug_counter_desc_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -2450,7 +2434,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -2541,7 +2525,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -2619,7 +2603,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -2702,7 +2686,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -2712,7 +2696,7 @@
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 12)
- obj.entries = loxi.generic_util.unpack_list(reader, common.bsn_debug_counter_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.bsn_debug_counter_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -2785,7 +2769,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -2868,7 +2852,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -2878,7 +2862,7 @@
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 10)
- obj.entries = loxi.generic_util.unpack_list(reader, common.bsn_flow_checksum_bucket_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.bsn_flow_checksum_bucket_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -2956,7 +2940,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -3023,7 +3007,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
return
def pack(self):
@@ -3052,7 +3036,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -3062,7 +3046,7 @@
obj.priority = reader.read("!H")[0]
obj.table_id = reader.read("!B")[0]
reader.skip(5)
- obj.match = common.match.unpack(reader)
+ obj.match = ofp.match.unpack(reader)
return obj
def __eq__(self, other):
@@ -3140,7 +3124,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -3207,7 +3191,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -3279,7 +3263,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -3356,7 +3340,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -3389,6 +3373,192 @@
bsn_header.subtypes[36] = bsn_flow_idle_enable_set_request
+class bsn_generic_stats_reply(bsn_stats_reply):
+ version = 5
+ type = 19
+ stats_type = 65535
+ experimenter = 6035143
+ subtype = 16
+
+ def __init__(self, xid=None, flags=None, entries=None):
+ if xid != None:
+ self.xid = xid
+ else:
+ self.xid = None
+ if flags != None:
+ self.flags = flags
+ else:
+ self.flags = 0
+ if entries != None:
+ self.entries = entries
+ else:
+ self.entries = []
+ return
+
+ def pack(self):
+ packed = []
+ packed.append(struct.pack("!B", self.version))
+ packed.append(struct.pack("!B", self.type))
+ packed.append(struct.pack("!H", 0)) # placeholder for length at index 2
+ packed.append(struct.pack("!L", self.xid))
+ packed.append(struct.pack("!H", self.stats_type))
+ packed.append(struct.pack("!H", self.flags))
+ packed.append('\x00' * 4)
+ packed.append(struct.pack("!L", self.experimenter))
+ packed.append(struct.pack("!L", self.subtype))
+ packed.append(loxi.generic_util.pack_list(self.entries))
+ length = sum([len(x) for x in packed])
+ packed[2] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = bsn_generic_stats_reply()
+ _version = reader.read("!B")[0]
+ assert(_version == 5)
+ _type = reader.read("!B")[0]
+ assert(_type == 19)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ obj.xid = reader.read("!L")[0]
+ _stats_type = reader.read("!H")[0]
+ assert(_stats_type == 65535)
+ obj.flags = reader.read("!H")[0]
+ reader.skip(4)
+ _experimenter = reader.read("!L")[0]
+ assert(_experimenter == 6035143)
+ _subtype = reader.read("!L")[0]
+ assert(_subtype == 16)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.bsn_generic_stats_entry.unpack)
+ return obj
+
+ def __eq__(self, other):
+ if type(self) != type(other): return False
+ if self.xid != other.xid: return False
+ if self.flags != other.flags: return False
+ if self.entries != other.entries: return False
+ return True
+
+ def pretty_print(self, q):
+ q.text("bsn_generic_stats_reply {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("xid = ");
+ if self.xid != None:
+ q.text("%#x" % self.xid)
+ else:
+ q.text('None')
+ q.text(","); q.breakable()
+ q.text("flags = ");
+ q.text("%#x" % self.flags)
+ q.text(","); q.breakable()
+ q.text("entries = ");
+ q.pp(self.entries)
+ q.breakable()
+ q.text('}')
+
+bsn_stats_reply.subtypes[16] = bsn_generic_stats_reply
+
+class bsn_generic_stats_request(bsn_stats_request):
+ version = 5
+ type = 18
+ stats_type = 65535
+ experimenter = 6035143
+ subtype = 16
+
+ def __init__(self, xid=None, flags=None, name=None, tlvs=None):
+ if xid != None:
+ self.xid = xid
+ else:
+ self.xid = None
+ if flags != None:
+ self.flags = flags
+ else:
+ self.flags = 0
+ if name != None:
+ self.name = name
+ else:
+ self.name = ""
+ if tlvs != None:
+ self.tlvs = tlvs
+ else:
+ self.tlvs = []
+ return
+
+ def pack(self):
+ packed = []
+ packed.append(struct.pack("!B", self.version))
+ packed.append(struct.pack("!B", self.type))
+ packed.append(struct.pack("!H", 0)) # placeholder for length at index 2
+ packed.append(struct.pack("!L", self.xid))
+ packed.append(struct.pack("!H", self.stats_type))
+ packed.append(struct.pack("!H", self.flags))
+ packed.append('\x00' * 4)
+ packed.append(struct.pack("!L", self.experimenter))
+ packed.append(struct.pack("!L", self.subtype))
+ packed.append(struct.pack("!64s", self.name))
+ packed.append(loxi.generic_util.pack_list(self.tlvs))
+ length = sum([len(x) for x in packed])
+ packed[2] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = bsn_generic_stats_request()
+ _version = reader.read("!B")[0]
+ assert(_version == 5)
+ _type = reader.read("!B")[0]
+ assert(_type == 18)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ obj.xid = reader.read("!L")[0]
+ _stats_type = reader.read("!H")[0]
+ assert(_stats_type == 65535)
+ obj.flags = reader.read("!H")[0]
+ reader.skip(4)
+ _experimenter = reader.read("!L")[0]
+ assert(_experimenter == 6035143)
+ _subtype = reader.read("!L")[0]
+ assert(_subtype == 16)
+ obj.name = reader.read("!64s")[0].rstrip("\x00")
+ obj.tlvs = loxi.generic_util.unpack_list(reader, ofp.bsn_tlv.bsn_tlv.unpack)
+ return obj
+
+ def __eq__(self, other):
+ if type(self) != type(other): return False
+ if self.xid != other.xid: return False
+ if self.flags != other.flags: return False
+ if self.name != other.name: return False
+ if self.tlvs != other.tlvs: return False
+ return True
+
+ def pretty_print(self, q):
+ q.text("bsn_generic_stats_request {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("xid = ");
+ if self.xid != None:
+ q.text("%#x" % self.xid)
+ else:
+ q.text('None')
+ q.text(","); q.breakable()
+ q.text("flags = ");
+ q.text("%#x" % self.flags)
+ q.text(","); q.breakable()
+ q.text("name = ");
+ q.pp(self.name)
+ q.text(","); q.breakable()
+ q.text("tlvs = ");
+ q.pp(self.tlvs)
+ q.breakable()
+ q.text('}')
+
+bsn_stats_request.subtypes[16] = bsn_generic_stats_request
+
class bsn_gentable_bucket_stats_reply(bsn_stats_reply):
version = 5
type = 19
@@ -3436,7 +3606,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -3446,7 +3616,7 @@
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 5)
- obj.entries = loxi.generic_util.unpack_list(reader, common.bsn_gentable_bucket_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.bsn_gentable_bucket_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -3524,7 +3694,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -3615,7 +3785,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -3709,7 +3879,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -3800,7 +3970,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -3810,7 +3980,7 @@
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.bsn_gentable_desc_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.bsn_gentable_desc_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -3883,7 +4053,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -3975,7 +4145,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -3984,8 +4154,8 @@
obj.table_id = reader.read("!H")[0]
_key_length = reader.read("!H")[0]
obj.checksum = util.unpack_checksum_128(reader)
- obj.key = loxi.generic_util.unpack_list(reader.slice(_key_length), bsn_tlv.bsn_tlv.unpack)
- obj.value = loxi.generic_util.unpack_list(reader, bsn_tlv.bsn_tlv.unpack)
+ obj.key = loxi.generic_util.unpack_list(reader.slice(_key_length), ofp.bsn_tlv.bsn_tlv.unpack)
+ obj.value = loxi.generic_util.unpack_list(reader, ofp.bsn_tlv.bsn_tlv.unpack)
return obj
def __eq__(self, other):
@@ -4068,14 +4238,14 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 47)
obj.table_id = reader.read("!H")[0]
- obj.key = loxi.generic_util.unpack_list(reader, bsn_tlv.bsn_tlv.unpack)
+ obj.key = loxi.generic_util.unpack_list(reader, ofp.bsn_tlv.bsn_tlv.unpack)
return obj
def __eq__(self, other):
@@ -4153,7 +4323,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -4163,7 +4333,7 @@
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 2)
- obj.entries = loxi.generic_util.unpack_list(reader, common.bsn_gentable_entry_desc_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.bsn_gentable_entry_desc_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -4252,7 +4422,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -4351,7 +4521,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -4361,7 +4531,7 @@
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 3)
- obj.entries = loxi.generic_util.unpack_list(reader, common.bsn_gentable_entry_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.bsn_gentable_entry_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -4450,7 +4620,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -4547,7 +4717,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -4633,7 +4803,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -4643,7 +4813,7 @@
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 7)
- obj.entries = loxi.generic_util.unpack_list(reader, common.bsn_gentable_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.bsn_gentable_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -4716,7 +4886,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -4791,13 +4961,13 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 10)
- obj.interfaces = loxi.generic_util.unpack_list(reader, common.bsn_interface.unpack)
+ obj.interfaces = loxi.generic_util.unpack_list(reader, ofp.common.bsn_interface.unpack)
return obj
def __eq__(self, other):
@@ -4858,7 +5028,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -4926,7 +5096,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -5000,7 +5170,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -5073,7 +5243,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -5140,7 +5310,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -5220,7 +5390,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -5308,7 +5478,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -5439,7 +5609,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -5575,7 +5745,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -5585,7 +5755,7 @@
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 1)
- obj.entries = loxi.generic_util.unpack_list(reader, common.bsn_lacp_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.bsn_lacp_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -5658,7 +5828,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -5738,7 +5908,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -5776,6 +5946,314 @@
bsn_header.subtypes[63] = bsn_log
+class bsn_lua_command_reply(bsn_header):
+ version = 5
+ type = 4
+ experimenter = 6035143
+ subtype = 66
+
+ def __init__(self, xid=None, data=None):
+ if xid != None:
+ self.xid = xid
+ else:
+ self.xid = None
+ if data != None:
+ self.data = data
+ else:
+ self.data = ''
+ return
+
+ def pack(self):
+ packed = []
+ packed.append(struct.pack("!B", self.version))
+ packed.append(struct.pack("!B", self.type))
+ packed.append(struct.pack("!H", 0)) # placeholder for length at index 2
+ packed.append(struct.pack("!L", self.xid))
+ packed.append(struct.pack("!L", self.experimenter))
+ packed.append(struct.pack("!L", self.subtype))
+ packed.append(self.data)
+ length = sum([len(x) for x in packed])
+ packed[2] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = bsn_lua_command_reply()
+ _version = reader.read("!B")[0]
+ assert(_version == 5)
+ _type = reader.read("!B")[0]
+ assert(_type == 4)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ obj.xid = reader.read("!L")[0]
+ _experimenter = reader.read("!L")[0]
+ assert(_experimenter == 6035143)
+ _subtype = reader.read("!L")[0]
+ assert(_subtype == 66)
+ obj.data = str(reader.read_all())
+ return obj
+
+ def __eq__(self, other):
+ if type(self) != type(other): return False
+ if self.xid != other.xid: return False
+ if self.data != other.data: return False
+ return True
+
+ def pretty_print(self, q):
+ q.text("bsn_lua_command_reply {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("xid = ");
+ if self.xid != None:
+ q.text("%#x" % self.xid)
+ else:
+ q.text('None')
+ q.text(","); q.breakable()
+ q.text("data = ");
+ q.pp(self.data)
+ q.breakable()
+ q.text('}')
+
+bsn_header.subtypes[66] = bsn_lua_command_reply
+
+class bsn_lua_command_request(bsn_header):
+ version = 5
+ type = 4
+ experimenter = 6035143
+ subtype = 65
+
+ def __init__(self, xid=None, data=None):
+ if xid != None:
+ self.xid = xid
+ else:
+ self.xid = None
+ if data != None:
+ self.data = data
+ else:
+ self.data = ''
+ return
+
+ def pack(self):
+ packed = []
+ packed.append(struct.pack("!B", self.version))
+ packed.append(struct.pack("!B", self.type))
+ packed.append(struct.pack("!H", 0)) # placeholder for length at index 2
+ packed.append(struct.pack("!L", self.xid))
+ packed.append(struct.pack("!L", self.experimenter))
+ packed.append(struct.pack("!L", self.subtype))
+ packed.append(self.data)
+ length = sum([len(x) for x in packed])
+ packed[2] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = bsn_lua_command_request()
+ _version = reader.read("!B")[0]
+ assert(_version == 5)
+ _type = reader.read("!B")[0]
+ assert(_type == 4)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ obj.xid = reader.read("!L")[0]
+ _experimenter = reader.read("!L")[0]
+ assert(_experimenter == 6035143)
+ _subtype = reader.read("!L")[0]
+ assert(_subtype == 65)
+ obj.data = str(reader.read_all())
+ return obj
+
+ def __eq__(self, other):
+ if type(self) != type(other): return False
+ if self.xid != other.xid: return False
+ if self.data != other.data: return False
+ return True
+
+ def pretty_print(self, q):
+ q.text("bsn_lua_command_request {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("xid = ");
+ if self.xid != None:
+ q.text("%#x" % self.xid)
+ else:
+ q.text('None')
+ q.text(","); q.breakable()
+ q.text("data = ");
+ q.pp(self.data)
+ q.breakable()
+ q.text('}')
+
+bsn_header.subtypes[65] = bsn_lua_command_request
+
+class bsn_lua_notification(bsn_header):
+ version = 5
+ type = 4
+ experimenter = 6035143
+ subtype = 67
+
+ def __init__(self, xid=None, data=None):
+ if xid != None:
+ self.xid = xid
+ else:
+ self.xid = None
+ if data != None:
+ self.data = data
+ else:
+ self.data = ''
+ return
+
+ def pack(self):
+ packed = []
+ packed.append(struct.pack("!B", self.version))
+ packed.append(struct.pack("!B", self.type))
+ packed.append(struct.pack("!H", 0)) # placeholder for length at index 2
+ packed.append(struct.pack("!L", self.xid))
+ packed.append(struct.pack("!L", self.experimenter))
+ packed.append(struct.pack("!L", self.subtype))
+ packed.append(self.data)
+ length = sum([len(x) for x in packed])
+ packed[2] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = bsn_lua_notification()
+ _version = reader.read("!B")[0]
+ assert(_version == 5)
+ _type = reader.read("!B")[0]
+ assert(_type == 4)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ obj.xid = reader.read("!L")[0]
+ _experimenter = reader.read("!L")[0]
+ assert(_experimenter == 6035143)
+ _subtype = reader.read("!L")[0]
+ assert(_subtype == 67)
+ obj.data = str(reader.read_all())
+ return obj
+
+ def __eq__(self, other):
+ if type(self) != type(other): return False
+ if self.xid != other.xid: return False
+ if self.data != other.data: return False
+ return True
+
+ def pretty_print(self, q):
+ q.text("bsn_lua_notification {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("xid = ");
+ if self.xid != None:
+ q.text("%#x" % self.xid)
+ else:
+ q.text('None')
+ q.text(","); q.breakable()
+ q.text("data = ");
+ q.pp(self.data)
+ q.breakable()
+ q.text('}')
+
+bsn_header.subtypes[67] = bsn_lua_notification
+
+class bsn_lua_upload(bsn_header):
+ version = 5
+ type = 4
+ experimenter = 6035143
+ subtype = 64
+
+ def __init__(self, xid=None, flags=None, filename=None, data=None):
+ if xid != None:
+ self.xid = xid
+ else:
+ self.xid = None
+ if flags != None:
+ self.flags = flags
+ else:
+ self.flags = 0
+ if filename != None:
+ self.filename = filename
+ else:
+ self.filename = ""
+ if data != None:
+ self.data = data
+ else:
+ self.data = ''
+ return
+
+ def pack(self):
+ packed = []
+ packed.append(struct.pack("!B", self.version))
+ packed.append(struct.pack("!B", self.type))
+ packed.append(struct.pack("!H", 0)) # placeholder for length at index 2
+ packed.append(struct.pack("!L", self.xid))
+ packed.append(struct.pack("!L", self.experimenter))
+ packed.append(struct.pack("!L", self.subtype))
+ packed.append(struct.pack("!H", self.flags))
+ packed.append(struct.pack("!64s", self.filename))
+ packed.append(self.data)
+ length = sum([len(x) for x in packed])
+ packed[2] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = bsn_lua_upload()
+ _version = reader.read("!B")[0]
+ assert(_version == 5)
+ _type = reader.read("!B")[0]
+ assert(_type == 4)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ obj.xid = reader.read("!L")[0]
+ _experimenter = reader.read("!L")[0]
+ assert(_experimenter == 6035143)
+ _subtype = reader.read("!L")[0]
+ assert(_subtype == 64)
+ obj.flags = reader.read("!H")[0]
+ obj.filename = reader.read("!64s")[0].rstrip("\x00")
+ obj.data = str(reader.read_all())
+ return obj
+
+ def __eq__(self, other):
+ if type(self) != type(other): return False
+ if self.xid != other.xid: return False
+ if self.flags != other.flags: return False
+ if self.filename != other.filename: return False
+ if self.data != other.data: return False
+ return True
+
+ def pretty_print(self, q):
+ q.text("bsn_lua_upload {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("xid = ");
+ if self.xid != None:
+ q.text("%#x" % self.xid)
+ else:
+ q.text('None')
+ q.text(","); q.breakable()
+ q.text("flags = ");
+ q.text("%#x" % self.flags)
+ q.text(","); q.breakable()
+ q.text("filename = ");
+ q.pp(self.filename)
+ q.text(","); q.breakable()
+ q.text("data = ");
+ q.pp(self.data)
+ q.breakable()
+ q.text('}')
+
+bsn_header.subtypes[64] = bsn_lua_upload
+
class bsn_pdu_rx_reply(bsn_header):
version = 5
type = 4
@@ -5825,7 +6303,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -5923,7 +6401,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -6016,7 +6494,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -6103,7 +6581,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -6201,7 +6679,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -6297,7 +6775,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -6307,7 +6785,7 @@
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 8)
- obj.entries = loxi.generic_util.unpack_list(reader, common.bsn_port_counter_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.bsn_port_counter_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -6385,7 +6863,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -6470,7 +6948,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -6547,7 +7025,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -6624,7 +7102,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -6732,7 +7210,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -6836,7 +7314,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -6909,7 +7387,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -7002,7 +7480,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -7095,7 +7573,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -7167,7 +7645,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -7247,7 +7725,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -7257,7 +7735,7 @@
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 6)
- obj.entries = loxi.generic_util.unpack_list(reader, common.bsn_switch_pipeline_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.bsn_switch_pipeline_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -7330,7 +7808,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -7413,7 +7891,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -7423,7 +7901,7 @@
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 11)
- obj.entries = loxi.generic_util.unpack_list(reader, common.bsn_table_checksum_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.bsn_table_checksum_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -7496,7 +7974,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -7578,7 +8056,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -7657,7 +8135,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -7724,7 +8202,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -7796,7 +8274,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -7848,7 +8326,7 @@
if vport != None:
self.vport = vport
else:
- self.vport = common.bsn_vport()
+ self.vport = ofp.bsn_vport()
return
def pack(self):
@@ -7873,13 +8351,13 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 15)
- obj.vport = common.bsn_vport.unpack(reader)
+ obj.vport = ofp.bsn_vport.unpack(reader)
return obj
def __eq__(self, other):
@@ -7945,7 +8423,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -8017,7 +8495,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 6035143)
@@ -8097,7 +8575,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -8107,7 +8585,7 @@
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 9)
- obj.entries = loxi.generic_util.unpack_list(reader, common.bsn_vlan_counter_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.bsn_vlan_counter_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -8185,7 +8663,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -8273,7 +8751,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -8283,7 +8761,7 @@
assert(_experimenter == 6035143)
_subtype = reader.read("!L")[0]
assert(_subtype == 15)
- obj.entries = loxi.generic_util.unpack_list(reader, common.bsn_vrf_counter_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.bsn_vrf_counter_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -8361,7 +8839,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 65535)
@@ -8448,7 +8926,7 @@
assert(_type == 34)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.bundle_id = reader.read("!L")[0]
reader.skip(2)
@@ -8538,12 +9016,12 @@
assert(_type == 33)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.bundle_id = reader.read("!L")[0]
obj.bundle_ctrl_type = reader.read("!H")[0]
obj.flags = reader.read("!H")[0]
- obj.properties = loxi.generic_util.unpack_list(reader, bundle_prop.bundle_prop.unpack)
+ obj.properties = loxi.generic_util.unpack_list(reader, ofp.bundle_prop.bundle_prop.unpack)
return obj
def __eq__(self, other):
@@ -8624,7 +9102,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 17)
@@ -8723,7 +9201,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 0)
@@ -8818,7 +9296,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 0)
@@ -8885,7 +9363,7 @@
assert(_type == 3)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.data = str(reader.read_all())
return obj
@@ -8949,7 +9427,7 @@
assert(_type == 2)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.data = str(reader.read_all())
return obj
@@ -9025,7 +9503,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 65535)
@@ -9127,7 +9605,7 @@
assert(_type == 6)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.datapath_id = reader.read("!Q")[0]
obj.n_buffers = reader.read("!L")[0]
@@ -9212,7 +9690,7 @@
assert(_type == 5)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
return obj
@@ -9294,7 +9772,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if instructions != None:
self.instructions = instructions
else:
@@ -9339,7 +9817,7 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
@@ -9353,8 +9831,8 @@
obj.out_group = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
reader.skip(2)
- obj.match = common.match.unpack(reader)
- obj.instructions = loxi.generic_util.unpack_list(reader, instruction.instruction.unpack)
+ obj.match = ofp.match.unpack(reader)
+ obj.instructions = loxi.generic_util.unpack_list(reader, ofp.instruction.instruction.unpack)
return obj
def __eq__(self, other):
@@ -9483,7 +9961,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if instructions != None:
self.instructions = instructions
else:
@@ -9523,7 +10001,7 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
@@ -9538,8 +10016,8 @@
obj.out_group = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
obj.importance = reader.read("!H")[0]
- obj.match = common.match.unpack(reader)
- obj.instructions = loxi.generic_util.unpack_list(reader, instruction.instruction.unpack)
+ obj.match = ofp.match.unpack(reader)
+ obj.instructions = loxi.generic_util.unpack_list(reader, ofp.instruction.instruction.unpack)
return obj
def __eq__(self, other):
@@ -9671,7 +10149,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if instructions != None:
self.instructions = instructions
else:
@@ -9711,7 +10189,7 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
@@ -9726,8 +10204,8 @@
obj.out_group = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
obj.importance = reader.read("!H")[0]
- obj.match = common.match.unpack(reader)
- obj.instructions = loxi.generic_util.unpack_list(reader, instruction.instruction.unpack)
+ obj.match = ofp.match.unpack(reader)
+ obj.instructions = loxi.generic_util.unpack_list(reader, ofp.instruction.instruction.unpack)
return obj
def __eq__(self, other):
@@ -9859,7 +10337,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if instructions != None:
self.instructions = instructions
else:
@@ -9899,7 +10377,7 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
@@ -9914,8 +10392,8 @@
obj.out_group = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
obj.importance = reader.read("!H")[0]
- obj.match = common.match.unpack(reader)
- obj.instructions = loxi.generic_util.unpack_list(reader, instruction.instruction.unpack)
+ obj.match = ofp.match.unpack(reader)
+ obj.instructions = loxi.generic_util.unpack_list(reader, ofp.instruction.instruction.unpack)
return obj
def __eq__(self, other):
@@ -10032,7 +10510,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 5)
@@ -10125,7 +10603,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if instructions != None:
self.instructions = instructions
else:
@@ -10165,7 +10643,7 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
@@ -10180,8 +10658,8 @@
obj.out_group = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
obj.importance = reader.read("!H")[0]
- obj.match = common.match.unpack(reader)
- obj.instructions = loxi.generic_util.unpack_list(reader, instruction.instruction.unpack)
+ obj.match = ofp.match.unpack(reader)
+ obj.instructions = loxi.generic_util.unpack_list(reader, ofp.instruction.instruction.unpack)
return obj
def __eq__(self, other):
@@ -10313,7 +10791,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if instructions != None:
self.instructions = instructions
else:
@@ -10353,7 +10831,7 @@
assert(_type == 14)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
@@ -10368,8 +10846,8 @@
obj.out_group = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
obj.importance = reader.read("!H")[0]
- obj.match = common.match.unpack(reader)
- obj.instructions = loxi.generic_util.unpack_list(reader, instruction.instruction.unpack)
+ obj.match = ofp.match.unpack(reader)
+ obj.instructions = loxi.generic_util.unpack_list(reader, ofp.instruction.instruction.unpack)
return obj
def __eq__(self, other):
@@ -10486,7 +10964,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 16)
@@ -10574,7 +11052,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
return
def pack(self):
@@ -10607,7 +11085,7 @@
assert(_type == 11)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.cookie = reader.read("!Q")[0]
obj.priority = reader.read("!H")[0]
@@ -10619,7 +11097,7 @@
obj.hard_timeout = reader.read("!H")[0]
obj.packet_count = reader.read("!Q")[0]
obj.byte_count = reader.read("!Q")[0]
- obj.match = common.match.unpack(reader)
+ obj.match = ofp.match.unpack(reader)
return obj
def __eq__(self, other):
@@ -10729,13 +11207,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 1)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.flow_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.flow_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -10803,7 +11281,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
return
def pack(self):
@@ -10836,7 +11314,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 1)
@@ -10849,7 +11327,7 @@
reader.skip(4)
obj.cookie = reader.read("!Q")[0]
obj.cookie_mask = reader.read("!Q")[0]
- obj.match = common.match.unpack(reader)
+ obj.match = ofp.match.unpack(reader)
return obj
def __eq__(self, other):
@@ -10940,7 +11418,7 @@
assert(_type == 8)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
obj.miss_send_len = reader.read("!H")[0]
@@ -11004,7 +11482,7 @@
assert(_type == 7)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
return obj
@@ -11086,13 +11564,13 @@
assert(_type == 15)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.command = reader.read("!H")[0]
obj.group_type = reader.read("!B")[0]
reader.skip(1)
obj.group_id = reader.read("!L")[0]
- obj.buckets = loxi.generic_util.unpack_list(reader, common.bucket.unpack)
+ obj.buckets = loxi.generic_util.unpack_list(reader, ofp.common.bucket.unpack)
return obj
def __eq__(self, other):
@@ -11176,14 +11654,14 @@
assert(_type == 15)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_command = reader.read("!H")[0]
assert(_command == 0)
obj.group_type = reader.read("!B")[0]
reader.skip(1)
obj.group_id = reader.read("!L")[0]
- obj.buckets = loxi.generic_util.unpack_list(reader, common.bucket.unpack)
+ obj.buckets = loxi.generic_util.unpack_list(reader, ofp.common.bucket.unpack)
return obj
def __eq__(self, other):
@@ -11266,14 +11744,14 @@
assert(_type == 15)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_command = reader.read("!H")[0]
assert(_command == 2)
obj.group_type = reader.read("!B")[0]
reader.skip(1)
obj.group_id = reader.read("!L")[0]
- obj.buckets = loxi.generic_util.unpack_list(reader, common.bucket.unpack)
+ obj.buckets = loxi.generic_util.unpack_list(reader, ofp.common.bucket.unpack)
return obj
def __eq__(self, other):
@@ -11351,13 +11829,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 7)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.group_desc_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.group_desc_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -11426,7 +11904,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 7)
@@ -11546,7 +12024,7 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 8)
@@ -11666,7 +12144,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 8)
@@ -11740,7 +12218,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 6)
@@ -11824,14 +12302,14 @@
assert(_type == 15)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_command = reader.read("!H")[0]
assert(_command == 1)
obj.group_type = reader.read("!B")[0]
reader.skip(1)
obj.group_id = reader.read("!L")[0]
- obj.buckets = loxi.generic_util.unpack_list(reader, common.bucket.unpack)
+ obj.buckets = loxi.generic_util.unpack_list(reader, ofp.common.bucket.unpack)
return obj
def __eq__(self, other):
@@ -11909,13 +12387,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 6)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.group_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.group_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -11990,7 +12468,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 6)
@@ -12063,9 +12541,9 @@
assert(_type == 0)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
- obj.elements = loxi.generic_util.unpack_list(reader, common.hello_elem.unpack)
+ obj.elements = loxi.generic_util.unpack_list(reader, ofp.common.hello_elem.unpack)
return obj
def __eq__(self, other):
@@ -12134,7 +12612,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 0)
@@ -12213,13 +12691,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 10)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, meter_band.meter_band.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.meter_band.meter_band.unpack)
return obj
def __eq__(self, other):
@@ -12294,7 +12772,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 10)
@@ -12349,7 +12827,7 @@
if features != None:
self.features = features
else:
- self.features = common.meter_features()
+ self.features = ofp.meter_features()
return
def pack(self):
@@ -12375,13 +12853,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 11)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.features = common.meter_features.unpack(reader)
+ obj.features = ofp.meter_features.unpack(reader)
return obj
def __eq__(self, other):
@@ -12450,7 +12928,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 11)
@@ -12532,12 +13010,12 @@
assert(_type == 29)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.command = reader.read("!H")[0]
obj.flags = reader.read("!H")[0]
obj.meter_id = reader.read("!L")[0]
- obj.bands = loxi.generic_util.unpack_list(reader, meter_band.meter_band.unpack)
+ obj.bands = loxi.generic_util.unpack_list(reader, ofp.meter_band.meter_band.unpack)
return obj
def __eq__(self, other):
@@ -12618,7 +13096,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 12)
@@ -12697,13 +13175,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 9)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.meter_stats.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.meter_stats.unpack)
return obj
def __eq__(self, other):
@@ -12778,7 +13256,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 9)
@@ -12860,7 +13338,7 @@
assert(_type == 4)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_experimenter = reader.read("!L")[0]
assert(_experimenter == 8992)
@@ -12920,7 +13398,7 @@
if match != None:
self.match = match
else:
- self.match = common.match()
+ self.match = ofp.match()
if data != None:
self.data = data
else:
@@ -12954,14 +13432,14 @@
assert(_type == 10)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.buffer_id = reader.read("!L")[0]
obj.total_len = reader.read("!H")[0]
obj.reason = reader.read("!B")[0]
obj.table_id = reader.read("!B")[0]
obj.cookie = reader.read("!Q")[0]
- obj.match = common.match.unpack(reader)
+ obj.match = ofp.match.unpack(reader)
reader.skip(2)
obj.data = str(reader.read_all())
return obj
@@ -13067,13 +13545,13 @@
assert(_type == 13)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.buffer_id = reader.read("!L")[0]
obj.in_port = util.unpack_port_no(reader)
_actions_len = reader.read("!H")[0]
reader.skip(6)
- obj.actions = loxi.generic_util.unpack_list(reader.slice(_actions_len), action.action.unpack)
+ obj.actions = loxi.generic_util.unpack_list(reader.slice(_actions_len), ofp.action.action.unpack)
obj.data = str(reader.read_all())
return obj
@@ -13156,13 +13634,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 13)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.port_desc.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.port_desc.unpack)
return obj
def __eq__(self, other):
@@ -13231,7 +13709,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 13)
@@ -13320,7 +13798,7 @@
assert(_type == 16)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.port_no = util.unpack_port_no(reader)
reader.skip(4)
@@ -13328,7 +13806,7 @@
reader.skip(2)
obj.config = reader.read("!L")[0]
obj.mask = reader.read("!L")[0]
- obj.properties = loxi.generic_util.unpack_list(reader, port_mod_prop.port_mod_prop.unpack)
+ obj.properties = loxi.generic_util.unpack_list(reader, ofp.port_mod_prop.port_mod_prop.unpack)
return obj
def __eq__(self, other):
@@ -13413,7 +13891,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 7)
@@ -13492,13 +13970,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 4)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.port_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.port_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -13573,7 +14051,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 4)
@@ -13627,7 +14105,7 @@
if desc != None:
self.desc = desc
else:
- self.desc = common.port_desc()
+ self.desc = ofp.port_desc()
return
def pack(self):
@@ -13652,11 +14130,11 @@
assert(_type == 12)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.reason = reader.read("!B")[0]
reader.skip(7)
- obj.desc = common.port_desc.unpack(reader)
+ obj.desc = ofp.port_desc.unpack(reader)
return obj
def __eq__(self, other):
@@ -13730,13 +14208,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 15)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.queue_desc.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.queue_desc.unpack)
return obj
def __eq__(self, other):
@@ -13805,7 +14283,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 15)
@@ -13879,7 +14357,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 9)
@@ -13958,13 +14436,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 5)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.queue_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.queue_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -14043,7 +14521,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 5)
@@ -14125,7 +14603,7 @@
assert(_type == 32)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.role = reader.read("!L")[0]
obj.data = str(reader.read_all())
@@ -14200,7 +14678,7 @@
assert(_type == 25)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.role = reader.read("!L")[0]
reader.skip(4)
@@ -14276,7 +14754,7 @@
assert(_type == 24)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.role = reader.read("!L")[0]
reader.skip(4)
@@ -14353,7 +14831,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 11)
@@ -14440,13 +14918,13 @@
assert(_type == 30)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.role = reader.read("!L")[0]
obj.reason = reader.read("!B")[0]
reader.skip(3)
obj.generation_id = reader.read("!Q")[0]
- obj.properties = loxi.generic_util.unpack_list(reader, role_prop.role_prop.unpack)
+ obj.properties = loxi.generic_util.unpack_list(reader, ofp.role_prop.role_prop.unpack)
return obj
def __eq__(self, other):
@@ -14525,7 +15003,7 @@
assert(_type == 9)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.flags = reader.read("!H")[0]
obj.miss_send_len = reader.read("!H")[0]
@@ -14601,7 +15079,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 10)
@@ -14680,13 +15158,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 14)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.table_desc.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.table_desc.unpack)
return obj
def __eq__(self, other):
@@ -14755,7 +15233,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 14)
@@ -14829,7 +15307,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 13)
@@ -14908,13 +15386,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 12)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.table_features.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.table_features.unpack)
return obj
def __eq__(self, other):
@@ -14988,13 +15466,13 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 12)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.table_features.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.table_features.unpack)
return obj
def __eq__(self, other):
@@ -15071,12 +15549,12 @@
assert(_type == 17)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.table_id = reader.read("!B")[0]
reader.skip(3)
obj.config = reader.read("!L")[0]
- obj.properties = loxi.generic_util.unpack_list(reader, table_mod_prop.table_mod_prop.unpack)
+ obj.properties = loxi.generic_util.unpack_list(reader, ofp.table_mod_prop.table_mod_prop.unpack)
return obj
def __eq__(self, other):
@@ -15153,7 +15631,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_err_type = reader.read("!H")[0]
assert(_err_type == 8)
@@ -15232,13 +15710,13 @@
assert(_type == 19)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 3)
obj.flags = reader.read("!H")[0]
reader.skip(4)
- obj.entries = loxi.generic_util.unpack_list(reader, common.table_stats_entry.unpack)
+ obj.entries = loxi.generic_util.unpack_list(reader, ofp.common.table_stats_entry.unpack)
return obj
def __eq__(self, other):
@@ -15307,7 +15785,7 @@
assert(_type == 18)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
_stats_type = reader.read("!H")[0]
assert(_stats_type == 3)
@@ -15359,7 +15837,7 @@
if table != None:
self.table = table
else:
- self.table = common.table_desc()
+ self.table = ofp.table_desc()
return
def pack(self):
@@ -15385,12 +15863,12 @@
assert(_type == 31)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.xid = reader.read("!L")[0]
obj.role = reader.read("!L")[0]
obj.reason = reader.read("!B")[0]
reader.skip(7)
- obj.table = common.table_desc.unpack(reader)
+ obj.table = ofp.table_desc.unpack(reader)
return obj
def __eq__(self, other):
@@ -15433,8 +15911,8 @@
def parse_message(buf):
msg_ver, msg_type, msg_len, msg_xid = parse_header(buf)
- if msg_ver != const.OFP_VERSION and msg_type != const.OFPT_HELLO:
- raise loxi.ProtocolError("wrong OpenFlow version (expected %d, got %d)" % (const.OFP_VERSION, msg_ver))
+ if msg_ver != ofp.OFP_VERSION and msg_type != ofp.OFPT_HELLO:
+ raise loxi.ProtocolError("wrong OpenFlow version (expected %d, got %d)" % (ofp.OFP_VERSION, msg_ver))
if len(buf) != msg_len:
raise loxi.ProtocolError("incorrect message size")
return message.unpack(loxi.generic_util.OFReader(buf))
diff --git a/src/python/loxi/of14/meter_band.py b/src/python/loxi/of14/meter_band.py
index 1b75f02..c2bc46a 100644
--- a/src/python/loxi/of14/meter_band.py
+++ b/src/python/loxi/of14/meter_band.py
@@ -8,28 +8,12 @@
import struct
import loxi
-import const
-import port_desc_prop
-import bsn_tlv
-import meter_band
-import table_mod_prop
-import instruction
-import queue_desc_prop
-import oxm
-import bundle_prop
-import common
-import instruction_id
-import action
-import role_prop
-import message
-import queue_stats_prop
-import port_stats_prop
-import port_mod_prop
-import async_config_prop
-import action_id
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of14']
+
class meter_band(loxi.OFObject):
subtypes = {}
@@ -60,7 +44,7 @@
obj.type = reader.read("!H")[0]
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
return obj
def __eq__(self, other):
@@ -109,7 +93,7 @@
assert(_type == 1)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.rate = reader.read("!L")[0]
obj.burst_size = reader.read("!L")[0]
reader.skip(4)
@@ -173,7 +157,7 @@
assert(_type == 2)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.rate = reader.read("!L")[0]
obj.burst_size = reader.read("!L")[0]
obj.prec_level = reader.read("!B")[0]
@@ -241,7 +225,7 @@
assert(_type == 65535)
_len = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_len - (2 + 2))
+ reader = orig_reader.slice(_len, 4)
obj.rate = reader.read("!L")[0]
obj.burst_size = reader.read("!L")[0]
obj.experimenter = reader.read("!L")[0]
diff --git a/src/python/loxi/of14/oxm.py b/src/python/loxi/of14/oxm.py
index 926f7eb..e6964a1 100644
--- a/src/python/loxi/of14/oxm.py
+++ b/src/python/loxi/of14/oxm.py
@@ -8,28 +8,12 @@
import struct
import loxi
-import const
-import port_desc_prop
-import bsn_tlv
-import meter_band
-import table_mod_prop
-import instruction
-import queue_desc_prop
-import oxm
-import bundle_prop
-import common
-import instruction_id
-import action
-import role_prop
-import message
-import queue_stats_prop
-import port_stats_prop
-import port_mod_prop
-import async_config_prop
-import action_id
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of14']
+
class oxm(loxi.OFObject):
subtypes = {}
@@ -715,6 +699,190 @@
oxm.subtypes[196896] = bsn_in_ports_128_masked
+class bsn_in_ports_512(oxm):
+ type_len = 206400
+
+ def __init__(self, value=None):
+ if value != None:
+ self.value = value
+ else:
+ self.value = set()
+ return
+
+ def pack(self):
+ packed = []
+ packed.append(struct.pack("!L", self.type_len))
+ packed.append(util.pack_bitmap_512(self.value))
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = bsn_in_ports_512()
+ _type_len = reader.read("!L")[0]
+ assert(_type_len == 206400)
+ obj.value = util.unpack_bitmap_512(reader)
+ 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_in_ports_512 {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.pp(self.value)
+ q.breakable()
+ q.text('}')
+
+oxm.subtypes[206400] = bsn_in_ports_512
+
+class bsn_in_ports_512_masked(oxm):
+ type_len = 206720
+
+ def __init__(self, value=None, value_mask=None):
+ if value != None:
+ self.value = value
+ else:
+ self.value = set()
+ if value_mask != None:
+ self.value_mask = value_mask
+ else:
+ self.value_mask = set()
+ return
+
+ def pack(self):
+ packed = []
+ packed.append(struct.pack("!L", self.type_len))
+ packed.append(util.pack_bitmap_512(self.value))
+ packed.append(util.pack_bitmap_512(self.value_mask))
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = bsn_in_ports_512_masked()
+ _type_len = reader.read("!L")[0]
+ assert(_type_len == 206720)
+ obj.value = util.unpack_bitmap_512(reader)
+ obj.value_mask = util.unpack_bitmap_512(reader)
+ 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_in_ports_512_masked {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.pp(self.value)
+ q.text(","); q.breakable()
+ q.text("value_mask = ");
+ q.pp(self.value_mask)
+ q.breakable()
+ q.text('}')
+
+oxm.subtypes[206720] = bsn_in_ports_512_masked
+
+class bsn_ingress_port_group_id(oxm):
+ type_len = 206852
+
+ 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_ingress_port_group_id()
+ _type_len = reader.read("!L")[0]
+ assert(_type_len == 206852)
+ 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_ingress_port_group_id {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+oxm.subtypes[206852] = bsn_ingress_port_group_id
+
+class bsn_ingress_port_group_id_masked(oxm):
+ type_len = 207112
+
+ 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_ingress_port_group_id_masked()
+ _type_len = reader.read("!L")[0]
+ assert(_type_len == 207112)
+ 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_ingress_port_group_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[207112] = bsn_ingress_port_group_id_masked
+
class bsn_l3_interface_class_id(oxm):
type_len = 198660
diff --git a/src/python/loxi/of14/port_desc_prop.py b/src/python/loxi/of14/port_desc_prop.py
index 3674b98..217e004 100644
--- a/src/python/loxi/of14/port_desc_prop.py
+++ b/src/python/loxi/of14/port_desc_prop.py
@@ -8,28 +8,12 @@
import struct
import loxi
-import const
-import port_desc_prop
-import bsn_tlv
-import meter_band
-import table_mod_prop
-import instruction
-import queue_desc_prop
-import oxm
-import bundle_prop
-import common
-import instruction_id
-import action
-import role_prop
-import message
-import queue_stats_prop
-import port_stats_prop
-import port_mod_prop
-import async_config_prop
-import action_id
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of14']
+
class port_desc_prop(loxi.OFObject):
subtypes = {}
@@ -60,7 +44,7 @@
obj.type = reader.read("!H")[0]
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
return obj
def __eq__(self, other):
@@ -77,6 +61,169 @@
q.text('}')
+class experimenter(port_desc_prop):
+ subtypes = {}
+
+ type = 65535
+
+ def __init__(self, experimenter=None, exp_type=None):
+ if experimenter != None:
+ self.experimenter = experimenter
+ else:
+ self.experimenter = 0
+ if exp_type != None:
+ self.exp_type = exp_type
+ else:
+ self.exp_type = 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("!L", self.experimenter))
+ packed.append(struct.pack("!L", self.exp_type))
+ length = sum([len(x) for x in packed])
+ packed[1] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ subtype, = reader.peek('!L', 4)
+ subclass = experimenter.subtypes.get(subtype)
+ if subclass:
+ return subclass.unpack(reader)
+
+ obj = experimenter()
+ _type = reader.read("!H")[0]
+ assert(_type == 65535)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ obj.experimenter = reader.read("!L")[0]
+ obj.exp_type = reader.read("!L")[0]
+ return obj
+
+ def __eq__(self, other):
+ if type(self) != type(other): return False
+ if self.experimenter != other.experimenter: return False
+ if self.exp_type != other.exp_type: return False
+ return True
+
+ def pretty_print(self, q):
+ q.text("experimenter {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("exp_type = ");
+ q.text("%#x" % self.exp_type)
+ q.breakable()
+ q.text('}')
+
+port_desc_prop.subtypes[65535] = experimenter
+
+class bsn(experimenter):
+ subtypes = {}
+
+ type = 65535
+ experimenter = 6035143
+
+ def __init__(self, exp_type=None):
+ if exp_type != None:
+ self.exp_type = exp_type
+ else:
+ self.exp_type = 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("!L", self.experimenter))
+ packed.append(struct.pack("!L", self.exp_type))
+ length = sum([len(x) for x in packed])
+ packed[1] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ subtype, = reader.peek('!L', 8)
+ subclass = bsn.subtypes.get(subtype)
+ if subclass:
+ return subclass.unpack(reader)
+
+ obj = bsn()
+ _type = reader.read("!H")[0]
+ assert(_type == 65535)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ _experimenter = reader.read("!L")[0]
+ assert(_experimenter == 6035143)
+ obj.exp_type = reader.read("!L")[0]
+ return obj
+
+ def __eq__(self, other):
+ if type(self) != type(other): return False
+ if self.exp_type != other.exp_type: return False
+ return True
+
+ def pretty_print(self, q):
+ q.text("bsn {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.breakable()
+ q.text('}')
+
+experimenter.subtypes[6035143] = bsn
+
+class bsn_uplink(bsn):
+ type = 65535
+ experimenter = 6035143
+ exp_type = 0
+
+ def __init__(self):
+ 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("!L", self.experimenter))
+ packed.append(struct.pack("!L", self.exp_type))
+ length = sum([len(x) for x in packed])
+ packed[1] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = bsn_uplink()
+ _type = reader.read("!H")[0]
+ assert(_type == 65535)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length, 4)
+ _experimenter = reader.read("!L")[0]
+ assert(_experimenter == 6035143)
+ _exp_type = reader.read("!L")[0]
+ assert(_exp_type == 0)
+ return obj
+
+ def __eq__(self, other):
+ if type(self) != type(other): return False
+ return True
+
+ def pretty_print(self, q):
+ q.text("bsn_uplink {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.breakable()
+ q.text('}')
+
+bsn.subtypes[0] = bsn_uplink
+
class ethernet(port_desc_prop):
type = 0
@@ -129,7 +276,7 @@
assert(_type == 0)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
reader.skip(4)
obj.curr = reader.read("!L")[0]
obj.advertised = reader.read("!L")[0]
@@ -176,67 +323,6 @@
port_desc_prop.subtypes[0] = ethernet
-class experimenter(port_desc_prop):
- subtypes = {}
-
- type = 65535
-
- def __init__(self, experimenter=None, exp_type=None):
- if experimenter != None:
- self.experimenter = experimenter
- else:
- self.experimenter = 0
- if exp_type != None:
- self.exp_type = exp_type
- else:
- self.exp_type = 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("!L", self.experimenter))
- packed.append(struct.pack("!L", self.exp_type))
- length = sum([len(x) for x in packed])
- packed[1] = struct.pack("!H", length)
- return ''.join(packed)
-
- @staticmethod
- def unpack(reader):
- subtype, = reader.peek('!L', 4)
- subclass = experimenter.subtypes.get(subtype)
- if subclass:
- return subclass.unpack(reader)
-
- obj = experimenter()
- _type = reader.read("!H")[0]
- assert(_type == 65535)
- _length = reader.read("!H")[0]
- orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
- obj.experimenter = reader.read("!L")[0]
- obj.exp_type = reader.read("!L")[0]
- return obj
-
- def __eq__(self, other):
- if type(self) != type(other): return False
- if self.experimenter != other.experimenter: return False
- if self.exp_type != other.exp_type: return False
- return True
-
- def pretty_print(self, q):
- q.text("experimenter {")
- with q.group():
- with q.indent(2):
- q.breakable()
- q.text("exp_type = ");
- q.text("%#x" % self.exp_type)
- q.breakable()
- q.text('}')
-
-port_desc_prop.subtypes[65535] = experimenter
-
class optical(port_desc_prop):
type = 1
@@ -304,7 +390,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
reader.skip(4)
obj.supported = reader.read("!L")[0]
obj.tx_min_freq_lmda = reader.read("!L")[0]
diff --git a/src/python/loxi/of14/port_mod_prop.py b/src/python/loxi/of14/port_mod_prop.py
index bf68e3c..e7c7930 100644
--- a/src/python/loxi/of14/port_mod_prop.py
+++ b/src/python/loxi/of14/port_mod_prop.py
@@ -8,28 +8,12 @@
import struct
import loxi
-import const
-import port_desc_prop
-import bsn_tlv
-import meter_band
-import table_mod_prop
-import instruction
-import queue_desc_prop
-import oxm
-import bundle_prop
-import common
-import instruction_id
-import action
-import role_prop
-import message
-import queue_stats_prop
-import port_stats_prop
-import port_mod_prop
-import async_config_prop
-import action_id
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of14']
+
class port_mod_prop(loxi.OFObject):
subtypes = {}
@@ -60,7 +44,7 @@
obj.type = reader.read("!H")[0]
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
return obj
def __eq__(self, other):
@@ -103,7 +87,7 @@
assert(_type == 0)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.advertise = reader.read("!L")[0]
return obj
@@ -162,7 +146,7 @@
assert(_type == 65535)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.experimenter = reader.read("!L")[0]
obj.exp_type = reader.read("!L")[0]
return obj
@@ -231,7 +215,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.configure = reader.read("!L")[0]
obj.freq_ldma = reader.read("!L")[0]
obj.fl_offset = reader.read("!L")[0]
diff --git a/src/python/loxi/of14/port_stats_prop.py b/src/python/loxi/of14/port_stats_prop.py
index b20325f..2266f3c 100644
--- a/src/python/loxi/of14/port_stats_prop.py
+++ b/src/python/loxi/of14/port_stats_prop.py
@@ -8,28 +8,12 @@
import struct
import loxi
-import const
-import port_desc_prop
-import bsn_tlv
-import meter_band
-import table_mod_prop
-import instruction
-import queue_desc_prop
-import oxm
-import bundle_prop
-import common
-import instruction_id
-import action
-import role_prop
-import message
-import queue_stats_prop
-import port_stats_prop
-import port_mod_prop
-import async_config_prop
-import action_id
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of14']
+
class port_stats_prop(loxi.OFObject):
subtypes = {}
@@ -60,7 +44,7 @@
obj.type = reader.read("!H")[0]
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
return obj
def __eq__(self, other):
@@ -119,7 +103,7 @@
assert(_type == 0)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
reader.skip(4)
obj.rx_frame_err = reader.read("!Q")[0]
obj.rx_over_err = reader.read("!Q")[0]
@@ -199,7 +183,7 @@
assert(_type == 65535)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.experimenter = reader.read("!L")[0]
obj.exp_type = reader.read("!L")[0]
obj.experimenter_data = str(reader.read_all())
@@ -304,7 +288,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
reader.skip(4)
obj.flags = reader.read("!L")[0]
obj.tx_freq_lmda = reader.read("!L")[0]
diff --git a/src/python/loxi/of14/queue_desc_prop.py b/src/python/loxi/of14/queue_desc_prop.py
index 5e90246..c4b88d5 100644
--- a/src/python/loxi/of14/queue_desc_prop.py
+++ b/src/python/loxi/of14/queue_desc_prop.py
@@ -8,28 +8,12 @@
import struct
import loxi
-import const
-import port_desc_prop
-import bsn_tlv
-import meter_band
-import table_mod_prop
-import instruction
-import queue_desc_prop
-import oxm
-import bundle_prop
-import common
-import instruction_id
-import action
-import role_prop
-import message
-import queue_stats_prop
-import port_stats_prop
-import port_mod_prop
-import async_config_prop
-import action_id
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of14']
+
class queue_desc_prop(loxi.OFObject):
subtypes = {}
@@ -60,7 +44,7 @@
obj.type = reader.read("!H")[0]
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
return obj
def __eq__(self, other):
@@ -115,7 +99,7 @@
assert(_type == 65535)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.experimenter = reader.read("!L")[0]
obj.exp_type = reader.read("!L")[0]
return obj
@@ -165,7 +149,7 @@
assert(_type == 2)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.rate = reader.read("!H")[0]
reader.skip(2)
return obj
@@ -214,7 +198,7 @@
assert(_type == 1)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.rate = reader.read("!H")[0]
reader.skip(2)
return obj
diff --git a/src/python/loxi/of14/queue_stats_prop.py b/src/python/loxi/of14/queue_stats_prop.py
index a294436..bae2b61 100644
--- a/src/python/loxi/of14/queue_stats_prop.py
+++ b/src/python/loxi/of14/queue_stats_prop.py
@@ -8,28 +8,12 @@
import struct
import loxi
-import const
-import port_desc_prop
-import bsn_tlv
-import meter_band
-import table_mod_prop
-import instruction
-import queue_desc_prop
-import oxm
-import bundle_prop
-import common
-import instruction_id
-import action
-import role_prop
-import message
-import queue_stats_prop
-import port_stats_prop
-import port_mod_prop
-import async_config_prop
-import action_id
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of14']
+
class queue_stats_prop(loxi.OFObject):
subtypes = {}
@@ -60,7 +44,7 @@
obj.type = reader.read("!H")[0]
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
return obj
def __eq__(self, other):
@@ -115,7 +99,7 @@
assert(_type == 65535)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.experimenter = reader.read("!L")[0]
obj.exp_type = reader.read("!L")[0]
return obj
diff --git a/src/python/loxi/of14/role_prop.py b/src/python/loxi/of14/role_prop.py
index 5baa1e0..321e42c 100644
--- a/src/python/loxi/of14/role_prop.py
+++ b/src/python/loxi/of14/role_prop.py
@@ -8,28 +8,12 @@
import struct
import loxi
-import const
-import port_desc_prop
-import bsn_tlv
-import meter_band
-import table_mod_prop
-import instruction
-import queue_desc_prop
-import oxm
-import bundle_prop
-import common
-import instruction_id
-import action
-import role_prop
-import message
-import queue_stats_prop
-import port_stats_prop
-import port_mod_prop
-import async_config_prop
-import action_id
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of14']
+
class role_prop(loxi.OFObject):
subtypes = {}
@@ -60,7 +44,7 @@
obj.type = reader.read("!H")[0]
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
return obj
def __eq__(self, other):
@@ -115,7 +99,7 @@
assert(_type == 65535)
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
obj.experimenter = reader.read("!L")[0]
obj.exp_type = reader.read("!L")[0]
return obj
diff --git a/src/python/loxi/of14/table_mod_prop.py b/src/python/loxi/of14/table_mod_prop.py
index 4d538a1..eee9b2e 100644
--- a/src/python/loxi/of14/table_mod_prop.py
+++ b/src/python/loxi/of14/table_mod_prop.py
@@ -8,28 +8,12 @@
import struct
import loxi
-import const
-import port_desc_prop
-import bsn_tlv
-import meter_band
-import table_mod_prop
-import instruction
-import queue_desc_prop
-import oxm
-import bundle_prop
-import common
-import instruction_id
-import action
-import role_prop
-import message
-import queue_stats_prop
-import port_stats_prop
-import port_mod_prop
-import async_config_prop
-import action_id
import util
import loxi.generic_util
+import sys
+ofp = sys.modules['loxi.of14']
+
class table_mod_prop(loxi.OFObject):
subtypes = {}
@@ -60,7 +44,7 @@
obj.type = reader.read("!H")[0]
_length = reader.read("!H")[0]
orig_reader = reader
- reader = orig_reader.slice(_length - (2 + 2))
+ reader = orig_reader.slice(_length, 4)
return obj
def __eq__(self, other):
diff --git a/src/python/loxi/of14/util.py b/src/python/loxi/of14/util.py
index ec675ed..5eadb10 100644
--- a/src/python/loxi/of14/util.py
+++ b/src/python/loxi/of14/util.py
@@ -93,6 +93,28 @@
x >>= 1
return value
+def pack_bitmap_512(value):
+ words = [0] * 8
+ for v in value:
+ assert v < 512
+ words[7-v/64] |= 1 << (v % 64)
+ return struct.pack("!8Q", *words)
+
+def unpack_bitmap_512(reader):
+ words = reader.read("!8Q")
+ x = 0l
+ for word in words:
+ x <<= 64
+ x |= word
+ i = 0
+ value = set()
+ while x != 0:
+ if x & 1 == 1:
+ value.add(i)
+ i += 1
+ x >>= 1
+ return value
+
def pack_checksum_128(value):
return struct.pack("!QQ", (value >> 64) & MASK64, value & MASK64)
diff --git a/src/python/oftest/controller.py b/src/python/oftest/controller.py
index 5289fdd..acbe3fc 100644
--- a/src/python/oftest/controller.py
+++ b/src/python/oftest/controller.py
@@ -160,10 +160,14 @@
if self.passive:
self.logger.info("Create/listen at " + self.host + ":" +
str(self.port))
- self.listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ ai = socket.getaddrinfo(self.host, self.port, socket.AF_UNSPEC,
+ socket.SOCK_STREAM, 0, socket.AI_PASSIVE)
+ # Use first returned addrinfo
+ (family, socktype, proto, name, sockaddr) = ai[0]
+ self.listen_socket = socket.socket(family, socktype)
self.listen_socket.setsockopt(socket.SOL_SOCKET,
socket.SO_REUSEADDR, 1)
- self.listen_socket.bind((self.host, self.port))
+ self.listen_socket.bind(sockaddr)
self.listen_socket.listen(LISTEN_QUEUE_SIZE)
def filter_packet(self, rawmsg, hdr):
diff --git a/tests-1.4/role_status.py b/tests-1.4/role_status.py
new file mode 100644
index 0000000..39a6ec3
--- /dev/null
+++ b/tests-1.4/role_status.py
@@ -0,0 +1,89 @@
+"""
+Test the role status message
+"""
+import struct
+import unittest
+import logging
+
+import oftest
+from oftest import config
+import oftest.controller as controller
+import ofp
+import oftest.base_tests as base_tests
+
+from oftest.testutils import *
+
+def simple_role_request(test, role, gen=None, con=None):
+ """
+ Send a role request we expect to succeed
+ """
+ if con == None:
+ con = test.controller
+ request = ofp.message.role_request(role=role, generation_id=gen)
+ response, _ = con.transact(request)
+ test.assertTrue(isinstance(response, ofp.message.role_reply), "Expected a role reply")
+ if role != ofp.OFPCR_ROLE_NOCHANGE:
+ test.assertEquals(response.role, role)
+ if gen != None:
+ test.assertEquals(response.generation_id, gen)
+ return response.role, response.generation_id
+
+@disabled
+class RoleStatus(unittest.TestCase):
+ """
+ Verify that when a connection becomes a master the existing master is
+ downgraded to slave and receives a role-status message.
+
+ Requires the switch to attempt to connect in parallel to ports 6653
+ and 6753 on the configured IP.
+ """
+
+ def setUp(self):
+ host = config["controller_host"]
+ self.controllers = [
+ controller.Controller(host=host,port=6653),
+ controller.Controller(host=host,port=6753)
+ ]
+
+ def runTest(self):
+ # Connect and handshake with both controllers
+ for con in self.controllers:
+ con.start()
+ if not con.connect():
+ raise AssertionError("failed to connect controller %s" % str(con))
+ reply, _ = con.transact(ofp.message.features_request())
+ self.assertTrue(isinstance(reply, ofp.message.features_reply))
+
+ # Assert initial role and get generation IDs
+ role, gen0 = simple_role_request(self, ofp.OFPCR_ROLE_NOCHANGE, con=self.controllers[0])
+ self.assertEqual(role, ofp.OFPCR_ROLE_EQUAL)
+ role, gen1 = simple_role_request(self, ofp.OFPCR_ROLE_NOCHANGE, con=self.controllers[1])
+ self.assertEqual(role, ofp.OFPCR_ROLE_EQUAL)
+
+ # Initial role assignment: controller 0 is master, controller 1 is slave
+ simple_role_request(self, ofp.OFPCR_ROLE_MASTER, gen0, con=self.controllers[0])
+ simple_role_request(self, ofp.OFPCR_ROLE_SLAVE, gen1, con=self.controllers[1])
+ self.verify_role(self.controllers[0], ofp.OFPCR_ROLE_MASTER)
+ self.verify_role(self.controllers[1], ofp.OFPCR_ROLE_SLAVE)
+
+ # Controller 1 requests master
+ # Controller 0 becomes slave
+ simple_role_request(self, ofp.OFPCR_ROLE_MASTER, gen1, con=self.controllers[1])
+ self.verify_role(self.controllers[0], ofp.OFPCR_ROLE_SLAVE)
+ self.verify_role(self.controllers[1], ofp.OFPCR_ROLE_MASTER)
+
+ # Controller 0 should receive a role_status message
+ msg, _ = self.controllers[0].poll(ofp.message.role_status)
+ self.assertIsInstance(msg, ofp.message.role_status)
+ self.assertEqual(msg.role, ofp.OFPCR_ROLE_SLAVE)
+ self.assertEqual(msg.reason, ofp.OFPCRR_MASTER_REQUEST)
+ self.assertEqual(msg.generation_id, gen1)
+
+ def verify_role(self, con, role):
+ rcv_role, _ = simple_role_request(self, ofp.OFPCR_ROLE_NOCHANGE, con=con)
+ self.assertEqual(rcv_role, role)
+
+ def tearDown(self):
+ for con in self.controllers:
+ con.shutdown()
+