OF 1.3.3 spec (7.2.3.5 Flow Match Field Masking) says:
An all-zero-bits oxm_mask is equivalent to omitting the OXM TLV entirely.
An all-one-bits oxm_mask
is equivalent to specifying 0 for oxm_hasmask and omitting oxm_mask.
This patch fixes to compare OFPMatch ignoring masks that are all one bits.
Reported-by: Arne Goetje <[email protected]>
Signed-off-by: Yuichi Ito <[email protected]>
---
ryu/tests/switch/tester.py | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/ryu/tests/switch/tester.py b/ryu/tests/switch/tester.py
index 631412a..dd05050 100644
--- a/ryu/tests/switch/tester.py
+++ b/ryu/tests/switch/tester.py
@@ -779,6 +779,24 @@ class OfTester(app_manager.RyuApp):
break
def _compare_flow(self, stats1, stats2):
+
+ def __reasm_match(match):
+ """ reassemble match_fields. """
+ match_fields = list()
+ for key, united_value in match.iteritems():
+ if isinstance(united_value, tuple):
+ (value, mask) = united_value
+ # look up oxm_fields.TypeDescr to get mask length.
+ for ofb in ofproto_v1_3.oxm_types:
+ if ofb.name == key:
+ mbytes = ofb.type.from_user(mask)
+ # when mask is all one bits, remove mask
+ if mbytes == '\xff' * ofb.type.size:
+ united_value = value
+ break
+ match_fields.append((key, united_value))
+ return match_fields
+
attr_list = ['cookie', 'priority', 'hard_timeout', 'idle_timeout',
'table_id', 'instructions', 'match']
for attr in attr_list:
@@ -787,6 +805,9 @@ class OfTester(app_manager.RyuApp):
if attr == 'instructions':
value1 = sorted(value1)
value2 = sorted(value2)
+ elif attr == 'match':
+ value1 = __reasm_match(value1)
+ value2 = __reasm_match(value2)
if str(value1) != str(value2):
flow_stats = []
for attr in attr_list:
--
1.7.10.4
------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel