mirror of
https://github.com/faucetsdn/ryu.git
synced 2026-01-27 19:41:40 +01:00
stplib: Handle the port state not changed events
According to OpenFlow Spec 1.3.5, OFPT_PORT_STATUS messages with the reason value OFPPR_MODIFY should be sent the BOTH port state and config have changed. On the other hand, OVS does not send OFPT_PORT_STATUS messages when the port config has changed and only sends when the port state has changed. But, other switch implementation, e.g. Lagopus, sends messages when the both port state and config have changed. Therefore, simple_switch_stp_13.py will overproduce the topology recalculation events and will fail to recalculate the topology. This patch checks the port state in OFPT_PORT_STATUS messages and ignores the message if the port state is not changed. Reported-by: Hong Panha <c011361065@edu.teu.ac.jp> Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
This commit is contained in:
parent
f52bb7007e
commit
3c0bd5b024
@ -297,6 +297,11 @@ class Stp(app_manager.RyuApp):
|
||||
bridge.port_delete(port.port_no)
|
||||
else:
|
||||
assert reason is dp.ofproto.OFPPR_MODIFY
|
||||
if bridge.dp.ports[port.port_no].state == port.state:
|
||||
# Do nothing
|
||||
self.logger.debug('[port=%d] Link status not changed.',
|
||||
port.port_no, extra=dpid_str)
|
||||
return
|
||||
if link_down_flg:
|
||||
self.logger.info('[port=%d] Link down.',
|
||||
port.port_no, extra=dpid_str)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user