diff options
author | Rob Udechukwu <rnudechu@ncsu.edu> | 2014-02-21 15:38:24 +0900 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2014-02-21 15:38:24 +0900 |
commit | 98f5c2aad0956a79bdefad945b1167f6121d5c43 (patch) | |
tree | 637fc1373ef5d01da363d1edd408801c35be35dc | |
parent | f3f784e01bfb53dab7ee7c9a99ea7a8e1c049ac3 (diff) |
of13: support OFPAactionExperimenter with data
The length check assert was added by FUJITA since the spec says that
lenght of data should be a multiple of 8.
Signed-off-by: Rob Udechukwu <rnudechu@ncsu.edu>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r-- | ryu/ofproto/ofproto_v1_3_parser.py | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/ryu/ofproto/ofproto_v1_3_parser.py b/ryu/ofproto/ofproto_v1_3_parser.py index 39864d2b..06adddaa 100644 --- a/ryu/ofproto/ofproto_v1_3_parser.py +++ b/ryu/ofproto/ofproto_v1_3_parser.py @@ -3159,19 +3159,26 @@ class OFPActionExperimenter(OFPAction): experimenter Experimenter ID ================ ====================================================== """ - def __init__(self, experimenter, type_=None, len_=None): + def __init__(self, experimenter, data=None, type_=None, len_=None): super(OFPActionExperimenter, self).__init__() self.experimenter = experimenter + self.data = data + self.len = (utils.round_up(len(data), 8) + + ofproto.OFP_ACTION_EXPERIMENTER_HEADER_SIZE) @classmethod def parser(cls, buf, offset): (type_, len_, experimenter) = struct.unpack_from( ofproto.OFP_ACTION_EXPERIMENTER_HEADER_PACK_STR, buf, offset) - return cls(experimenter) + data = buf[(offset + ofproto.OFP_ACTION_EXPERIMENTER_HEADER_SIZE + ): offset + len_] + return cls(experimenter, data) def serialize(self, buf, offset): msg_pack_into(ofproto.OFP_ACTION_EXPERIMENTER_HEADER_PACK_STR, buf, offset, self.type, self.len, self.experimenter) + if self.data: + buf += self.data class OFPBucket(StringifyMixin): |