summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bgpd/bgp_mplsvpn_snmp.c5
-rw-r--r--bgpd/bgp_snmp.c22
-rw-r--r--bgpd/bgpd.h1
-rw-r--r--doc/user/snmptrap.rst6
4 files changed, 34 insertions, 0 deletions
diff --git a/bgpd/bgp_mplsvpn_snmp.c b/bgpd/bgp_mplsvpn_snmp.c
index 3344e9e0a5..93d9f67245 100644
--- a/bgpd/bgp_mplsvpn_snmp.c
+++ b/bgpd/bgp_mplsvpn_snmp.c
@@ -590,6 +590,11 @@ static int bgp_vrf_check_update_active(struct bgp *bgp, struct interface *ifp)
/* add trap in here */
bgp->snmp_stats->active = new_active;
+ if (!CHECK_FLAG(bm->options, BGP_OPT_TRAPS_RFC4382)) {
+ bgp_mpls_l3vpn_update_last_changed(bgp);
+ return 0;
+ }
+
/* send relevent trap */
if (bgp->snmp_stats->active)
trap = MPLSL3VPNVRFUP;
diff --git a/bgpd/bgp_snmp.c b/bgpd/bgp_snmp.c
index 065ea7672c..eff7c5e0f6 100644
--- a/bgpd/bgp_snmp.c
+++ b/bgpd/bgp_snmp.c
@@ -50,6 +50,21 @@ DEFPY(bgp_snmp_traps_rfc4273, bgp_snmp_traps_rfc4273_cmd,
return CMD_SUCCESS;
}
+DEFPY(bgp_snmp_traps_rfc4382, bgp_snmp_traps_rfc4382_cmd,
+ "[no$no] bgp snmp traps rfc4382",
+ NO_STR BGP_STR
+ "Configure BGP SNMP\n"
+ "Configure SNMP traps for BGP\n"
+ "Configure use of rfc4382 SNMP traps for BGP\n")
+{
+ if (no) {
+ UNSET_FLAG(bm->options, BGP_OPT_TRAPS_RFC4382);
+ return CMD_SUCCESS;
+ }
+ SET_FLAG(bm->options, BGP_OPT_TRAPS_RFC4382);
+ return CMD_SUCCESS;
+}
+
DEFPY(bgp_snmp_traps_bgp4_mibv2, bgp_snmp_traps_bgp4_mibv2_cmd,
"[no$no] bgp snmp traps bgp4-mibv2",
NO_STR BGP_STR
@@ -69,9 +84,12 @@ static void bgp_snmp_traps_init(void)
{
install_element(CONFIG_NODE, &bgp_snmp_traps_rfc4273_cmd);
install_element(CONFIG_NODE, &bgp_snmp_traps_bgp4_mibv2_cmd);
+ install_element(CONFIG_NODE, &bgp_snmp_traps_rfc4382_cmd);
SET_FLAG(bm->options, BGP_OPT_TRAPS_RFC4273);
/* BGP4MIBv2 traps are disabled by default */
+
+ SET_FLAG(bm->options, BGP_OPT_TRAPS_RFC4382);
}
int bgp_cli_snmp_traps_config_write(struct vty *vty)
@@ -86,6 +104,10 @@ int bgp_cli_snmp_traps_config_write(struct vty *vty)
vty_out(vty, "bgp snmp traps bgp4-mibv2\n");
write++;
}
+ if (!CHECK_FLAG(bm->options, BGP_OPT_TRAPS_RFC4382)) {
+ vty_out(vty, "no bgp snmp traps rfc4382\n");
+ write++;
+ }
return write;
}
diff --git a/bgpd/bgpd.h b/bgpd/bgpd.h
index 626a76ba0b..7f1b82d9c7 100644
--- a/bgpd/bgpd.h
+++ b/bgpd/bgpd.h
@@ -131,6 +131,7 @@ struct bgp_master {
#define BGP_OPT_NO_ZEBRA (1 << 2)
#define BGP_OPT_TRAPS_RFC4273 (1 << 3)
#define BGP_OPT_TRAPS_BGP4MIBV2 (1 << 4)
+#define BGP_OPT_TRAPS_RFC4382 (1 << 5)
uint64_t updgrp_idspace;
uint64_t subgrp_idspace;
diff --git a/doc/user/snmptrap.rst b/doc/user/snmptrap.rst
index df534e28bd..52b1904665 100644
--- a/doc/user/snmptrap.rst
+++ b/doc/user/snmptrap.rst
@@ -215,3 +215,9 @@ possibility to select the MIB he wants to receive traps from:
By default, only rfc4273 traps are enabled and sent.
.. [Draft-IETF-idr-bgp4-mibv2-11] <https://tools.ietf.org/id/draft-ietf-idr-bgp4-mibv2-11.txt>
+
+The :rfc:`4382` also defines traps to inform when an L3VPN network changes
+the operational status of its VRF interface. The user can choose to suppress
+those traps or not.
+
+.. clicmd:: bgp snmp traps rfc4382