Hi,

 

Thanks for the fix. It works fine.

 

I encountered another problem related to OpenFlow 1.3. My application waits
for the PORT_STATUS event. When connecting to an OpenFlow 1.0 client it
works fine, but when connecting to an OpenFlow 1.3 client the following
error occurs:

 

Traceback (most recent call last):

  File
"/usr/local/lib/python2.7/dist-packages/ryu/controller/controller.py", line
97, in deactivate

    method(self)

  File
"/usr/local/lib/python2.7/dist-packages/ryu/controller/controller.py", line
170, in _recv_loop

    version, msg_type, msg_len, xid, buf)

  File
"/usr/local/lib/python2.7/dist-packages/ryu/ofproto/ofproto_parser.py", line
50, in msg

    return msg_parser(datapath, version, msg_type, msg_len, xid, buf)

  File
"/usr/local/lib/python2.7/dist-packages/ryu/ofproto/ofproto_v1_3_parser.py",
line 50, in msg_parser

    return parser(datapath, version, msg_type, msg_len, xid, buf)

  File
"/usr/local/lib/python2.7/dist-packages/ryu/ofproto/ofproto_v1_3_parser.py",
line 1410, in parser

    ofproto_v1_3.OFP_HEADER_SIZE)

ValueError: too many values to unpack

 

I compared the parsing of PORT_STATUS event in both versions of the parser
and it seems there is a bug in v1.3 parser. I fixed the code to resemble
v1.0 parser and it seems to work fine (and all the unit tests pass). I can
send a patch if required. Here is the change I've made:

 

diff --git a/ryu/ofproto/ofproto_v1_3_parser.py
b/ryu/ofproto/ofproto_v1_3_parser.py

index 53b002a..fff0004 100644

--- a/ryu/ofproto/ofproto_v1_3_parser.py

+++ b/ryu/ofproto/ofproto_v1_3_parser.py

@@ -1405,9 +1405,9 @@ class OFPPortStatus(MsgBase):

     def parser(cls, datapath, version, msg_type, msg_len, xid, buf):

         msg = super(OFPPortStatus, cls).parser(datapath, version, msg_type,

                                                msg_len, xid, buf)

-        (msg.reason,) = struct.unpack_from(

+        msg.reason = struct.unpack_from(

             ofproto_v1_3.OFP_PORT_STATUS_PACK_STR, msg.buf,

-            ofproto_v1_3.OFP_HEADER_SIZE)

+            ofproto_v1_3.OFP_HEADER_SIZE)[0]

         msg.desc = OFPPort.parser(msg.buf,

                                   ofproto_v1_3.OFP_PORT_STATUS_DESC_OFFSET)

         return msg

 

Thanks,

  Oren

 

-----Original Message-----
From: FUJITA Tomonori [mailto:[email protected]] 
Sent: Monday, June 03, 2013 6:43 PM
To: [email protected]
Cc: [email protected]
Subject: Re: [Ryu-devel] Ryu OpenFlow 1.3 issue

 

Hi,

 

On Mon, 3 Jun 2013 16:16:29 +0300

"Oren Spector" < <mailto:[email protected]>
[email protected]> wrote:

 

> It seems switch_features_handler is not handling well an OpenFlow 1.3 

> FEATURES_REPLY message, which doesn't contain port information (as 

> opposed to OpenFlow 1.0 FEATURES_REPLY message). Any suggestions how 

> to overcome this problem are welcomed.

 

We had the same discussion last week:

 

 
<http://sourceforge.net/mailarchive/forum.php?thread_name=20130601.223506.15
68838937885774892.fujita.tomonori%40lab.ntt.co.jp&forum_name=ryu-devel>
http://sourceforge.net/mailarchive/forum.php?thread_name=20130601.223506.156
8838937885774892.fujita.tomonori%40lab.ntt.co.jp&forum_name=ryu-devel

 

Here is a workaround for this:

 

 <https://github.com/fujita/ryu/commits/of13>
https://github.com/fujita/ryu/commits/of13

 

----------------------------------------------------------------------------
--

Get 100% visibility into Java/.NET code with AppDynamics Lite It's a free
troubleshooting tool designed for production Get down to code-level detail
for bottlenecks, with <2% overhead.

Download for free and get started troubleshooting in minutes.

 <http://p.sf.net/sfu/appdyn_d2d_ap2> http://p.sf.net/sfu/appdyn_d2d_ap2

_______________________________________________

Ryu-devel mailing list

 <mailto:[email protected]> [email protected]

 <https://lists.sourceforge.net/lists/listinfo/ryu-devel>
https://lists.sourceforge.net/lists/listinfo/ryu-devel

------------------------------------------------------------------------------
How ServiceNow helps IT people transform IT departments:
1. A cloud service to automate IT design, transition and operations
2. Dashboards that offer high-level views of enterprise services
3. A single system of record for all IT processes
http://p.sf.net/sfu/servicenow-d2d-j
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to