Signed-off-by: YAMAMOTO Takashi <[email protected]>
---
 ryu/ofproto/ofproto_v1_3.py |  2 +-
 ryu/ofproto/oxm_fields.py   | 10 ++++++----
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/ryu/ofproto/ofproto_v1_3.py b/ryu/ofproto/ofproto_v1_3.py
index 7535dfd..b80c512 100644
--- a/ryu/ofproto/ofproto_v1_3.py
+++ b/ryu/ofproto/ofproto_v1_3.py
@@ -1177,7 +1177,7 @@ oxm_types = [
     oxm_fields.OpenFlowBasic('pbb_isid', 37, type_desc.Int3),
     oxm_fields.OpenFlowBasic('tunnel_id', 38, type_desc.Int8),
     oxm_fields.OpenFlowBasic('ipv6_exthdr', 39, type_desc.Int2),
-    oxm_fields.ONFExperimenter('pbb_uca', 2560, type_desc.Int1),
+    oxm_fields.OldONFExperimenter('pbb_uca', 2560, type_desc.Int1),
     oxm_fields.NiciraExtended1('tun_ipv4_src', 31, type_desc.IPv4Addr),
     oxm_fields.NiciraExtended1('tun_ipv4_dst', 32, type_desc.IPv4Addr),
 
diff --git a/ryu/ofproto/oxm_fields.py b/ryu/ofproto/oxm_fields.py
index 4ddcba5..52a53d0 100644
--- a/ryu/ofproto/oxm_fields.py
+++ b/ryu/ofproto/oxm_fields.py
@@ -95,11 +95,12 @@ class _Experimenter(_OxmClass):
         self.num = (self.experimenter_id, self.oxm_type)
 
 
-class ONFExperimenter(_Experimenter):
+class OldONFExperimenter(_Experimenter):
+    # This class is for the old version of EXT-256
     experimenter_id = ofproto_common.ONF_EXPERIMENTER_ID
 
     def __init__(self, name, num, type_):
-        super(ONFExperimenter, self).__init__(name, 0, type_)
+        super(OldONFExperimenter, self).__init__(name, 0, type_)
         self.num = (self.experimenter_id, num)
         self.exp_type = num
 
@@ -264,7 +265,8 @@ def _parse_header_impl(mod, buf, offset):
                                         offset + hdr_len)
         exp_hdr_len = struct.calcsize(exp_hdr_pack_str)
         assert exp_hdr_len == 4
-        if exp_id == ofproto_common.ONF_EXPERIMENTER_ID:
+        oxm_field = oxm_type & 0x7f
+        if exp_id == ofproto_common.ONF_EXPERIMENTER_ID and oxm_field == 0:
             # XXX
             # This block implements EXT-256 style experimenter OXM.
             onf_exp_type_pack_str = '!H'
@@ -319,7 +321,7 @@ def _make_exp_hdr(mod, n):
     if isinstance(desc, _Experimenter):  # XXX
         (exp_id, exp_type) = n
         assert desc.experimenter_id == exp_id
-        if isinstance(desc, ONFExperimenter):  # XXX
+        if isinstance(desc, OldONFExperimenter):  # XXX
             # XXX
             # This block implements EXT-256 style experimenter OXM.
             exp_hdr_pack_str = '!IH'  # experimenter_id, exp_type
-- 
2.1.0


------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to