1 from ryu.services.protocols.bgp.signals import SignalBus
4 class BgpSignalBus(SignalBus):
5 BGP_ERROR = ('error', 'bgp')
6 BGP_DEST_CHANGED = ('core', 'dest', 'changed')
7 BGP_VRF_REMOVED = ('core', 'vrf', 'removed')
8 BGP_VRF_ADDED = ('core', 'vrf', 'added')
9 BGP_NOTIFICATION_RECEIVED = ('bgp', 'notification_received')
10 BGP_NOTIFICATION_SENT = ('bgp', 'notification_sent')
11 BGP_VRF_STATS_CONFIG_CHANGED = (
12 'core', 'vrf', 'config', 'stats', 'changed'
14 BGP_BEST_PATH_CHANGED = ('core', 'best', 'changed')
15 BGP_ADJ_RIB_IN_CHANGED = ('core', 'adj', 'rib', 'in', 'changed')
16 BGP_ADJ_RIB_OUT_CHANGED = ('core', 'adj', 'rib', 'out', 'changed')
17 BGP_ADJ_UP = ('core', 'adj', 'up')
18 BGP_ADJ_DOWN = ('core', 'adj', 'down')
20 def bgp_error(self, peer, code, subcode, reason):
21 return self.emit_signal(
22 self.BGP_ERROR + (peer, ),
23 {'code': code, 'subcode': subcode, 'reason': reason, 'peer': peer}
26 def bgp_notification_received(self, peer, notification):
27 return self.emit_signal(
28 self.BGP_NOTIFICATION_RECEIVED + (peer,),
32 def bgp_notification_sent(self, peer, notification):
33 return self.emit_signal(
34 self.BGP_NOTIFICATION_SENT + (peer,),
38 def dest_changed(self, dest):
39 return self.emit_signal(
40 self.BGP_DEST_CHANGED,
44 def vrf_removed(self, route_dist):
45 return self.emit_signal(
50 def vrf_added(self, vrf_conf):
51 return self.emit_signal(
56 def stats_config_changed(self, vrf_conf):
57 return self.emit_signal(
58 self.BGP_VRF_STATS_CONFIG_CHANGED,
62 def best_path_changed(self, path, is_withdraw):
63 return self.emit_signal(
64 self.BGP_BEST_PATH_CHANGED,
65 {'path': path, 'is_withdraw': is_withdraw})
67 def adj_rib_in_changed(self, peer, received_route):
68 return self.emit_signal(
69 self.BGP_ADJ_RIB_IN_CHANGED,
70 {'peer': peer, 'received_route': received_route})
72 def adj_rib_out_changed(self, peer, sent_route):
73 return self.emit_signal(
74 self.BGP_ADJ_RIB_OUT_CHANGED,
75 {'peer': peer, 'sent_route': sent_route})
77 def adj_up(self, peer):
78 return self.emit_signal(self.BGP_ADJ_UP, {'peer': peer})
80 def adj_down(self, peer):
81 return self.emit_signal(self.BGP_ADJ_DOWN, {'peer': peer})