---
 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

Reply via email to