--- bgpd/bgp_fsm.c | 14 +++++--------- bgpd/bgp_fsm.h | 4 ++++ bgpd/bgp_snmp.c | 11 +++++++---- bgpd/bgp_snmp.h | 3 +++ 4 files changed, 19 insertions(+), 13 deletions(-)
diff --git a/bgpd/bgp_fsm.c b/bgpd/bgp_fsm.c index c4cfd58..8b3bb8c 100644 --- a/bgpd/bgp_fsm.c +++ b/bgpd/bgp_fsm.c @@ -42,9 +42,9 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA #include "bgpd/bgp_route.h" #include "bgpd/bgp_dump.h" #include "bgpd/bgp_open.h" -#ifdef HAVE_SNMP -#include "bgpd/bgp_snmp.h" -#endif /* HAVE_SNMP */ + +DEFINE_HOOK(peer_backward_transition, (struct peer *peer), (peer)) +DEFINE_HOOK(peer_established, (struct peer *peer), (peer)) /* BGP FSM (finite state machine) has three types of functions. Type one is thread functions. Type two is event functions. Type three @@ -499,9 +499,7 @@ bgp_stop (struct peer *peer) /* set last reset time */ peer->resettime = peer->uptime = bgp_clock (); -#ifdef HAVE_SNMP - bgpTrapBackwardTransition (peer); -#endif /* HAVE_SNMP */ + hook_call(peer_backward_transition, peer); /* Reset peer synctime */ peer->synctime = 0; @@ -873,9 +871,7 @@ bgp_establish (struct peer *peer) zlog_debug ("%s graceful restart timer stopped", peer->host); } -#ifdef HAVE_SNMP - bgpTrapEstablished (peer); -#endif /* HAVE_SNMP */ + hook_call(peer_established, peer); /* Reset uptime, send keepalive, send current table. */ peer->uptime = bgp_clock (); diff --git a/bgpd/bgp_fsm.h b/bgpd/bgp_fsm.h index 752d6e2..74cfac8 100644 --- a/bgpd/bgp_fsm.h +++ b/bgpd/bgp_fsm.h @@ -78,4 +78,8 @@ extern void bgp_timer_set (struct peer *); extern void bgp_fsm_change_status (struct peer *peer, int status); extern const char *peer_down_str[]; +#include "hook.h" +DECLARE_HOOK(peer_backward_transition, (struct peer *peer), (peer)) +DECLARE_HOOK(peer_established, (struct peer *peer), (peer)) + #endif /* _QUAGGA_BGP_FSM_H */ diff --git a/bgpd/bgp_snmp.c b/bgpd/bgp_snmp.c index 430d922..3454e14 100644 --- a/bgpd/bgp_snmp.c +++ b/bgpd/bgp_snmp.c @@ -836,8 +836,8 @@ static struct trap_object bgpTrapList[] = {3, {3, 1, BGPPEERSTATE}} }; -void -bgpTrapEstablished (struct peer *peer) +static void +bgpTrapEstablished (void *arg, struct peer *peer) { int ret; struct in_addr addr; @@ -857,8 +857,8 @@ bgpTrapEstablished (struct peer *peer) BGPESTABLISHED); } -void -bgpTrapBackwardTransition (struct peer *peer) +static void +bgpTrapBackwardTransition (void *arg, struct peer *peer) { int ret; struct in_addr addr; @@ -881,6 +881,9 @@ bgpTrapBackwardTransition (struct peer *peer) void bgp_snmp_init (void) { + hook_register(peer_established, bgpTrapEstablished, NULL); + hook_register(peer_backward_transition, bgpTrapBackwardTransition, NULL); + smux_init (bm->master); REGISTER_MIB("mibII/bgp", bgp_variables, variable, bgp_oid); } diff --git a/bgpd/bgp_snmp.h b/bgpd/bgp_snmp.h index 7a0d9dd..bbb0d16 100644 --- a/bgpd/bgp_snmp.h +++ b/bgpd/bgp_snmp.h @@ -22,7 +22,10 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA #define _QUAGGA_BGP_SNMP_H extern void bgp_snmp_init (void); + +#if 0 extern void bgpTrapEstablished (struct peer *); extern void bgpTrapBackwardTransition (struct peer *); +#endif #endif /* _QUAGGA_BGP_SNMP_H */ -- 2.7.3 _______________________________________________ Quagga-dev mailing list Quagga-dev@lists.quagga.net https://lists.quagga.net/mailman/listinfo/quagga-dev