]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd: add linkstate debug
authorLouis Scalbert <louis.scalbert@6wind.com>
Tue, 10 Jan 2023 14:03:33 +0000 (15:03 +0100)
committerLouis Scalbert <louis.scalbert@6wind.com>
Mon, 18 Sep 2023 13:06:17 +0000 (15:06 +0200)
Add the "debug bgp linkstate" command to display incoming link-states
prefixes.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
bgpd/bgp_debug.c
bgpd/bgp_debug.h
bgpd/bgp_linkstate_tlv.c
bgpd/bgp_linkstate_vty.c [new file with mode: 0644]
bgpd/bgp_linkstate_vty.h [new file with mode: 0644]
bgpd/bgpd.c
bgpd/subdir.am

index 782245e5121434488453616bc802ed158652db66..0ff8bdcbbe0a936198bc8aa577c7d42a7e939bb4 100644 (file)
@@ -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;
index 118325e0a34e715b93d504e39c9304470a4acbd4..38beebf872f3398bdb8d5bdcfb88ed807c93bb1e 100644 (file)
@@ -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
index d3fbb7871a7c8d7806e9bf72d11b7bfd87095c05..5c324382f92706ad25d734016616067b6dc8d664 100644 (file)
@@ -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 (file)
index 0000000..3962da9
--- /dev/null
@@ -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 (file)
index 0000000..5ba96b5
--- /dev/null
@@ -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 */
index 39125f5d800cff843136f09b7e9e3fdb19923684..b7bb42b2d6eeadd5f3726c0f6c53546861502d6b 100644 (file)
@@ -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();
index ca987ccb537d6894f47e14d19ad78dc445294486..8b6b5ae7435a2a5d9dff8b4cbd76c17d82ad9ed0 100644 (file)
@@ -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 \