From d88a62d9cf16dc09e12058f8446c672837e97a0e Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Tue, 23 Jul 2013 16:03:34 +0900 Subject: [PATCH] of13: make OFPMatch.to_jsondict work on instances composed with old api Signed-off-by: YAMAMOTO Takashi Signed-off-by: FUJITA Tomonori --- ryu/ofproto/ofproto_v1_3_parser.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/ryu/ofproto/ofproto_v1_3_parser.py b/ryu/ofproto/ofproto_v1_3_parser.py index 3542b5d0..f59c65d6 100644 --- a/ryu/ofproto/ofproto_v1_3_parser.py +++ b/ryu/ofproto/ofproto_v1_3_parser.py @@ -400,7 +400,18 @@ class OFPMatch(StringifyMixin): stringify_attrs = iteritems def to_jsondict(self): - return super(OFPMatch, self).to_jsondict(lambda x: x) + # XXX old api compat + if self._composed_with_old_api(): + # copy object first because serialize_old is destructive + o2 = OFPMatch() + o2.fields = self.fields[:] + # serialize and parse to fill OFPMatch._fields2 + buf = bytearray() + o2.serialize(buf, 0) + o = OFPMatch.parser(str(buf), 0) + else: + o = self + return super(OFPMatch, o).to_jsondict(lambda x: x) @classmethod def from_jsondict(cls, dict_):