Datapath.send_packet_out() requires buffer_id, not dpid.

> Traceback (most recent call last):
>   File "/usr/lib/pymodules/python2.7/gevent/greenlet.py", line 390, in run
>     result = self._run(*self.args, **self.kwargs)
>   File "ryu/base/app_manager.py", line 126, in _event_loop
>     handler(ev)
>   File "/ryu/topology/switches.py", line 697, in packet_in_handler
>     self._drop_packet(msg)
>   File "/ryu/topology/switches.py", line 640, in _drop_packet
>     dp.send_packet_out(dp.id, msg.in_port, [])
>   File "/ryu/controller/controller.py", line 242, in send_packet_out
>     self.send_msg(packet_out)
>   File "/ryu/controller/controller.py", line 216, in send_msg
>     msg.serialize()
>   File "/ryu/ofproto/ofproto_parser.py", line 119, in serialize
>     self._serialize_body()
>   File "/ryu/ofproto/ofproto_v1_0_parser.py", line 1987, in _serialize_body
>     self.buffer_id, self.in_port, self.actions_len)
>   File "/ryu/ofproto/ofproto_parser.py", line 128, in msg_pack_into
>     buf += struct.pack(fmt, *args)
> error: 'I' format requires 0 <= number <= 4294967295
> <Greenlet at 0x229bd98: <bound method Switches._event_loop of 
> <switches.Switches object at 0x1c8e690>>> failed with error

Signed-off-by: Isaku Yamahata <[email protected]>
---
 ryu/topology/switches.py |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/ryu/topology/switches.py b/ryu/topology/switches.py
index b5584dc..df3b3df 100644
--- a/ryu/topology/switches.py
+++ b/ryu/topology/switches.py
@@ -631,13 +631,14 @@ class Switches(app_manager.RyuApp):
 
     @staticmethod
     def _drop_packet(msg):
-        if msg.buffer_id == 0xffffffff:
+        buffer_id = msg.buffer_id
+        if buffer_id == 0xffffffff:
             return  # TODO:use constant instead of -1
 
         dp = msg.datapath
         # TODO:XXX
         if dp.ofproto.OFP_VERSION == ofproto_v1_0.OFP_VERSION:
-            dp.send_packet_out(dp.id, msg.in_port, [])
+            dp.send_packet_out(buffer_id, msg.in_port, [])
         else:
             LOG.error('cannot drop_packet. unsupported version. %x',
                       dp.ofproto.OFP_VERSION)
-- 
1.7.10.4


------------------------------------------------------------------------------
Minimize network downtime and maximize team effectiveness.
Reduce network management and security costs.Learn how to hire 
the most talented Cisco Certified professionals. Visit the 
Employer Resources Portal
http://www.cisco.com/web/learning/employer_resources/index.html
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to