copied from of12 version

Signed-off-by: YAMAMOTO Takashi <[email protected]>
---
 ryu/ofproto/ofproto_v1_3_parser.py | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/ryu/ofproto/ofproto_v1_3_parser.py 
b/ryu/ofproto/ofproto_v1_3_parser.py
index 04b7b04..2f8a035 100644
--- a/ryu/ofproto/ofproto_v1_3_parser.py
+++ b/ryu/ofproto/ofproto_v1_3_parser.py
@@ -198,6 +198,11 @@ class OFPErrorMsg(MsgBase):
 
     @classmethod
     def parser(cls, datapath, version, msg_type, msg_len, xid, buf):
+        type_, = struct.unpack_from('!H', buffer(buf),
+                                    ofproto_v1_3.OFP_HEADER_SIZE)
+        if type_ == ofproto_v1_3.OFPET_EXPERIMENTER:
+            return OFPErrorExperimenterMsg.parser(datapath, version, msg_type,
+                                                  msg_len, xid, buf)
         msg = super(OFPErrorMsg, cls).parser(datapath, version, msg_type,
                                              msg_len, xid, buf)
         msg.type, msg.code = struct.unpack_from(
@@ -213,6 +218,27 @@ class OFPErrorMsg(MsgBase):
         self.buf += self.data
 
 
+class OFPErrorExperimenterMsg(MsgBase):
+    def __init__(self, datapath, type_=None, exp_type=None, experimenter=None,
+                 data=None):
+        super(OFPErrorExperimenterMsg, self).__init__(datapath)
+        self.type = ofproto_v1_3.OFPET_EXPERIMENTER
+        self.exp_type = exp_type
+        self.experimenter = experimenter
+        self.data = data
+
+    @classmethod
+    def parser(cls, datapath, version, msg_type, msg_len, xid, buf):
+        cls.cls_msg_type = msg_type
+        msg = super(OFPErrorExperimenterMsg, cls).parser(
+            datapath, version, msg_type, msg_len, xid, buf)
+        msg.type, msg.exp_type, msg.experimenter = struct.unpack_from(
+            ofproto_v1_3.OFP_ERROR_EXPERIMENTER_MSG_PACK_STR, msg.buf,
+            ofproto_v1_3.OFP_HEADER_SIZE)
+        msg.data = msg.buf[ofproto_v1_3.OFP_ERROR_EXPERIMENTER_MSG_SIZE:]
+        return msg
+
+
 @_register_parser
 @_set_msg_type(ofproto_v1_3.OFPT_ECHO_REQUEST)
 class OFPEchoRequest(MsgBase):
-- 
1.8.3.1


------------------------------------------------------------------------------
November Webinars for C, C++, Fortran Developers
Accelerate application performance with scalable programming models. Explore
techniques for threading, error checking, porting, and tuning. Get the most 
from the latest Intel processors and coprocessors. See abstracts and register
http://pubads.g.doubleclick.net/gampad/clk?id=60136231&iu=/4140/ostg.clktrk
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to