From efcf9263b06b5f2a903f301e4ad8b02bc1a740a1 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Tue, 23 Jul 2013 16:03:20 +0900 Subject: [PATCH] of12: OFPMatch api compat make old query api work on OFPMatch instances created with from_jsondict. Signed-off-by: YAMAMOTO Takashi Signed-off-by: FUJITA Tomonori --- ryu/ofproto/ofproto_v1_2_parser.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/ryu/ofproto/ofproto_v1_2_parser.py b/ryu/ofproto/ofproto_v1_2_parser.py index da98770c..0f18d51b 100644 --- a/ryu/ofproto/ofproto_v1_2_parser.py +++ b/ryu/ofproto/ofproto_v1_2_parser.py @@ -1660,14 +1660,23 @@ class OFPMatch(StringifyMixin): @classmethod def from_jsondict(cls, dict_): - return super(OFPMatch, cls).from_jsondict(dict_, lambda x: x) + o = super(OFPMatch, cls).from_jsondict(dict_, lambda x: x) + # XXX old api compat + # serialize and parse to fill OFPMatch.fields + buf = bytearray() + o.serialize(buf, 0) + return OFPMatch.parser(str(buf), 0) def append_field(self, header, value, mask=None): self.fields.append(OFPMatchField.make(header, value, mask)) + def _composed_with_old_api(self): + return (self.fields and not self._fields2) or \ + self._wc.__dict__ != FlowWildcards().__dict__ + def serialize(self, buf, offset): # XXX compat - if self.fields or self._wc.__dict__ != FlowWildcards().__dict__: + if self._composed_with_old_api(): return self.serialize_old(buf, offset) fields = [ofproto_v1_2.oxm_from_user(k, v) for (k, v)