summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYusuke Iwase <iwase.yusuke0@gmail.com>2015-09-10 15:49:24 +0900
committerFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2015-09-15 17:02:17 +0900
commit388adf152c5a5cacae4e69a2c8df1863b1f619a7 (patch)
tree4d96e6f17cf971bff32cf482baba0d337d9a5b3e
parent5cda019b3cf326dc27fc2d12ab103e3322453fee (diff)
ofproto_v1_0_parser: Add __getitem__ method into OFPMatch
Currently, ofproto_v1_0_parser does not support query with a match field name like ofproto_v1_[2345]_parser support. This patch adds __getitem__ method in order to get the match value witch a match field name. Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r--ryu/ofproto/ofproto_v1_0_parser.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/ryu/ofproto/ofproto_v1_0_parser.py b/ryu/ofproto/ofproto_v1_0_parser.py
index 4001b071..9f0e4ffd 100644
--- a/ryu/ofproto/ofproto_v1_0_parser.py
+++ b/ryu/ofproto/ofproto_v1_0_parser.py
@@ -205,6 +205,27 @@ class OFPMatch(StringifyMixin):
else:
self.wildcards = wildcards
+ def __getitem__(self, name):
+ if not isinstance(name, str):
+ raise KeyError(name)
+ elif name == 'nw_src_mask':
+ _m = 32 - ((self.wildcards & ofproto.OFPFW_NW_SRC_MASK) >>
+ ofproto.OFPFW_NW_SRC_SHIFT)
+ return 0 if _m < 0 else _m
+ elif name == 'nw_dst_mask':
+ _m = 32 - ((self.wildcards & ofproto.OFPFW_NW_DST_MASK) >>
+ ofproto.OFPFW_NW_DST_SHIFT)
+ return 0 if _m < 0 else _m
+ elif name == 'wildcards':
+ return self.wildcards
+
+ wc_name = 'OFPFW_' + name.upper()
+ wc = getattr(ofproto, wc_name, ofproto.OFPFW_ALL)
+ if self.wildcards & ~wc:
+ return getattr(self, name)
+ else:
+ raise KeyError(name)
+
def serialize(self, buf, offset):
msg_pack_into(ofproto.OFP_MATCH_PACK_STR, buf, offset,
self.wildcards, self.in_port, self.dl_src,