Problem
When running ryu.topology.switches and sending Ctrl+C, it will stuck. Command is here
ryu-manager ryu.topology.switches --observe-links
loading app ryu.topology.switches
loading app ryu.controller.ofp_handler
instantiating app ryu.topology.switches of Switches
instantiating app ryu.controller.ofp_handler of OFPHandler
^C
I analysis the code and find it stuck at
|
self.lldp_event.wait(timeout=timeout) |
timeout=None makes it wait forever.
My solution
Add event set at the end of link_loop
|
self.link_event.wait(timeout=self.TIMEOUT_CHECK_PERIOD) |
...
self.link_event.wait(timeout=self.TIMEOUT_CHECK_PERIOD)
if not self.lldp_event.is_set():
self.lldp_event.set()
I do not know if my solution is correct when really being used, because I only test whether it can work or not, I do not connect it to Mininet.
Problem
When running
ryu.topology.switchesand sendingCtrl+C, it will stuck. Command is hereI analysis the code and find it stuck at
ryu/ryu/topology/switches.py
Line 950 in d6cda4f
timeout=Nonemakes it wait forever.My solution
Add event set at the end of
link_loopryu/ryu/topology/switches.py
Line 979 in d6cda4f
... self.link_event.wait(timeout=self.TIMEOUT_CHECK_PERIOD) if not self.lldp_event.is_set(): self.lldp_event.set()I do not know if my solution is correct when really being used, because I only test whether it can work or not, I do not connect it to Mininet.