summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYusuke Iwase <iwase.yusuke0@gmail.com>2015-09-17 16:30:22 +0900
committerFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2015-09-18 08:32:09 +0900
commitbe5b00996db0865b5a3e4c053dc4a08f108aa674 (patch)
tree83a1c556d385a2268af30ecc031b157e1a3e09d0
parent1d1777c891014a763fd19a0c83b433f7eff9b9ed (diff)
OXM/OXS: Enable to sort Experimenter oxm_type/oxs_type in Python3
The representation of oxm_type/oxs_type is an int type value if OXM/OXS in OpenFlowBasic class, but a tuple type value if in Experimenter class. So, Python3 may fail to sort a list of OXM/OXS fields by using oxm_type/oxs_type. This patch adds 'key' parameter into sort() method and enables to sort a list which contains both OpenFlowBasic and Experimenter. 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_2_parser.py3
-rw-r--r--ryu/ofproto/ofproto_v1_3_parser.py3
-rw-r--r--ryu/ofproto/ofproto_v1_4_parser.py3
-rw-r--r--ryu/ofproto/ofproto_v1_5_parser.py9
4 files changed, 12 insertions, 6 deletions
diff --git a/ryu/ofproto/ofproto_v1_2_parser.py b/ryu/ofproto/ofproto_v1_2_parser.py
index d67e0719..781b0674 100644
--- a/ryu/ofproto/ofproto_v1_2_parser.py
+++ b/ryu/ofproto/ofproto_v1_2_parser.py
@@ -3428,7 +3428,8 @@ class OFPMatch(StringifyMixin):
in kwargs.items()]
# assumption: sorting by OXM type values makes fields
# meet ordering requirements (eg. eth_type before ipv4_src)
- fields.sort()
+ fields.sort(
+ key=lambda x: x[0][0] if isinstance(x[0], tuple) else x[0])
self._fields2 = [ofproto.oxm_to_user(n, v, m) for (n, v, m)
in fields]
diff --git a/ryu/ofproto/ofproto_v1_3_parser.py b/ryu/ofproto/ofproto_v1_3_parser.py
index 58425255..47773f6c 100644
--- a/ryu/ofproto/ofproto_v1_3_parser.py
+++ b/ryu/ofproto/ofproto_v1_3_parser.py
@@ -832,7 +832,8 @@ class OFPMatch(StringifyMixin):
in kwargs.items()]
# assumption: sorting by OXM type values makes fields
# meet ordering requirements (eg. eth_type before ipv4_src)
- fields.sort()
+ fields.sort(
+ key=lambda x: x[0][0] if isinstance(x[0], tuple) else x[0])
self._fields2 = [ofproto.oxm_to_user(n, v, m) for (n, v, m)
in fields]
diff --git a/ryu/ofproto/ofproto_v1_4_parser.py b/ryu/ofproto/ofproto_v1_4_parser.py
index 388d6cb0..f060ec30 100644
--- a/ryu/ofproto/ofproto_v1_4_parser.py
+++ b/ryu/ofproto/ofproto_v1_4_parser.py
@@ -716,7 +716,8 @@ class OFPMatch(StringifyMixin):
in kwargs.items()]
# assumption: sorting by OXM type values makes fields
# meet ordering requirements (eg. eth_type before ipv4_src)
- fields.sort()
+ fields.sort(
+ key=lambda x: x[0][0] if isinstance(x[0], tuple) else x[0])
self._fields2 = [ofproto.oxm_to_user(n, v, m) for (n, v, m)
in fields]
diff --git a/ryu/ofproto/ofproto_v1_5_parser.py b/ryu/ofproto/ofproto_v1_5_parser.py
index a82d107d..cad827e9 100644
--- a/ryu/ofproto/ofproto_v1_5_parser.py
+++ b/ryu/ofproto/ofproto_v1_5_parser.py
@@ -717,7 +717,8 @@ class OFPMatch(StringifyMixin):
in kwargs.items()]
# assumption: sorting by OXM type values makes fields
# meet ordering requirements (eg. eth_type before ipv4_src)
- fields.sort()
+ fields.sort(
+ key=lambda x: x[0][0] if isinstance(x[0], tuple) else x[0])
self._fields2 = [ofproto.oxm_to_user(n, v, m) for (n, v, m)
in fields]
@@ -859,7 +860,8 @@ class OFPStats(StringifyMixin):
fields = [ofproto.oxs_from_user(k, v) for (k, v)
in kwargs.items()]
# sort by OXS type values
- fields.sort()
+ fields.sort(
+ key=lambda x: x[0][0] if isinstance(x[0], tuple) else x[0])
# No mask
self.fields = [ofproto.oxs_to_user(n, v, None) for (n, v, _)
in fields]
@@ -2231,7 +2233,8 @@ class OFPTableFeaturePropOxmValues(OFPTableFeatureProp):
in kwargs.items()]
# assumption: sorting by OXM type values makes fields
# meet ordering requirements (eg. eth_type before ipv4_src)
- values.sort()
+ values.sort(
+ key=lambda x: x[0][0] if isinstance(x[0], tuple) else x[0])
self.oxm_values = [ofproto.oxm_to_user(n, v, m) for (n, v, m)
in values]