---
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
[email protected]
https://lists.quagga.net/mailman/listinfo/quagga-dev