update pyloxi to floodlight/loxigen-artifacts @f0964fcb4f8ba88a058a3110b7c647c971b18712
diff --git a/src/python/loxi/of10/__init__.py b/src/python/loxi/of10/__init__.py
index e1c5e3a..db3105d 100644
--- a/src/python/loxi/of10/__init__.py
+++ b/src/python/loxi/of10/__init__.py
@@ -6,7 +6,10 @@
# Automatically generated by LOXI from template init.py
# Do not modify
-import action, common, const, message
+import const
+import action
+import message
+import common
from const import *
from common import *
from loxi import ProtocolError
diff --git a/src/python/loxi/of10/action.py b/src/python/loxi/of10/action.py
index a69de3b..e2cf539 100644
--- a/src/python/loxi/of10/action.py
+++ b/src/python/loxi/of10/action.py
@@ -9,8 +9,9 @@
import struct
import loxi
import const
-import common
import action
+import message
+import common
import util
import loxi.generic_util
diff --git a/src/python/loxi/of10/common.py b/src/python/loxi/of10/common.py
index 334ee4d..fb835a7 100644
--- a/src/python/loxi/of10/common.py
+++ b/src/python/loxi/of10/common.py
@@ -9,8 +9,9 @@
import struct
import loxi
import const
-import common
import action
+import message
+import common
import util
import loxi.generic_util
diff --git a/src/python/loxi/of10/message.py b/src/python/loxi/of10/message.py
index bd4b5f4..24b4e94 100644
--- a/src/python/loxi/of10/message.py
+++ b/src/python/loxi/of10/message.py
@@ -9,8 +9,9 @@
import struct
import loxi
import const
-import common
import action
+import message
+import common
import util
import loxi.generic_util
diff --git a/src/python/loxi/of11/__init__.py b/src/python/loxi/of11/__init__.py
index e24e54a..b302f09 100644
--- a/src/python/loxi/of11/__init__.py
+++ b/src/python/loxi/of11/__init__.py
@@ -6,8 +6,11 @@
# Automatically generated by LOXI from template init.py
# Do not modify
-import action, common, const, message
+import const
+import action
+import message
import instruction
+import common
from const import *
from common import *
from loxi import ProtocolError
diff --git a/src/python/loxi/of11/action.py b/src/python/loxi/of11/action.py
index 42f8340..bd82ddf 100644
--- a/src/python/loxi/of11/action.py
+++ b/src/python/loxi/of11/action.py
@@ -9,9 +9,10 @@
import struct
import loxi
import const
-import common
import action
+import message
import instruction
+import common
import util
import loxi.generic_util
diff --git a/src/python/loxi/of11/common.py b/src/python/loxi/of11/common.py
index 8d9a0ee..e379ce0 100644
--- a/src/python/loxi/of11/common.py
+++ b/src/python/loxi/of11/common.py
@@ -9,9 +9,10 @@
import struct
import loxi
import const
-import common
import action
+import message
import instruction
+import common
import util
import loxi.generic_util
diff --git a/src/python/loxi/of11/instruction.py b/src/python/loxi/of11/instruction.py
index 07359f8..e4d2fb0 100644
--- a/src/python/loxi/of11/instruction.py
+++ b/src/python/loxi/of11/instruction.py
@@ -9,9 +9,10 @@
import struct
import loxi
import const
-import common
import action
+import message
import instruction
+import common
import util
import loxi.generic_util
diff --git a/src/python/loxi/of11/message.py b/src/python/loxi/of11/message.py
index d856678..c9f05a1 100644
--- a/src/python/loxi/of11/message.py
+++ b/src/python/loxi/of11/message.py
@@ -9,9 +9,10 @@
import struct
import loxi
import const
-import common
import action
+import message
import instruction
+import common
import util
import loxi.generic_util
diff --git a/src/python/loxi/of12/__init__.py b/src/python/loxi/of12/__init__.py
index ca8395c..3554f08 100644
--- a/src/python/loxi/of12/__init__.py
+++ b/src/python/loxi/of12/__init__.py
@@ -6,9 +6,12 @@
# Automatically generated by LOXI from template init.py
# Do not modify
-import action, common, const, message
-import instruction
+import const
+import action
import oxm
+import message
+import instruction
+import common
from const import *
from common import *
from loxi import ProtocolError
diff --git a/src/python/loxi/of12/action.py b/src/python/loxi/of12/action.py
index c66427c..5cfd754 100644
--- a/src/python/loxi/of12/action.py
+++ b/src/python/loxi/of12/action.py
@@ -9,10 +9,11 @@
import struct
import loxi
import const
-import common
import action
-import instruction
import oxm
+import message
+import instruction
+import common
import util
import loxi.generic_util
diff --git a/src/python/loxi/of12/common.py b/src/python/loxi/of12/common.py
index cba725f..4bb1449 100644
--- a/src/python/loxi/of12/common.py
+++ b/src/python/loxi/of12/common.py
@@ -9,10 +9,11 @@
import struct
import loxi
import const
-import common
import action
-import instruction
import oxm
+import message
+import instruction
+import common
import util
import loxi.generic_util
diff --git a/src/python/loxi/of12/instruction.py b/src/python/loxi/of12/instruction.py
index 252d77f..06786ed 100644
--- a/src/python/loxi/of12/instruction.py
+++ b/src/python/loxi/of12/instruction.py
@@ -9,10 +9,11 @@
import struct
import loxi
import const
-import common
import action
-import instruction
import oxm
+import message
+import instruction
+import common
import util
import loxi.generic_util
diff --git a/src/python/loxi/of12/message.py b/src/python/loxi/of12/message.py
index 103ba89..ab8f30b 100644
--- a/src/python/loxi/of12/message.py
+++ b/src/python/loxi/of12/message.py
@@ -9,10 +9,11 @@
import struct
import loxi
import const
-import common
import action
-import instruction
import oxm
+import message
+import instruction
+import common
import util
import loxi.generic_util
diff --git a/src/python/loxi/of12/oxm.py b/src/python/loxi/of12/oxm.py
index f329c69..391d55a 100644
--- a/src/python/loxi/of12/oxm.py
+++ b/src/python/loxi/of12/oxm.py
@@ -9,10 +9,11 @@
import struct
import loxi
import const
-import common
import action
-import instruction
import oxm
+import message
+import instruction
+import common
import util
import loxi.generic_util
diff --git a/src/python/loxi/of13/__init__.py b/src/python/loxi/of13/__init__.py
index f751290..0a038fa 100644
--- a/src/python/loxi/of13/__init__.py
+++ b/src/python/loxi/of13/__init__.py
@@ -6,11 +6,16 @@
# Automatically generated by LOXI from template init.py
# Do not modify
-import action, common, const, message
+import const
+import bsn_tlv
+import meter_band
import instruction
import oxm
-import meter_band
-import bsn_tlv
+import common
+import instruction_id
+import action
+import message
+import action_id
from const import *
from common import *
from loxi import ProtocolError
diff --git a/src/python/loxi/of13/action.py b/src/python/loxi/of13/action.py
index d99ff1b..25f1e1f 100644
--- a/src/python/loxi/of13/action.py
+++ b/src/python/loxi/of13/action.py
@@ -9,14 +9,15 @@
import struct
import loxi
import const
-import common
-import action
+import bsn_tlv
+import meter_band
import instruction
import oxm
-import action_id
+import common
import instruction_id
-import meter_band
-import bsn_tlv
+import action
+import message
+import action_id
import util
import loxi.generic_util
diff --git a/src/python/loxi/of13/action_id.py b/src/python/loxi/of13/action_id.py
index 168a383..6e3a3e6 100644
--- a/src/python/loxi/of13/action_id.py
+++ b/src/python/loxi/of13/action_id.py
@@ -9,14 +9,15 @@
import struct
import loxi
import const
-import common
-import action
+import bsn_tlv
+import meter_band
import instruction
import oxm
-import action_id
+import common
import instruction_id
-import meter_band
-import bsn_tlv
+import action
+import message
+import action_id
import util
import loxi.generic_util
diff --git a/src/python/loxi/of13/bsn_tlv.py b/src/python/loxi/of13/bsn_tlv.py
index 6e26651..a387167 100644
--- a/src/python/loxi/of13/bsn_tlv.py
+++ b/src/python/loxi/of13/bsn_tlv.py
@@ -9,14 +9,15 @@
import struct
import loxi
import const
-import common
-import action
+import bsn_tlv
+import meter_band
import instruction
import oxm
-import action_id
+import common
import instruction_id
-import meter_band
-import bsn_tlv
+import action
+import message
+import action_id
import util
import loxi.generic_util
@@ -67,6 +68,241 @@
q.text('}')
+class actor_key(bsn_tlv):
+ type = 44
+
+ 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 = actor_key()
+ _type = reader.read("!H")[0]
+ assert(_type == 44)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length - (2 + 2))
+ 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("actor_key {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[44] = actor_key
+
+class actor_port_num(bsn_tlv):
+ type = 43
+
+ 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 = actor_port_num()
+ _type = reader.read("!H")[0]
+ assert(_type == 43)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length - (2 + 2))
+ 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("actor_port_num {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[43] = actor_port_num
+
+class actor_port_priority(bsn_tlv):
+ type = 42
+
+ 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 = actor_port_priority()
+ _type = reader.read("!H")[0]
+ assert(_type == 42)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length - (2 + 2))
+ 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("actor_port_priority {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[42] = actor_port_priority
+
+class actor_system_mac(bsn_tlv):
+ type = 41
+
+ def __init__(self, value=None):
+ if value != None:
+ self.value = value
+ else:
+ self.value = [0,0,0,0,0,0]
+ return
+
+ def pack(self):
+ packed = []
+ packed.append(struct.pack("!H", self.type))
+ packed.append(struct.pack("!H", 0)) # placeholder for length at index 1
+ packed.append(struct.pack("!6B", *self.value))
+ length = sum([len(x) for x in packed])
+ packed[1] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = actor_system_mac()
+ _type = reader.read("!H")[0]
+ assert(_type == 41)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length - (2 + 2))
+ obj.value = list(reader.read('!6B'))
+ return obj
+
+ def __eq__(self, other):
+ if type(self) != type(other): return False
+ if self.value != other.value: return False
+ return True
+
+ def pretty_print(self, q):
+ q.text("actor_system_mac {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text(util.pretty_mac(self.value))
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[41] = actor_system_mac
+
+class actor_system_priority(bsn_tlv):
+ type = 40
+
+ 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 = actor_system_priority()
+ _type = reader.read("!H")[0]
+ assert(_type == 40)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length - (2 + 2))
+ 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("actor_system_priority {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[40] = actor_system_priority
+
class broadcast_query_timeout(bsn_tlv):
type = 10
@@ -161,6 +397,53 @@
bsn_tlv.subtypes[14] = circuit_id
+class convergence_status(bsn_tlv):
+ type = 45
+
+ 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 = convergence_status()
+ _type = reader.read("!H")[0]
+ assert(_type == 45)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length - (2 + 2))
+ 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("convergence_status {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[45] = convergence_status
+
class crc_enabled(bsn_tlv):
type = 22
@@ -208,6 +491,100 @@
bsn_tlv.subtypes[22] = crc_enabled
+class eth_dst(bsn_tlv):
+ type = 33
+
+ def __init__(self, value=None):
+ if value != None:
+ self.value = value
+ else:
+ self.value = [0,0,0,0,0,0]
+ return
+
+ def pack(self):
+ packed = []
+ packed.append(struct.pack("!H", self.type))
+ packed.append(struct.pack("!H", 0)) # placeholder for length at index 1
+ packed.append(struct.pack("!6B", *self.value))
+ length = sum([len(x) for x in packed])
+ packed[1] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = eth_dst()
+ _type = reader.read("!H")[0]
+ assert(_type == 33)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length - (2 + 2))
+ obj.value = list(reader.read('!6B'))
+ return obj
+
+ def __eq__(self, other):
+ if type(self) != type(other): return False
+ if self.value != other.value: return False
+ return True
+
+ def pretty_print(self, q):
+ q.text("eth_dst {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text(util.pretty_mac(self.value))
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[33] = eth_dst
+
+class eth_src(bsn_tlv):
+ type = 32
+
+ def __init__(self, value=None):
+ if value != None:
+ self.value = value
+ else:
+ self.value = [0,0,0,0,0,0]
+ return
+
+ def pack(self):
+ packed = []
+ packed.append(struct.pack("!H", self.type))
+ packed.append(struct.pack("!H", 0)) # placeholder for length at index 1
+ packed.append(struct.pack("!6B", *self.value))
+ length = sum([len(x) for x in packed])
+ packed[1] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = eth_src()
+ _type = reader.read("!H")[0]
+ assert(_type == 32)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length - (2 + 2))
+ obj.value = list(reader.read('!6B'))
+ return obj
+
+ def __eq__(self, other):
+ if type(self) != type(other): return False
+ if self.value != other.value: return False
+ return True
+
+ def pretty_print(self, q):
+ q.text("eth_src {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text(util.pretty_mac(self.value))
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[32] = eth_src
+
class external_gateway_ip(bsn_tlv):
type = 26
@@ -443,6 +820,53 @@
bsn_tlv.subtypes[25] = external_netmask
+class header_size(bsn_tlv):
+ type = 31
+
+ 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 = header_size()
+ _type = reader.read("!H")[0]
+ assert(_type == 31)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length - (2 + 2))
+ 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("header_size {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[31] = header_size
+
class idle_notification(bsn_tlv):
type = 7
@@ -716,6 +1140,100 @@
bsn_tlv.subtypes[4] = ipv4
+class ipv4_dst(bsn_tlv):
+ type = 35
+
+ 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 = ipv4_dst()
+ _type = reader.read("!H")[0]
+ assert(_type == 35)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length - (2 + 2))
+ 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("ipv4_dst {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text(util.pretty_ipv4(self.value))
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[35] = ipv4_dst
+
+class ipv4_src(bsn_tlv):
+ type = 34
+
+ 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 = ipv4_src()
+ _type = reader.read("!H")[0]
+ assert(_type == 34)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length - (2 + 2))
+ 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("ipv4_src {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text(util.pretty_ipv4(self.value))
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[34] = ipv4_src
+
class mac(bsn_tlv):
type = 1
@@ -810,6 +1328,241 @@
bsn_tlv.subtypes[13] = miss_packets
+class partner_key(bsn_tlv):
+ type = 51
+
+ 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 = partner_key()
+ _type = reader.read("!H")[0]
+ assert(_type == 51)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length - (2 + 2))
+ 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("partner_key {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[51] = partner_key
+
+class partner_port_num(bsn_tlv):
+ type = 50
+
+ 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 = partner_port_num()
+ _type = reader.read("!H")[0]
+ assert(_type == 50)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length - (2 + 2))
+ 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("partner_port_num {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[50] = partner_port_num
+
+class partner_port_priority(bsn_tlv):
+ type = 49
+
+ 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 = partner_port_priority()
+ _type = reader.read("!H")[0]
+ assert(_type == 49)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length - (2 + 2))
+ 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("partner_port_priority {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[49] = partner_port_priority
+
+class partner_system_mac(bsn_tlv):
+ type = 48
+
+ def __init__(self, value=None):
+ if value != None:
+ self.value = value
+ else:
+ self.value = [0,0,0,0,0,0]
+ return
+
+ def pack(self):
+ packed = []
+ packed.append(struct.pack("!H", self.type))
+ packed.append(struct.pack("!H", 0)) # placeholder for length at index 1
+ packed.append(struct.pack("!6B", *self.value))
+ length = sum([len(x) for x in packed])
+ packed[1] = struct.pack("!H", length)
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = partner_system_mac()
+ _type = reader.read("!H")[0]
+ assert(_type == 48)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length - (2 + 2))
+ obj.value = list(reader.read('!6B'))
+ return obj
+
+ def __eq__(self, other):
+ if type(self) != type(other): return False
+ if self.value != other.value: return False
+ return True
+
+ def pretty_print(self, q):
+ q.text("partner_system_mac {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text(util.pretty_mac(self.value))
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[48] = partner_system_mac
+
+class partner_system_priority(bsn_tlv):
+ type = 47
+
+ 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 = partner_system_priority()
+ _type = reader.read("!H")[0]
+ assert(_type == 47)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length - (2 + 2))
+ 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("partner_system_priority {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[47] = partner_system_priority
+
class port(bsn_tlv):
type = 0
@@ -1092,6 +1845,147 @@
bsn_tlv.subtypes[2] = rx_packets
+class sampling_rate(bsn_tlv):
+ type = 30
+
+ 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 = sampling_rate()
+ _type = reader.read("!H")[0]
+ assert(_type == 30)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length - (2 + 2))
+ 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("sampling_rate {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+bsn_tlv.subtypes[30] = sampling_rate
+
+class sub_agent_id(bsn_tlv):
+ type = 38
+
+ 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 = sub_agent_id()
+ _type = reader.read("!H")[0]
+ assert(_type == 38)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length - (2 + 2))
+ 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("sub_agent_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[38] = sub_agent_id
+
+class tx_bytes(bsn_tlv):
+ type = 39
+
+ 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 = tx_bytes()
+ _type = reader.read("!H")[0]
+ assert(_type == 39)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length - (2 + 2))
+ 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("tx_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[39] = tx_bytes
+
class tx_packets(bsn_tlv):
type = 3
@@ -1327,6 +2221,100 @@
bsn_tlv.subtypes[17] = udf_offset
+class udp_dst(bsn_tlv):
+ type = 37
+
+ 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 = udp_dst()
+ _type = reader.read("!H")[0]
+ assert(_type == 37)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length - (2 + 2))
+ 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("udp_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[37] = udp_dst
+
+class udp_src(bsn_tlv):
+ type = 36
+
+ 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 = udp_src()
+ _type = reader.read("!H")[0]
+ assert(_type == 36)
+ _length = reader.read("!H")[0]
+ orig_reader = reader
+ reader = orig_reader.slice(_length - (2 + 2))
+ 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("udp_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[36] = udp_src
+
class unicast_query_timeout(bsn_tlv):
type = 9
diff --git a/src/python/loxi/of13/common.py b/src/python/loxi/of13/common.py
index 31eecb3..3e30b70 100644
--- a/src/python/loxi/of13/common.py
+++ b/src/python/loxi/of13/common.py
@@ -9,14 +9,15 @@
import struct
import loxi
import const
-import common
-import action
+import bsn_tlv
+import meter_band
import instruction
import oxm
-import action_id
+import common
import instruction_id
-import meter_band
-import bsn_tlv
+import action
+import message
+import action_id
import util
import loxi.generic_util
diff --git a/src/python/loxi/of13/instruction.py b/src/python/loxi/of13/instruction.py
index 787c958..dc110e4 100644
--- a/src/python/loxi/of13/instruction.py
+++ b/src/python/loxi/of13/instruction.py
@@ -9,14 +9,15 @@
import struct
import loxi
import const
-import common
-import action
+import bsn_tlv
+import meter_band
import instruction
import oxm
-import action_id
+import common
import instruction_id
-import meter_band
-import bsn_tlv
+import action
+import message
+import action_id
import util
import loxi.generic_util
diff --git a/src/python/loxi/of13/instruction_id.py b/src/python/loxi/of13/instruction_id.py
index b08b27a..31c98e0 100644
--- a/src/python/loxi/of13/instruction_id.py
+++ b/src/python/loxi/of13/instruction_id.py
@@ -9,14 +9,15 @@
import struct
import loxi
import const
-import common
-import action
+import bsn_tlv
+import meter_band
import instruction
import oxm
-import action_id
+import common
import instruction_id
-import meter_band
-import bsn_tlv
+import action
+import message
+import action_id
import util
import loxi.generic_util
diff --git a/src/python/loxi/of13/message.py b/src/python/loxi/of13/message.py
index 1ca1a73..db67eff 100644
--- a/src/python/loxi/of13/message.py
+++ b/src/python/loxi/of13/message.py
@@ -9,14 +9,15 @@
import struct
import loxi
import const
-import common
-import action
+import bsn_tlv
+import meter_band
import instruction
import oxm
-import action_id
+import common
import instruction_id
-import meter_band
-import bsn_tlv
+import action
+import message
+import action_id
import util
import loxi.generic_util
diff --git a/src/python/loxi/of13/meter_band.py b/src/python/loxi/of13/meter_band.py
index 6453c4f..18fc066 100644
--- a/src/python/loxi/of13/meter_band.py
+++ b/src/python/loxi/of13/meter_band.py
@@ -9,14 +9,15 @@
import struct
import loxi
import const
-import common
-import action
+import bsn_tlv
+import meter_band
import instruction
import oxm
-import action_id
+import common
import instruction_id
-import meter_band
-import bsn_tlv
+import action
+import message
+import action_id
import util
import loxi.generic_util
diff --git a/src/python/loxi/of13/oxm.py b/src/python/loxi/of13/oxm.py
index 58a04fe..4342a6a 100644
--- a/src/python/loxi/of13/oxm.py
+++ b/src/python/loxi/of13/oxm.py
@@ -9,14 +9,15 @@
import struct
import loxi
import const
-import common
-import action
+import bsn_tlv
+import meter_band
import instruction
import oxm
-import action_id
+import common
import instruction_id
-import meter_band
-import bsn_tlv
+import action
+import message
+import action_id
import util
import loxi.generic_util
@@ -4109,6 +4110,98 @@
oxm.subtypes[2147484944] = metadata_masked
+class mpls_bos(oxm):
+ type_len = 2147502081
+
+ 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("!B", self.value))
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = mpls_bos()
+ _type_len = reader.read("!L")[0]
+ assert(_type_len == 2147502081)
+ 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_bos {")
+ with q.group():
+ with q.indent(2):
+ q.breakable()
+ q.text("value = ");
+ q.text("%#x" % self.value)
+ q.breakable()
+ q.text('}')
+
+oxm.subtypes[2147502081] = mpls_bos
+
+class mpls_bos_masked(oxm):
+ type_len = 2147502338
+
+ 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("!B", self.value))
+ packed.append(struct.pack("!B", self.value_mask))
+ return ''.join(packed)
+
+ @staticmethod
+ def unpack(reader):
+ obj = mpls_bos_masked()
+ _type_len = reader.read("!L")[0]
+ assert(_type_len == 2147502338)
+ obj.value = reader.read("!B")[0]
+ obj.value_mask = reader.read("!B")[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("mpls_bos_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[2147502338] = mpls_bos_masked
+
class mpls_label(oxm):
type_len = 2147501060