From 41877dac0b7aef2104ccce95c9606ac25c034e24 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Tue, 2 Jul 2013 11:13:48 +0900 Subject: [PATCH] of1.3: omit mask attribute from str() when appropriate normalize str() outputs so that tests like str(msg1) == str(msg2) more likely succeed. Signed-off-by: YAMAMOTO Takashi Signed-off-by: FUJITA Tomonori --- ryu/ofproto/ofproto_v1_3_parser.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/ryu/ofproto/ofproto_v1_3_parser.py b/ryu/ofproto/ofproto_v1_3_parser.py index 060b8267..7c28065d 100644 --- a/ryu/ofproto/ofproto_v1_3_parser.py +++ b/ryu/ofproto/ofproto_v1_3_parser.py @@ -958,8 +958,6 @@ class OFPMatchField(StringifyMixin): del v['header'] del v['length'] del v['n_bytes'] - if 'mask' in v and v['mask'] is None: - del v['mask'] return d @classmethod @@ -968,6 +966,19 @@ class OFPMatchField(StringifyMixin): # it will be converted by OFPMatch.__init__(). return {cls.__name__: dict_} + def stringify_attrs(self): + f = super(OFPMatchField, self).stringify_attrs + if not ofproto_v1_3.oxm_tlv_header_extract_hasmask(self.header): + # something like the following, but yield two values (k,v) + # return itertools.ifilter(lambda k, v: k != 'mask', iter()) + def g(): + for k, v in f(): + if k != 'mask': + yield (k, v) + return g() + else: + return f() + @OFPMatchField.register_field_header([ofproto_v1_3.OXM_OF_IN_PORT]) class MTInPort(OFPMatchField):