summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYAMAMOTO Takashi <yamamoto@valinux.co.jp>2014-03-05 16:56:41 +0900
committerFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2014-03-05 17:07:55 +0900
commite0ce84983ef41fff1299a435b37a683e74c639ec (patch)
tree3dc6d85ef343e3419220b631baf92df41e0787c7
parentfb470142a6f88df780801aa9a02c25fe2f4d4d63 (diff)
OFPPropCommonExperimenter4ByteData: change payload to bytes
Change experimenter data from a list of 32-bit words to bytes. Discussed on ryu-devel@. Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r--ryu/ofproto/ofproto_v1_4_parser.py30
1 files changed, 6 insertions, 24 deletions
diff --git a/ryu/ofproto/ofproto_v1_4_parser.py b/ryu/ofproto/ofproto_v1_4_parser.py
index b4f335a5..40910723 100644
--- a/ryu/ofproto/ofproto_v1_4_parser.py
+++ b/ryu/ofproto/ofproto_v1_4_parser.py
@@ -783,11 +783,10 @@ class OFPPropBase(StringifyMixin):
class OFPPropCommonExperimenter4ByteData(StringifyMixin):
- _DATA_ELEMENT_PACK_STR = '!I'
_PACK_STR = '!HHII'
def __init__(self, type_=None, length=None, experimenter=None,
- exp_type=None, data=None):
+ exp_type=None, data=bytearray()):
self.type = type_
self.length = length
self.experimenter = experimenter
@@ -796,38 +795,21 @@ class OFPPropCommonExperimenter4ByteData(StringifyMixin):
@classmethod
def parser(cls, buf):
- exp = cls()
- (exp.type, exp.length, exp.experimenter,
- exp.exp_type) = struct.unpack_from(
+ (type_, length, experimenter, exp_type) = struct.unpack_from(
ofproto.OFP_TABLE_MOD_PROP_EXPERIMENTER_PACK_STR, buf, 0)
-
- # Parse trailing data, a list of 4-byte words
- exp.data = []
- pack_size = struct.calcsize(cls._DATA_ELEMENT_PACK_STR)
- offset = ofproto.OFP_TABLE_MOD_PROP_EXPERIMENTER_SIZE
- while offset < exp.length:
- (word,) = struct.unpack_from(cls._DATA_ELEMENT_PACK_STR,
- buf, offset)
- exp.data.append(word)
- offset += pack_size
-
- return exp
+ data = buf[ofproto.OFP_TABLE_MOD_PROP_EXPERIMENTER_SIZE:length]
+ return cls(type_, length, experimenter, exp_type, data)
def serialize(self):
- data_buf = bytearray()
- if len(self.data):
- ofproto_parser.msg_pack_into('!%dI' % len(self.data),
- data_buf, 0, *self.data)
-
#fixup
self.length = struct.calcsize(self._PACK_STR)
- self.length += len(data_buf)
+ self.length += len(self.data)
buf = bytearray()
msg_pack_into(self._PACK_STR, buf,
0, self.type, self.length, self.experimenter,
self.exp_type)
- buf += data_buf
+ buf += self.data
# Pad
pad_len = utils.round_up(self.length, 8) - self.length