summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRob Udechukwu <rnudechu@ncsu.edu>2014-02-21 15:38:24 +0900
committerFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2014-02-21 15:38:24 +0900
commit98f5c2aad0956a79bdefad945b1167f6121d5c43 (patch)
tree637fc1373ef5d01da363d1edd408801c35be35dc
parentf3f784e01bfb53dab7ee7c9a99ea7a8e1c049ac3 (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.py11
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):