summaryrefslogtreecommitdiff
path: root/bgpd/bgp_snmp.c
diff options
context:
space:
mode:
authorMarton Kun-Szabo <martonk@amazon.com>2019-08-09 10:53:01 -0700
committerMarton Kun-Szabo <martonk@amazon.com>2019-08-13 11:59:27 -0700
commit7d8d0eabb4772ac773d60180fb88272a7825ca4a (patch)
treee94c3b1256a223b63aaac18f90464e05285ad5fe /bgpd/bgp_snmp.c
parentce935bc2843cb35c5450e1ea9beb1c58474d6e2c (diff)
bgpd: hook for bgp peer status change events
Generally available hook for plugging application-specific code in for bgp peer change events. This hook (peer_status_changed) replaces the previous, more specific 'peer_established' hook with a more general-purpose one. Also, 'bgp_dump_state' is now registered under this hook. Signed-off-by: Marton Kun-Szabo <martonk@amazon.com>
Diffstat (limited to 'bgpd/bgp_snmp.c')
-rw-r--r--bgpd/bgp_snmp.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/bgpd/bgp_snmp.c b/bgpd/bgp_snmp.c
index 44cbeabd69..c266440899 100644
--- a/bgpd/bgp_snmp.c
+++ b/bgpd/bgp_snmp.c
@@ -894,6 +894,10 @@ static int bgpTrapEstablished(struct peer *peer)
struct in_addr addr;
oid index[sizeof(oid) * IN_ADDR_SIZE];
+ /* Check if this peer just went to Established */
+ if ((peer->last_major_event != OpenConfirm) || !(peer_established(peer)))
+ return 0;
+
ret = inet_aton(peer->host, &addr);
if (ret == 0)
return 0;
@@ -935,7 +939,7 @@ static int bgp_snmp_init(struct thread_master *tm)
static int bgp_snmp_module_init(void)
{
- hook_register(peer_established, bgpTrapEstablished);
+ hook_register(peer_status_changed, bgpTrapEstablished);
hook_register(peer_backward_transition, bgpTrapBackwardTransition);
hook_register(frr_late_init, bgp_snmp_init);
return 0;