diff --git a/doc/user/zebra.rst b/doc/user/zebra.rst index d7e768b71029..5e21d2e2a7e5 100644 --- a/doc/user/zebra.rst +++ b/doc/user/zebra.rst @@ -745,6 +745,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 c77470a70109..b1c64bc5e243 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,20 @@ 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 +175,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 1060e3878532..b3bd9be9c274 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 += \