summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYAMAMOTO Takashi <yamamoto@valinux.co.jp>2013-07-23 16:03:32 +0900
committerFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2013-07-31 21:06:38 +0900
commit937001622cf1ba2290cd8312617c1d5ea387a3d7 (patch)
treefdcf4f120de857c612c9fcf3bf019e65f49c2bec
parent358017785a10171c49edd41281cb1a941966cf67 (diff)
of13: OFPMatch api compat
make old query api work on OFPMatch instances created with from_jsondict. 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.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/ryu/ofproto/ofproto_v1_3_parser.py b/ryu/ofproto/ofproto_v1_3_parser.py
index e7b6550a..7bd5432e 100644
--- a/ryu/ofproto/ofproto_v1_3_parser.py
+++ b/ryu/ofproto/ofproto_v1_3_parser.py
@@ -404,14 +404,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_3.oxm_from_user(k, v) for (k, v)