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;
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;
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;
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;
#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
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,
--- /dev/null
+// 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);
+}
--- /dev/null
+// 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 */
#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"
bgp_ethernetvpn_init();
bgp_flowspec_vty_init();
bgp_linkstate_init();
+ bgp_linkstate_vty_init();
/* Access list initialize. */
access_list_init();
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 \
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 \
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 \