summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorSimon Horman <horms@verge.net.au>2014-02-27 09:06:53 +0900
committerFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2014-02-27 09:18:59 +0900
commit9aafc0eb56e6c3087b240529fac304193a6930cc (patch)
tree5ad67e58e566c96c5ef1ba2fd6d1ce217c055413
parent22a7078dcb444eeda26e198c977820758f3bb0a1 (diff)
of13: Add experimenter property to table features request unit test
Signed-off-by: Simon Horman <horms@verge.net.au> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r--ryu/ofproto/ofproto_v1_3_parser.py17
-rw-r--r--ryu/tests/packet_data/of13/4-55-ofp_table_features_request.packetbin11072 -> 11128 bytes
-rw-r--r--ryu/tests/packet_data_generator/src/x4.erl14
-rw-r--r--ryu/tests/unit/ofproto/json/of13/4-55-ofp_table_features_request.packet.json29
4 files changed, 47 insertions, 13 deletions
diff --git a/ryu/ofproto/ofproto_v1_3_parser.py b/ryu/ofproto/ofproto_v1_3_parser.py
index 2c286291..a0de4617 100644
--- a/ryu/ofproto/ofproto_v1_3_parser.py
+++ b/ryu/ofproto/ofproto_v1_3_parser.py
@@ -5126,7 +5126,7 @@ class OFPTableFeaturePropOxm(OFPTableFeatureProp):
@OFPTableFeatureProp.register_type(ofproto.OFPTFPT_EXPERIMENTER_MISS)
class OFPTableFeaturePropExperimenter(OFPTableFeatureProp):
_DATA_ELEMENT_PACK_STR = '!I'
- _PACK_STR = '!II'
+ _BODY_PACK_STR = '!II'
def __init__(self, type_, experimenter=None, exp_type=None,
data=None, length=None):
@@ -5138,13 +5138,14 @@ class OFPTableFeaturePropExperimenter(OFPTableFeatureProp):
@classmethod
def _parse_prop(cls, buf):
- (experimenter, exp_type) = struct.unpack_from(cls._PACK_STR, buf, 0)
+ (experimenter, exp_type) = struct.unpack_from(cls._BODY_PACK_STR,
+ buf, 0)
# Parse trailing data, a list of 4-byte words
length = len(buf)
data = []
pack_size = struct.calcsize(cls._DATA_ELEMENT_PACK_STR)
- offset = struct.calcsize(cls._PACK_STR)
+ offset = struct.calcsize(cls._BODY_PACK_STR)
while offset < length:
(word,) = struct.unpack_from(cls._DATA_ELEMENT_PACK_STR,
buf, offset)
@@ -5160,19 +5161,13 @@ class OFPTableFeaturePropExperimenter(OFPTableFeatureProp):
def _serialize_prop(self):
# experimenter, exp_type
buf = bytearray()
- msg_pack_into(self._PACK_STR, buf, 0, self.experimenter,
+ msg_pack_into(self._BODY_PACK_STR, buf, 0, self.experimenter,
self.exp_type)
# data
if len(self.data):
ofproto_parser.msg_pack_into('!%dI' % len(self.data),
- data_buf, len(buf), *self.data)
-
- # pad
- length = super(OFPTableFeaturePropExperimenter, self)._PACK_STR
- length += len(buf)
- pad_len = utils.round_up(length, 8) - length
- ofproto_parser.msg_pack_into("%dx" % pad_len, buf, len(buf))
+ buf, len(buf), *self.data)
return buf
diff --git a/ryu/tests/packet_data/of13/4-55-ofp_table_features_request.packet b/ryu/tests/packet_data/of13/4-55-ofp_table_features_request.packet
index 3df8c649..52b9d3b1 100644
--- a/ryu/tests/packet_data/of13/4-55-ofp_table_features_request.packet
+++ b/ryu/tests/packet_data/of13/4-55-ofp_table_features_request.packet
Binary files differ
diff --git a/ryu/tests/packet_data_generator/src/x4.erl b/ryu/tests/packet_data_generator/src/x4.erl
index 17852a2b..32e641a5 100644
--- a/ryu/tests/packet_data_generator/src/x4.erl
+++ b/ryu/tests/packet_data_generator/src/x4.erl
@@ -800,7 +800,19 @@ x() ->
arp_tha,ipv6_src,ipv6_dst,ipv6_flabel,
icmpv6_type,icmpv6_code,ipv6_nd_target,
ipv6_nd_sll,ipv6_nd_tll,mpls_label,mpls_tc,
- mpls_bos,pbb_isid]}]},
+ mpls_bos,pbb_isid]},
+ #ofp_table_feature_prop_experimenter{
+ experimenter = 101,
+ exp_type = 0,
+ data = <<>>},
+ #ofp_table_feature_prop_experimenter{
+ experimenter = 101,
+ exp_type = 1,
+ data = <<1:32>>},
+ #ofp_table_feature_prop_experimenter{
+ experimenter = 101,
+ exp_type = 2,
+ data = <<1:32,2:32>>}]},
#ofp_table_features{
table_id = 1,name = <<"Flow Table 0x01">>,
metadata_match = <<"\377\377\377\377\377\377\377\377">>,
diff --git a/ryu/tests/unit/ofproto/json/of13/4-55-ofp_table_features_request.packet.json b/ryu/tests/unit/ofproto/json/of13/4-55-ofp_table_features_request.packet.json
index 530eb14f..56002983 100644
--- a/ryu/tests/unit/ofproto/json/of13/4-55-ofp_table_features_request.packet.json
+++ b/ryu/tests/unit/ofproto/json/of13/4-55-ofp_table_features_request.packet.json
@@ -4,7 +4,7 @@
{
"OFPTableFeaturesStats": {
"config": 0,
- "length": 1112,
+ "length": 1168,
"max_entries": 16777216,
"metadata_match": 18446744073709551615,
"metadata_write": 18446744073709551615,
@@ -1591,6 +1591,33 @@
],
"type": 14
}
+ },
+ {
+ "OFPTableFeaturePropExperimenter": {
+ "length": 12,
+ "type": 65534,
+ "exp_type": 0,
+ "experimenter": 101,
+ "data": []
+ }
+ },
+ {
+ "OFPTableFeaturePropExperimenter": {
+ "length": 16,
+ "type": 65534,
+ "exp_type": 1,
+ "experimenter": 101,
+ "data": [1]
+ }
+ },
+ {
+ "OFPTableFeaturePropExperimenter": {
+ "length": 20,
+ "type": 65534,
+ "exp_type": 2,
+ "experimenter": 101,
+ "data": [1, 2]
+ }
}
],
"table_id": 0