Merge pull request #11961 from maduri111/ospfd-debug-cmds

ospfd: fix for some of ospf debug commands config lost after reboot
This commit is contained in:
Donatas Abraitis 2022-10-09 21:16:01 +03:00 committed by GitHub
commit a957e14cdf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 260 additions and 310 deletions

View File

@ -1060,78 +1060,83 @@ TI-LFA requires a proper Segment Routing configuration.
Debugging OSPF
==============
.. clicmd:: debug ospf bfd
.. clicmd:: debug ospf [(1-65535)] bfd
Enable or disable debugging for BFD events. This will show BFD integration
library messages and OSPF BFD integration messages that are mostly state
transitions and validation problems.
.. clicmd:: debug ospf client-api
.. clicmd:: debug ospf [(1-65535)] client-api
Show debug information for the OSPF opaque data client API.
.. clicmd:: debug ospf packet (hello|dd|ls-request|ls-update|ls-ack|all) (send|recv) [detail]
.. clicmd:: debug ospf [(1-65535)] default-information
Show debug information of default information
.. clicmd:: debug ospf [(1-65535)] packet (hello|dd|ls-request|ls-update|ls-ack|all) (send|recv) [detail]
Dump Packet for debugging
.. clicmd:: debug ospf ism
.. clicmd:: debug ospf ism (status|events|timers)
.. clicmd:: debug ospf [(1-65535)] ism [status|events|timers]
Show debug information of Interface State Machine
.. clicmd:: debug ospf nsm
.. clicmd:: debug ospf nsm (status|events|timers)
.. clicmd:: debug ospf [(1-65535)] nsm [status|events|timers]
Show debug information of Network State Machine
.. clicmd:: debug ospf event
.. clicmd:: debug ospf [(1-65535)] event
Show debug information of OSPF event
.. clicmd:: debug ospf nssa
.. clicmd:: debug ospf [(1-65535)] nssa
Show debug information about Not So Stub Area
.. clicmd:: debug ospf lsa
.. clicmd:: debug ospf [(1-65535)] ldp-sync
.. clicmd:: debug ospf lsa (generate|flooding|refresh)
Show debug information about LDP-Sync
.. clicmd:: debug ospf [(1-65535)] lsa [aggregate|flooding|generate|install|refresh]
Show debug detail of Link State messages
.. clicmd:: debug ospf te
.. clicmd:: debug ospf [(1-65535)] sr
Show debug information about Segment Routing
.. clicmd:: debug ospf [(1-65535)] te
Show debug information about Traffic Engineering LSA
.. clicmd:: debug ospf zebra
.. clicmd:: debug ospf [(1-65535)] ti-lfa
.. clicmd:: debug ospf zebra (interface|redistribute)
Show debug information about SR TI-LFA
.. clicmd:: debug ospf [(1-65535)] zebra [interface|redistribute]
Show debug information of ZEBRA API
.. clicmd:: debug ospf graceful-restart helper
.. clicmd:: debug ospf [(1-65535)] graceful-restart
Enable/disable debug information for OSPF Graceful Restart Helper
.. clicmd:: show debugging ospf
.. clicmd:: debug ospf lsa aggregate
Debug commnd to enable/disable external route summarisation specific debugs.
Sample Configuration

View File

@ -54,13 +54,13 @@ unsigned long conf_debug_ospf_nsm = 0;
unsigned long conf_debug_ospf_lsa = 0;
unsigned long conf_debug_ospf_zebra = 0;
unsigned long conf_debug_ospf_nssa = 0;
unsigned long conf_debug_ospf_te = 0;
unsigned long conf_debug_ospf_te;
unsigned long conf_debug_ospf_ext = 0;
unsigned long conf_debug_ospf_sr = 0;
unsigned long conf_debug_ospf_ti_lfa = 0;
unsigned long conf_debug_ospf_defaultinfo = 0;
unsigned long conf_debug_ospf_ldp_sync = 0;
unsigned long conf_debug_ospf_gr = 0;
unsigned long conf_debug_ospf_sr;
unsigned long conf_debug_ospf_ti_lfa;
unsigned long conf_debug_ospf_defaultinfo;
unsigned long conf_debug_ospf_ldp_sync;
unsigned long conf_debug_ospf_gr;
unsigned long conf_debug_ospf_bfd;
unsigned long conf_debug_ospf_client_api;
@ -72,13 +72,13 @@ unsigned long term_debug_ospf_nsm = 0;
unsigned long term_debug_ospf_lsa = 0;
unsigned long term_debug_ospf_zebra = 0;
unsigned long term_debug_ospf_nssa = 0;
unsigned long term_debug_ospf_te = 0;
unsigned long term_debug_ospf_te;
unsigned long term_debug_ospf_ext = 0;
unsigned long term_debug_ospf_sr = 0;
unsigned long term_debug_ospf_ti_lfa = 0;
unsigned long term_debug_ospf_sr;
unsigned long term_debug_ospf_ti_lfa;
unsigned long term_debug_ospf_defaultinfo;
unsigned long term_debug_ospf_ldp_sync;
unsigned long term_debug_ospf_gr = 0;
unsigned long term_debug_ospf_gr;
unsigned long term_debug_ospf_bfd;
unsigned long term_debug_ospf_client_api;
@ -628,84 +628,9 @@ void ospf_packet_dump(struct stream *s)
stream_set_getp(s, gp);
}
DEFUN (debug_ospf_packet,
DEFPY (debug_ospf_packet,
debug_ospf_packet_cmd,
"debug ospf [(1-65535)] packet <hello|dd|ls-request|ls-update|ls-ack|all> [<send [detail]|recv [detail]|detail>]",
DEBUG_STR
OSPF_STR
"Instance ID\n"
"OSPF packets\n"
"OSPF Hello\n"
"OSPF Database Description\n"
"OSPF Link State Request\n"
"OSPF Link State Update\n"
"OSPF Link State Acknowledgment\n"
"OSPF all packets\n"
"Packet sent\n"
"Detail Information\n"
"Packet received\n"
"Detail Information\n"
"Detail Information\n")
{
int inst = (argv[2]->type == RANGE_TKN) ? 1 : 0;
int detail = strmatch(argv[argc - 1]->text, "detail");
int send = strmatch(argv[argc - (1 + detail)]->text, "send");
int recv = strmatch(argv[argc - (1 + detail)]->text, "recv");
char *packet = argv[3 + inst]->text;
if (inst) // user passed instance ID
{
if (inst != ospf_instance)
return CMD_NOT_MY_INSTANCE;
}
int type = 0;
int flag = 0;
int i;
/* Check packet type. */
if (strmatch(packet, "hello"))
type = OSPF_DEBUG_HELLO;
else if (strmatch(packet, "dd"))
type = OSPF_DEBUG_DB_DESC;
else if (strmatch(packet, "ls-request"))
type = OSPF_DEBUG_LS_REQ;
else if (strmatch(packet, "ls-update"))
type = OSPF_DEBUG_LS_UPD;
else if (strmatch(packet, "ls-ack"))
type = OSPF_DEBUG_LS_ACK;
else if (strmatch(packet, "all"))
type = OSPF_DEBUG_ALL;
/* Cases:
* (none) = send + recv
* detail = send + recv + detail
* recv = recv
* send = send
* recv detail = recv + detail
* send detail = send + detail
*/
if (!send && !recv)
send = recv = 1;
flag |= (send) ? OSPF_DEBUG_SEND : 0;
flag |= (recv) ? OSPF_DEBUG_RECV : 0;
flag |= (detail) ? OSPF_DEBUG_DETAIL : 0;
for (i = 0; i < 5; i++)
if (type & (0x01 << i)) {
if (vty->node == CONFIG_NODE)
DEBUG_PACKET_ON(i, flag);
else
TERM_DEBUG_PACKET_ON(i, flag);
}
return CMD_SUCCESS;
}
DEFUN (no_debug_ospf_packet,
no_debug_ospf_packet_cmd,
"no debug ospf [(1-65535)] packet <hello|dd|ls-request|ls-update|ls-ack|all> [<send [detail]|recv [detail]|detail>]",
"[no$no] debug ospf [(1-65535)$inst] packet <hello|dd|ls-request|ls-update|ls-ack|all>$packet [<send$send [detail$detail]|recv$recv [detail$detail]|detail$detail>]",
NO_STR
DEBUG_STR
OSPF_STR
@ -723,22 +648,13 @@ DEFUN (no_debug_ospf_packet,
"Detail Information\n"
"Detail Information\n")
{
int inst = (argv[3]->type == RANGE_TKN) ? 1 : 0;
int detail = strmatch(argv[argc - 1]->text, "detail");
int send = strmatch(argv[argc - (1 + detail)]->text, "send");
int recv = strmatch(argv[argc - (1 + detail)]->text, "recv");
char *packet = argv[4 + inst]->text;
if (inst) // user passed instance ID
{
if (inst != ospf_instance)
return CMD_NOT_MY_INSTANCE;
}
int type = 0;
int flag = 0;
int i;
if (inst && inst != ospf_instance)
return CMD_NOT_MY_INSTANCE;
/* Check packet type. */
if (strmatch(packet, "hello"))
type = OSPF_DEBUG_HELLO;
@ -761,8 +677,10 @@ DEFUN (no_debug_ospf_packet,
* recv detail = recv + detail
* send detail = send + detail
*/
if (!send && !recv)
send = recv = 1;
if (!send && !recv) {
flag |= OSPF_DEBUG_SEND;
flag |= OSPF_DEBUG_RECV;
}
flag |= (send) ? OSPF_DEBUG_SEND : 0;
flag |= (recv) ? OSPF_DEBUG_RECV : 0;
@ -770,10 +688,17 @@ DEFUN (no_debug_ospf_packet,
for (i = 0; i < 5; i++)
if (type & (0x01 << i)) {
if (vty->node == CONFIG_NODE)
if (vty->node == CONFIG_NODE) {
if (no)
DEBUG_PACKET_OFF(i, flag);
else
DEBUG_PACKET_ON(i, flag);
} else {
if (no)
TERM_DEBUG_PACKET_OFF(i, flag);
else
TERM_DEBUG_PACKET_ON(i, flag);
}
}
#ifdef DEBUG
@ -1457,194 +1382,221 @@ DEFUN (no_debug_ospf_instance_nssa,
return CMD_SUCCESS;
}
DEFUN (debug_ospf_te,
DEFPY (debug_ospf_te,
debug_ospf_te_cmd,
"debug ospf te",
"[no$no] debug ospf [(1-65535)$instance] te",
NO_STR
DEBUG_STR
OSPF_STR
"Instance ID\n"
"OSPF-TE information\n")
{
if (vty->node == CONFIG_NODE)
CONF_DEBUG_ON(te, TE);
TERM_DEBUG_ON(te, TE);
return CMD_SUCCESS;
}
if (instance && instance != ospf_instance)
return CMD_NOT_MY_INSTANCE;
DEFUN (no_debug_ospf_te,
no_debug_ospf_te_cmd,
"no debug ospf te",
NO_STR
DEBUG_STR
OSPF_STR
"OSPF-TE information\n")
{
if (vty->node == CONFIG_NODE)
CONF_DEBUG_OFF(te, TE);
TERM_DEBUG_OFF(te, TE);
return CMD_SUCCESS;
}
DEFUN (debug_ospf_sr,
debug_ospf_sr_cmd,
"debug ospf sr",
DEBUG_STR
OSPF_STR
"OSPF-SR information\n")
{
if (vty->node == CONFIG_NODE)
CONF_DEBUG_ON(sr, SR);
TERM_DEBUG_ON(sr, SR);
return CMD_SUCCESS;
}
DEFUN (no_debug_ospf_sr,
no_debug_ospf_sr_cmd,
"no debug ospf sr",
NO_STR
DEBUG_STR
OSPF_STR
"OSPF-SR information\n")
{
if (vty->node == CONFIG_NODE)
CONF_DEBUG_OFF(sr, SR);
TERM_DEBUG_OFF(sr, SR);
return CMD_SUCCESS;
}
DEFUN(debug_ospf_ti_lfa, debug_ospf_ti_lfa_cmd, "debug ospf ti-lfa",
DEBUG_STR OSPF_STR "OSPF-SR TI-LFA information\n")
{
if (vty->node == CONFIG_NODE)
CONF_DEBUG_ON(ti_lfa, TI_LFA);
TERM_DEBUG_ON(ti_lfa, TI_LFA);
return CMD_SUCCESS;
}
DEFUN(no_debug_ospf_ti_lfa, no_debug_ospf_ti_lfa_cmd, "no debug ospf ti-lfa",
NO_STR DEBUG_STR OSPF_STR "OSPF-SR TI-LFA information\n")
{
if (vty->node == CONFIG_NODE)
CONF_DEBUG_OFF(ti_lfa, TI_LFA);
TERM_DEBUG_OFF(ti_lfa, TI_LFA);
return CMD_SUCCESS;
}
DEFUN (debug_ospf_default_info,
debug_ospf_default_info_cmd,
"debug ospf default-information",
DEBUG_STR
OSPF_STR
"OSPF default information\n")
{
if (vty->node == CONFIG_NODE)
CONF_DEBUG_ON(defaultinfo, DEFAULTINFO);
TERM_DEBUG_ON(defaultinfo, DEFAULTINFO);
return CMD_SUCCESS;
}
DEFUN (no_debug_ospf_default_info,
no_debug_ospf_default_info_cmd,
"no debug ospf default-information",
NO_STR
DEBUG_STR
OSPF_STR
"OSPF default information\n")
{
if (vty->node == CONFIG_NODE)
CONF_DEBUG_OFF(defaultinfo, DEFAULTINFO);
TERM_DEBUG_OFF(defaultinfo, DEFAULTINFO);
return CMD_SUCCESS;
}
DEFUN(debug_ospf_ldp_sync,
debug_ospf_ldp_sync_cmd,
"debug ospf ldp-sync",
DEBUG_STR OSPF_STR
"OSPF LDP-Sync information\n")
{
if (vty->node == CONFIG_NODE)
CONF_DEBUG_ON(ldp_sync, LDP_SYNC);
TERM_DEBUG_ON(ldp_sync, LDP_SYNC);
return CMD_SUCCESS;
}
DEFUN(no_debug_ospf_ldp_sync,
no_debug_ospf_ldp_sync_cmd,
"no debug ospf ldp-sync",
NO_STR
DEBUG_STR
OSPF_STR
"OSPF LDP-Sync information\n")
{
if (vty->node == CONFIG_NODE)
CONF_DEBUG_OFF(ldp_sync, LDP_SYNC);
TERM_DEBUG_OFF(ldp_sync, LDP_SYNC);
return CMD_SUCCESS;
}
DEFPY(debug_ospf_gr, debug_ospf_gr_cmd, "[no$no] debug ospf graceful-restart",
NO_STR DEBUG_STR OSPF_STR "OSPF Graceful Restart\n")
{
if (vty->node == CONFIG_NODE)
CONF_DEBUG_ON(gr, GR);
if (!no)
TERM_DEBUG_ON(gr, GR);
if (vty->node == CONFIG_NODE) {
if (no)
DEBUG_OFF(te, TE);
else
TERM_DEBUG_OFF(gr, GR);
DEBUG_ON(te, TE);
} else {
if (no)
TERM_DEBUG_OFF(te, TE);
else
TERM_DEBUG_ON(te, TE);
}
return CMD_SUCCESS;
}
DEFPY(debug_ospf_bfd, debug_ospf_bfd_cmd,
"[no] debug ospf bfd",
DEFPY (debug_ospf_sr,
debug_ospf_sr_cmd,
"[no$no] debug ospf [(1-65535)$instance] sr",
NO_STR
DEBUG_STR
OSPF_STR
"Instance ID\n"
"OSPF-SR information\n")
{
if (instance && instance != ospf_instance)
return CMD_NOT_MY_INSTANCE;
if (vty->node == CONFIG_NODE) {
if (no)
DEBUG_OFF(sr, SR);
else
DEBUG_ON(sr, SR);
} else {
if (no)
TERM_DEBUG_OFF(sr, SR);
else
TERM_DEBUG_ON(sr, SR);
}
return CMD_SUCCESS;
}
DEFPY (debug_ospf_ti_lfa,
debug_ospf_ti_lfa_cmd,
"[no$no] debug ospf [(1-65535)$instance] ti-lfa",
NO_STR
DEBUG_STR
OSPF_STR
"Instance ID\n"
"OSPF-SR TI-LFA information\n")
{
if (instance && instance != ospf_instance)
return CMD_NOT_MY_INSTANCE;
if (vty->node == CONFIG_NODE) {
if (no)
DEBUG_OFF(ti_lfa, TI_LFA);
else
DEBUG_ON(ti_lfa, TI_LFA);
} else {
if (no)
TERM_DEBUG_OFF(ti_lfa, TI_LFA);
else
TERM_DEBUG_ON(ti_lfa, TI_LFA);
}
return CMD_SUCCESS;
}
DEFPY (debug_ospf_default_info,
debug_ospf_default_info_cmd,
"[no$no] debug ospf [(1-65535)$instance] default-information",
NO_STR
DEBUG_STR
OSPF_STR
"Instance ID\n"
"OSPF default information\n")
{
if (instance && instance != ospf_instance)
return CMD_NOT_MY_INSTANCE;
if (vty->node == CONFIG_NODE) {
if (no)
DEBUG_OFF(defaultinfo, DEFAULTINFO);
else
DEBUG_ON(defaultinfo, DEFAULTINFO);
} else {
if (no)
TERM_DEBUG_OFF(defaultinfo, DEFAULTINFO);
else
TERM_DEBUG_ON(defaultinfo, DEFAULTINFO);
}
return CMD_SUCCESS;
}
DEFPY (debug_ospf_ldp_sync,
debug_ospf_ldp_sync_cmd,
"[no$no] debug ospf [(1-65535)$instance] ldp-sync",
NO_STR
DEBUG_STR
OSPF_STR
"Instance ID\n"
"OSPF LDP-Sync information\n")
{
if (instance && instance != ospf_instance)
return CMD_NOT_MY_INSTANCE;
if (vty->node == CONFIG_NODE) {
if (no)
DEBUG_OFF(ldp_sync, LDP_SYNC);
else
DEBUG_ON(ldp_sync, LDP_SYNC);
} else {
if (no)
TERM_DEBUG_OFF(ldp_sync, LDP_SYNC);
else
TERM_DEBUG_ON(ldp_sync, LDP_SYNC);
}
return CMD_SUCCESS;
}
DEFPY (debug_ospf_gr,
debug_ospf_gr_cmd,
"[no$no] debug ospf [(1-65535)$instance] graceful-restart",
NO_STR
DEBUG_STR
OSPF_STR
"Instance ID\n"
"OSPF Graceful Restart\n")
{
if (instance && instance != ospf_instance)
return CMD_NOT_MY_INSTANCE;
if (vty->node == CONFIG_NODE) {
if (no)
CONF_DEBUG_OFF(gr, GR);
else
CONF_DEBUG_ON(gr, GR);
}
if (no)
TERM_DEBUG_OFF(gr, GR);
else
TERM_DEBUG_ON(gr, GR);
return CMD_SUCCESS;
}
DEFPY (debug_ospf_bfd,
debug_ospf_bfd_cmd,
"[no] debug ospf [(1-65535)$instance] bfd",
NO_STR
DEBUG_STR
OSPF_STR
"Instance ID\n"
"Bidirection Forwarding Detection\n")
{
if (instance && instance != ospf_instance)
return CMD_NOT_MY_INSTANCE;
if (vty->node == CONFIG_NODE) {
if (no) {
bfd_protocol_integration_set_debug(false);
CONF_DEBUG_OFF(bfd, BFD_LIB);
DEBUG_OFF(bfd, BFD_LIB);
} else {
bfd_protocol_integration_set_debug(true);
CONF_DEBUG_ON(bfd, BFD_LIB);
DEBUG_ON(bfd, BFD_LIB);
}
}
} else {
if (no)
TERM_DEBUG_OFF(bfd, BFD_LIB);
else
TERM_DEBUG_ON(bfd, BFD_LIB);
}
return CMD_SUCCESS;
}
DEFUN(debug_ospf_client_api,
DEFPY (debug_ospf_client_api,
debug_ospf_client_api_cmd,
"debug ospf client-api",
DEBUG_STR OSPF_STR
"OSPF client API information\n")
{
if (vty->node == CONFIG_NODE)
CONF_DEBUG_ON(client_api, CLIENT_API);
TERM_DEBUG_ON(client_api, CLIENT_API);
return CMD_SUCCESS;
}
DEFUN(no_debug_ospf_client_api,
no_debug_ospf_client_api_cmd,
"no debug ospf client-api",
"[no$no] debug ospf [(1-65535)$instance] client-api",
NO_STR
DEBUG_STR
OSPF_STR
"Instance ID\n"
"OSPF client API information\n")
{
if (vty->node == CONFIG_NODE)
CONF_DEBUG_OFF(client_api, CLIENT_API);
if (instance && instance != ospf_instance)
return CMD_NOT_MY_INSTANCE;
if (vty->node == CONFIG_NODE) {
if (no)
DEBUG_OFF(client_api, CLIENT_API);
else
DEBUG_ON(client_api, CLIENT_API);
} else {
if (no)
TERM_DEBUG_OFF(client_api, CLIENT_API);
else
TERM_DEBUG_ON(client_api, CLIENT_API);
}
return CMD_SUCCESS;
}
@ -1978,7 +1930,7 @@ static int config_write_debug(struct vty *vty)
& (OSPF_DEBUG_SEND_RECV | OSPF_DEBUG_DETAIL);
if (r == (OSPF_DEBUG_SEND_RECV | OSPF_DEBUG_DETAIL)) {
vty_out(vty, "debug ospf%s packet all detail\n", str);
return 1;
write = 1;
}
/* debug ospf packet all. */
@ -1991,7 +1943,7 @@ static int config_write_debug(struct vty *vty)
if (conf_debug_ospf_packet[i] & OSPF_DEBUG_DETAIL)
vty_out(vty, "debug ospf%s packet %s detail\n",
str, type_str[i]);
return 1;
write = 1;
}
/* debug ospf packet (hello|dd|ls-request|ls-update|ls-ack)
@ -2047,6 +1999,13 @@ static int config_write_debug(struct vty *vty)
write = 1;
}
/* debug ospf default-information */
if (IS_CONF_DEBUG_OSPF(defaultinfo, DEFAULTINFO) ==
OSPF_DEBUG_DEFAULTINFO) {
vty_out(vty, "debug ospf%s default-information\n", str);
write = 1;
}
return write;
}
@ -2074,18 +2033,11 @@ void ospf_debug_init(void)
install_element(ENABLE_NODE, &no_debug_ospf_zebra_cmd);
install_element(ENABLE_NODE, &no_debug_ospf_event_cmd);
install_element(ENABLE_NODE, &no_debug_ospf_nssa_cmd);
install_element(ENABLE_NODE, &no_debug_ospf_te_cmd);
install_element(ENABLE_NODE, &no_debug_ospf_sr_cmd);
install_element(ENABLE_NODE, &no_debug_ospf_ti_lfa_cmd);
install_element(ENABLE_NODE, &no_debug_ospf_default_info_cmd);
install_element(ENABLE_NODE, &no_debug_ospf_ldp_sync_cmd);
install_element(ENABLE_NODE, &no_debug_ospf_client_api_cmd);
install_element(ENABLE_NODE, &debug_ospf_gr_cmd);
install_element(ENABLE_NODE, &debug_ospf_bfd_cmd);
install_element(ENABLE_NODE, &show_debugging_ospf_instance_cmd);
install_element(ENABLE_NODE, &debug_ospf_packet_cmd);
install_element(ENABLE_NODE, &no_debug_ospf_packet_cmd);
install_element(ENABLE_NODE, &debug_ospf_instance_nsm_cmd);
install_element(ENABLE_NODE, &debug_ospf_instance_lsa_cmd);
@ -2100,7 +2052,6 @@ void ospf_debug_init(void)
install_element(ENABLE_NODE, &no_debug_ospf_cmd);
install_element(CONFIG_NODE, &debug_ospf_packet_cmd);
install_element(CONFIG_NODE, &no_debug_ospf_packet_cmd);
install_element(CONFIG_NODE, &debug_ospf_ism_cmd);
install_element(CONFIG_NODE, &no_debug_ospf_ism_cmd);
@ -2120,12 +2071,6 @@ void ospf_debug_init(void)
install_element(CONFIG_NODE, &no_debug_ospf_zebra_cmd);
install_element(CONFIG_NODE, &no_debug_ospf_event_cmd);
install_element(CONFIG_NODE, &no_debug_ospf_nssa_cmd);
install_element(CONFIG_NODE, &no_debug_ospf_te_cmd);
install_element(CONFIG_NODE, &no_debug_ospf_sr_cmd);
install_element(CONFIG_NODE, &no_debug_ospf_ti_lfa_cmd);
install_element(CONFIG_NODE, &no_debug_ospf_default_info_cmd);
install_element(CONFIG_NODE, &no_debug_ospf_ldp_sync_cmd);
install_element(CONFIG_NODE, &no_debug_ospf_client_api_cmd);
install_element(CONFIG_NODE, &debug_ospf_gr_cmd);
install_element(CONFIG_NODE, &debug_ospf_bfd_cmd);