summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfmihoub6WIND <farid.mihoub@yandex.com>2022-12-02 11:10:19 +0100
committerFarid Mihoub <farid.mihoub@6wind.com>2023-09-29 08:24:18 +0200
commit2b8e22f264cc0529847ad640e8df90d62e751ee4 (patch)
tree87fb4147451963b3b4381e35c911a30993f68c78
parentMerge pull request #14507 from qlyoung/fix-doc-more-doc-more (diff)
downloadfrr-2b8e22f264cc0529847ad640e8df90d62e751ee4.tar.xz
frr-2b8e22f264cc0529847ad640e8df90d62e751ee4.zip
zebra: dump label table information
Add the new command "show debugging labeltable" to show allocated label chunks in the label table managed with label_manager.c Signed-off-by: Farid Mihoub <farid.mihoub@6wind.com> Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
-rw-r--r--doc/user/zebra.rst13
-rw-r--r--zebra/label_manager.c20
-rw-r--r--zebra/subdir.am1
3 files changed, 34 insertions, 0 deletions
diff --git a/doc/user/zebra.rst b/doc/user/zebra.rst
index 7918fbd9d..ba6e3bf37 100644
--- a/doc/user/zebra.rst
+++ b/doc/user/zebra.rst
@@ -783,6 +783,19 @@ presence of the entry.
21 Static 10.125.0.2 IPv4 Explicit Null
+Allocated label chunks table can be dumped using the command
+
+.. clicmd:: show debugging label-table
+
+::
+
+ zebra# show debugging label-table
+ Proto ospf: [300/350]
+ Proto srte: [500/500]
+ Proto isis: [1200/1300]
+ Proto ospf: [20000/21000]
+ Proto isis: [22000/23000]
+
.. _zebra-srv6:
Segment-Routing IPv6
diff --git a/zebra/label_manager.c b/zebra/label_manager.c
index c77470a70..bd0b53738 100644
--- a/zebra/label_manager.c
+++ b/zebra/label_manager.c
@@ -28,6 +28,8 @@
#include "zebra/zapi_msg.h"
#include "zebra/debug.h"
+#include "zebra/label_manager_clippy.c"
+
#define CONNECTION_DELAY 5
struct label_manager lbl_mgr;
@@ -145,6 +147,22 @@ void lm_hooks_unregister(void)
hook_unregister(lm_release_chunk, label_manager_release_label_chunk);
}
+DEFPY(show_label_table, show_label_table_cmd, "show debugging label-table",
+ SHOW_STR
+ DEBUG_STR
+ "Display allocated label chunks\n")
+{
+ struct label_manager_chunk *lmc;
+ struct listnode *node;
+
+ for (ALL_LIST_ELEMENTS_RO(lbl_mgr.lc_list, node, lmc)) {
+ vty_out(vty, "Proto %s: [%u/%u]\n",
+ zebra_route_string(lmc->proto), lmc->start, lmc->end);
+ }
+
+ return CMD_SUCCESS;
+}
+
/**
* Init label manager (or proxy to an external one)
*/
@@ -159,6 +177,8 @@ void label_manager_init(void)
/* notify any external module that we are done */
hook_call(lm_cbs_inited);
+
+ install_element(VIEW_NODE, &show_label_table_cmd);
}
/* alloc and fill a label chunk */
diff --git a/zebra/subdir.am b/zebra/subdir.am
index 1060e3878..b3bd9be9c 100644
--- a/zebra/subdir.am
+++ b/zebra/subdir.am
@@ -124,6 +124,7 @@ clippy_scan += \
zebra/zebra_srv6_vty.c \
zebra/zebra_vrf.c \
zebra/dpdk/zebra_dplane_dpdk_vty.c \
+ zebra/label_manager.c \
# end
noinst_HEADERS += \