diff options
author | YAMAMOTO Takashi <yamamoto@valinux.co.jp> | 2014-03-05 16:56:41 +0900 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2014-03-05 17:07:55 +0900 |
commit | e0ce84983ef41fff1299a435b37a683e74c639ec (patch) | |
tree | 3dc6d85ef343e3419220b631baf92df41e0787c7 | |
parent | fb470142a6f88df780801aa9a02c25fe2f4d4d63 (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.py | 30 |
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 |