diff options
Diffstat (limited to 'bgpd/bgp_debug.c')
| -rw-r--r-- | bgpd/bgp_debug.c | 47 |
1 files changed, 44 insertions, 3 deletions
diff --git a/bgpd/bgp_debug.c b/bgpd/bgp_debug.c index d0ab88ee1b..df7262be64 100644 --- a/bgpd/bgp_debug.c +++ b/bgpd/bgp_debug.c @@ -70,6 +70,7 @@ unsigned long conf_bgp_debug_pbr; unsigned long conf_bgp_debug_graceful_restart; unsigned long conf_bgp_debug_evpn_mh; unsigned long conf_bgp_debug_bfd; +unsigned long conf_bgp_debug_cond_adv; unsigned long term_bgp_debug_as4; unsigned long term_bgp_debug_neighbor_events; @@ -90,6 +91,7 @@ unsigned long term_bgp_debug_pbr; unsigned long term_bgp_debug_graceful_restart; unsigned long term_bgp_debug_evpn_mh; unsigned long term_bgp_debug_bfd; +unsigned long term_bgp_debug_cond_adv; struct list *bgp_debug_neighbor_events_peers = NULL; struct list *bgp_debug_keepalive_peers = NULL; @@ -2108,6 +2110,33 @@ DEFPY(debug_bgp_bfd, debug_bgp_bfd_cmd, return CMD_SUCCESS; } +DEFPY (debug_bgp_cond_adv, + debug_bgp_cond_adv_cmd, + "[no$no] debug bgp conditional-advertisement", + NO_STR + DEBUG_STR + BGP_STR + "BGP conditional advertisement\n") +{ + if (vty->node == CONFIG_NODE) { + if (no) + DEBUG_OFF(cond_adv, COND_ADV); + else + DEBUG_ON(cond_adv, COND_ADV); + } else { + if (no) { + TERM_DEBUG_OFF(cond_adv, COND_ADV); + vty_out(vty, + "BGP conditional advertisement debugging is off\n"); + } else { + TERM_DEBUG_ON(cond_adv, COND_ADV); + vty_out(vty, + "BGP conditional advertisement debugging is on\n"); + } + } + return CMD_SUCCESS; +} + DEFUN (no_debug_bgp, no_debug_bgp_cmd, "no debug bgp", @@ -2152,6 +2181,7 @@ DEFUN (no_debug_bgp, TERM_DEBUG_OFF(evpn_mh, EVPN_MH_ES); TERM_DEBUG_OFF(evpn_mh, EVPN_MH_RT); TERM_DEBUG_OFF(bfd, BFD_LIB); + TERM_DEBUG_OFF(cond_adv, COND_ADV); vty_out(vty, "All possible debugging has been turned off\n"); @@ -2244,6 +2274,10 @@ DEFUN_NOSH (show_debugging_bgp, if (BGP_DEBUG(bfd, BFD_LIB)) vty_out(vty, " BGP BFD library debugging is on\n"); + if (BGP_DEBUG(cond_adv, COND_ADV)) + vty_out(vty, + " BGP conditional advertisement debugging is on\n"); + return CMD_SUCCESS; } @@ -2373,6 +2407,11 @@ static int bgp_config_write_debug(struct vty *vty) write++; } + if (CONF_BGP_DEBUG(cond_adv, COND_ADV)) { + vty_out(vty, "debug bgp conditional-advertisement\n"); + write++; + } + return write; } @@ -2501,6 +2540,10 @@ void bgp_debug_init(void) /* debug bgp bfd */ install_element(ENABLE_NODE, &debug_bgp_bfd_cmd); install_element(CONFIG_NODE, &debug_bgp_bfd_cmd); + + /* debug bgp conditional advertisement */ + install_element(ENABLE_NODE, &debug_bgp_cond_adv_cmd); + install_element(CONFIG_NODE, &debug_bgp_cond_adv_cmd); } /* Return true if this prefix is on the per_prefix_list of prefixes to debug @@ -2662,7 +2705,6 @@ const char *bgp_debug_rdpfxpath2str(afi_t afi, safi_t safi, struct bgp_route_evpn *overlay_index, char *str, int size) { - char rd_buf[RD_ADDRSTRLEN]; char tag_buf[30]; char overlay_index_buf[INET6_ADDRSTRLEN + 14]; const struct prefix_evpn *evp; @@ -2720,8 +2762,7 @@ const char *bgp_debug_rdpfxpath2str(afi_t afi, safi_t safi, } if (prd) - snprintfrr(str, size, "RD %s %pFX%s%s%s %s %s", - prefix_rd2str(prd, rd_buf, sizeof(rd_buf)), pu.p, + snprintfrr(str, size, "RD %pRD %pFX%s%s%s %s %s", prd, pu.p, overlay_index_buf, tag_buf, pathid_buf, afi2str(afi), safi2str(safi)); else if (safi == SAFI_FLOWSPEC) { |
