diff options
author | YAMAMOTO Takashi <yamamoto@valinux.co.jp> | 2013-07-02 11:13:48 +0900 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2013-07-12 06:50:06 +0900 |
commit | 41877dac0b7aef2104ccce95c9606ac25c034e24 (patch) | |
tree | 18130274687fac3f79ecfb1b3c2de1fd26ecb85f | |
parent | 309e9c688ca6b80f7a666c6909119fcd1e47e11e (diff) |
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 <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r-- | ryu/ofproto/ofproto_v1_3_parser.py | 15 |
1 files 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): |