summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--ryu/controller/dpset.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/ryu/controller/dpset.py b/ryu/controller/dpset.py
index 4eca0467..0d65d747 100644
--- a/ryu/controller/dpset.py
+++ b/ryu/controller/dpset.py
@@ -53,6 +53,11 @@ class EventDP(EventDPBase):
self.ports = [] # port list when enter or leave
+class EventDPReconnected(EventDPBase):
+ def __init__(self, dp):
+ super(EventDPReconnected, self).__init__(dp)
+
+
class EventPortBase(EventDPBase):
def __init__(self, dp, port):
super(EventPortBase, self).__init__(dp)
@@ -113,12 +118,14 @@ class DPSet(app_manager.RyuApp):
# - forget the older connection as it likely will disappear soon
# - do not send EventDP leave/enter events
# - keep the PortState for the dpid
+ send_dp_reset = False
if dp.id in self.dps:
self.logger.warning('DPSET: Multiple connections from %s',
dpid_to_str(dp.id))
self.logger.debug('DPSET: Forgetting datapath %s', self.dps[dp.id])
(self.dps[dp.id]).close()
self.logger.debug('DPSET: New datapath %s', dp)
+ send_dp_reset = True
self.dps[dp.id] = dp
if dp.id not in self.port_state:
self.port_state[dp.id] = PortState()
@@ -129,6 +136,9 @@ class DPSet(app_manager.RyuApp):
self._port_added(dp, port)
ev.ports.append(port)
self.send_event_to_observers(ev)
+ if send_dp_reset:
+ ev = EventDPReconnected(dp)
+ self.send_event_to_observers(ev)
def _unregister(self, dp):
# see the comment in _register().