1from ryu.services.protocols.bgp.signals import SignalBus 2 3 4class 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' 13 ) 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') 19 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} 24 ) 25 26 def bgp_notification_received(self, peer, notification): 27 return self.emit_signal( 28 self.BGP_NOTIFICATION_RECEIVED + (peer,), 29 notification 30 ) 31 32 def bgp_notification_sent(self, peer, notification): 33 return self.emit_signal( 34 self.BGP_NOTIFICATION_SENT + (peer,), 35 notification 36 ) 37 38 def dest_changed(self, dest): 39 return self.emit_signal( 40 self.BGP_DEST_CHANGED, 41 dest 42 ) 43 44 def vrf_removed(self, route_dist): 45 return self.emit_signal( 46 self.BGP_VRF_REMOVED, 47 route_dist 48 ) 49 50 def vrf_added(self, vrf_conf): 51 return self.emit_signal( 52 self.BGP_VRF_ADDED, 53 vrf_conf 54 ) 55 56 def stats_config_changed(self, vrf_conf): 57 return self.emit_signal( 58 self.BGP_VRF_STATS_CONFIG_CHANGED, 59 vrf_conf 60 ) 61 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}) 66 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}) 71 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}) 76 77 def adj_up(self, peer): 78 return self.emit_signal(self.BGP_ADJ_UP, {'peer': peer}) 79 80 def adj_down(self, peer): 81 return self.emit_signal(self.BGP_ADJ_DOWN, {'peer': peer}) 82