diff options
| -rw-r--r-- | bgpd/bgp_debug.c | 2 | ||||
| -rw-r--r-- | bgpd/bgp_debug.h | 3 | ||||
| -rw-r--r-- | bgpd/bgp_linkstate_tlv.c | 6 | ||||
| -rw-r--r-- | bgpd/bgp_linkstate_vty.c | 53 | ||||
| -rw-r--r-- | bgpd/bgp_linkstate_vty.h | 11 | ||||
| -rw-r--r-- | bgpd/bgpd.c | 2 | ||||
| -rw-r--r-- | bgpd/subdir.am | 3 | 
7 files changed, 80 insertions, 0 deletions
diff --git a/bgpd/bgp_debug.c b/bgpd/bgp_debug.c index 782245e512..0ff8bdcbbe 100644 --- a/bgpd/bgp_debug.c +++ b/bgpd/bgp_debug.c @@ -51,6 +51,7 @@ unsigned long conf_bgp_debug_nht;  unsigned long conf_bgp_debug_update_groups;  unsigned long conf_bgp_debug_vpn;  unsigned long conf_bgp_debug_flowspec; +unsigned long conf_bgp_debug_linkstate;  unsigned long conf_bgp_debug_labelpool;  unsigned long conf_bgp_debug_pbr;  unsigned long conf_bgp_debug_graceful_restart; @@ -72,6 +73,7 @@ unsigned long term_bgp_debug_nht;  unsigned long term_bgp_debug_update_groups;  unsigned long term_bgp_debug_vpn;  unsigned long term_bgp_debug_flowspec; +unsigned long term_bgp_debug_linkstate;  unsigned long term_bgp_debug_labelpool;  unsigned long term_bgp_debug_pbr;  unsigned long term_bgp_debug_graceful_restart; diff --git a/bgpd/bgp_debug.h b/bgpd/bgp_debug.h index 118325e0a3..38beebf872 100644 --- a/bgpd/bgp_debug.h +++ b/bgpd/bgp_debug.h @@ -60,6 +60,7 @@ extern unsigned long conf_bgp_debug_nht;  extern unsigned long conf_bgp_debug_update_groups;  extern unsigned long conf_bgp_debug_vpn;  extern unsigned long conf_bgp_debug_flowspec; +extern unsigned long conf_bgp_debug_linkstate;  extern unsigned long conf_bgp_debug_labelpool;  extern unsigned long conf_bgp_debug_pbr;  extern unsigned long conf_bgp_debug_graceful_restart; @@ -79,6 +80,7 @@ extern unsigned long term_bgp_debug_nht;  extern unsigned long term_bgp_debug_update_groups;  extern unsigned long term_bgp_debug_vpn;  extern unsigned long term_bgp_debug_flowspec; +extern unsigned long term_bgp_debug_linkstate;  extern unsigned long term_bgp_debug_labelpool;  extern unsigned long term_bgp_debug_pbr;  extern unsigned long term_bgp_debug_graceful_restart; @@ -118,6 +120,7 @@ struct bgp_debug_filter {  #define BGP_DEBUG_VPN_LEAK_RMAP_EVENT 0x04  #define BGP_DEBUG_VPN_LEAK_LABEL      0x08  #define BGP_DEBUG_FLOWSPEC            0x01 +#define BGP_DEBUG_LINKSTATE           0x01  #define BGP_DEBUG_LABELPOOL           0x01  #define BGP_DEBUG_PBR                 0x01  #define BGP_DEBUG_PBR_ERROR           0x02 diff --git a/bgpd/bgp_linkstate_tlv.c b/bgpd/bgp_linkstate_tlv.c index d3fbb7871a..5c324382f9 100644 --- a/bgpd/bgp_linkstate_tlv.c +++ b/bgpd/bgp_linkstate_tlv.c @@ -165,6 +165,12 @@ int bgp_nlri_parse_linkstate(struct peer *peer, struct attr *attr,  		p.u.prefix_linkstate.ptr = (uintptr_t)pnt;  		p.prefixlen = length; +		if (BGP_DEBUG(linkstate, LINKSTATE)) { +			zlog_debug("LS Rx %s %s %pFX", +				   withdraw ? "Withdraw" : "Update", +				   afi2str(afi), &p); +		} +  		/* Process the route. */  		if (withdraw)  			bgp_withdraw(peer, &p, 0, afi, safi, ZEBRA_ROUTE_BGP, diff --git a/bgpd/bgp_linkstate_vty.c b/bgpd/bgp_linkstate_vty.c new file mode 100644 index 0000000000..3962da9c69 --- /dev/null +++ b/bgpd/bgp_linkstate_vty.c @@ -0,0 +1,53 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* BGP Link-State VTY + * Copyright 2023 6WIND S.A. + */ + +#include <zebra.h> +#include "command.h" +#include "prefix.h" +#include "lib/json.h" +#include "lib/printfrr.h" +#include "stream.h" + +#include "bgpd/bgpd.h" +#include "bgpd/bgp_linkstate_vty.h" +#include "bgpd/bgp_linkstate.h" +#include "bgpd/bgp_zebra.h" +#include "bgpd/bgp_vty.h" +#include "bgpd/bgp_debug.h" + +#include "bgpd/bgp_linkstate_vty_clippy.c" + + +DEFPY (debug_bgp_linkstate, +       debug_bgp_linkstate_cmd, +       "[no] debug bgp linkstate", +       NO_STR +       DEBUG_STR +       BGP_STR +       "BGP allow linkstate debugging entries\n") +{ +	if (vty->node == CONFIG_NODE) { +		if (no) +			DEBUG_OFF(linkstate, LINKSTATE); +		else +			DEBUG_ON(linkstate, LINKSTATE); +	} else { +		if (no) +			TERM_DEBUG_OFF(linkstate, LINKSTATE); +		else +			TERM_DEBUG_ON(linkstate, LINKSTATE); +		vty_out(vty, "BGP linkstate debugging is %s\n", +			no ? "off" : "on"); +	} + +	return CMD_SUCCESS; +} + + +void bgp_linkstate_vty_init(void) +{ +	install_element(ENABLE_NODE, &debug_bgp_linkstate_cmd); +	install_element(CONFIG_NODE, &debug_bgp_linkstate_cmd); +} diff --git a/bgpd/bgp_linkstate_vty.h b/bgpd/bgp_linkstate_vty.h new file mode 100644 index 0000000000..5ba96b58b4 --- /dev/null +++ b/bgpd/bgp_linkstate_vty.h @@ -0,0 +1,11 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* BGP Link-State VTY header + * Copyright 2023 6WIND S.A. + */ + +#ifndef _FRR_BGP_LINKSTATE_VTY_H +#define _FRR_BGP_LINKSTATE_VTY_H + +void bgp_linkstate_vty_init(void); + +#endif /* _FRR_BGP_LINKSTATE_VTY_H */ diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index 39125f5d80..b7bb42b2d6 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -72,6 +72,7 @@  #include "bgpd/bgp_ecommunity.h"  #include "bgpd/bgp_flowspec.h"  #include "bgpd/bgp_linkstate.h" +#include "bgpd/bgp_linkstate_vty.h"  #include "bgpd/bgp_labelpool.h"  #include "bgpd/bgp_pbr.h"  #include "bgpd/bgp_addpath.h" @@ -8392,6 +8393,7 @@ void bgp_init(unsigned short instance)  	bgp_ethernetvpn_init();  	bgp_flowspec_vty_init();  	bgp_linkstate_init(); +	bgp_linkstate_vty_init();  	/* Access list initialize. */  	access_list_init(); diff --git a/bgpd/subdir.am b/bgpd/subdir.am index ca987ccb53..8b6b5ae743 100644 --- a/bgpd/subdir.am +++ b/bgpd/subdir.am @@ -53,6 +53,7 @@ bgpd_libbgp_a_SOURCES = \  	bgpd/bgp_lcommunity.c \  	bgpd/bgp_linkstate.c \  	bgpd/bgp_linkstate_tlv.c \ +	bgpd/bgp_linkstate_vty.c \  	bgpd/bgp_mac.c \  	bgpd/bgp_memory.c \  	bgpd/bgp_mpath.c \ @@ -137,6 +138,7 @@ noinst_HEADERS += \  	bgpd/bgp_lcommunity.h \  	bgpd/bgp_linkstate.h \  	bgpd/bgp_linkstate_tlv.h \ +	bgpd/bgp_linkstate_vty.h \  	bgpd/bgp_mac.h \  	bgpd/bgp_memory.h \  	bgpd/bgp_mpath.h \ @@ -213,6 +215,7 @@ clippy_scan += \  	bgpd/bgp_debug.c \  	bgpd/bgp_evpn_vty.c \  	bgpd/bgp_labelpool.c \ +	bgpd/bgp_linkstate_vty.c \  	bgpd/bgp_route.c \  	bgpd/bgp_routemap.c \  	bgpd/bgp_rpki.c \  | 
