mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-08 07:37:29 +00:00
staticd: add debug static bfd command
This command helps in troubleshooting static bfd feature. Add traces upon bfd events. Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com> Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
This commit is contained in:
parent
771fdeaf39
commit
b27499d6ba
@ -28,6 +28,7 @@
|
|||||||
|
|
||||||
#include "staticd/static_routes.h"
|
#include "staticd/static_routes.h"
|
||||||
#include "staticd/static_zebra.h"
|
#include "staticd/static_zebra.h"
|
||||||
|
#include "staticd/static_debug.h"
|
||||||
|
|
||||||
#include "lib/openbsd-queue.h"
|
#include "lib/openbsd-queue.h"
|
||||||
|
|
||||||
@ -45,13 +46,15 @@ static void static_next_hop_bfd_change(struct static_nexthop *sn,
|
|||||||
break;
|
break;
|
||||||
case BSS_DOWN:
|
case BSS_DOWN:
|
||||||
/* Peer went down, remove this next hop. */
|
/* Peer went down, remove this next hop. */
|
||||||
zlog_info("%s: next hop is down, remove it from RIB", __func__);
|
DEBUGD(&static_dbg_bfd,
|
||||||
|
"%s: next hop is down, remove it from RIB", __func__);
|
||||||
sn->path_down = true;
|
sn->path_down = true;
|
||||||
static_zebra_route_add(sn->pn, true);
|
static_zebra_route_add(sn->pn, true);
|
||||||
break;
|
break;
|
||||||
case BSS_UP:
|
case BSS_UP:
|
||||||
/* Peer is back up, add this next hop. */
|
/* Peer is back up, add this next hop. */
|
||||||
zlog_info("%s: next hop is up, add it to RIB", __func__);
|
DEBUGD(&static_dbg_bfd, "%s: next hop is up, add it to RIB",
|
||||||
|
__func__);
|
||||||
sn->path_down = false;
|
sn->path_down = false;
|
||||||
static_zebra_route_add(sn->pn, true);
|
static_zebra_route_add(sn->pn, true);
|
||||||
break;
|
break;
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
|
|
||||||
#include "lib/command.h"
|
#include "lib/command.h"
|
||||||
#include "lib/debug.h"
|
#include "lib/debug.h"
|
||||||
|
#include "lib/bfd.h"
|
||||||
|
|
||||||
#include "static_debug.h"
|
#include "static_debug.h"
|
||||||
|
|
||||||
@ -35,15 +36,18 @@
|
|||||||
/* clang-format off */
|
/* clang-format off */
|
||||||
struct debug static_dbg_events = {0, "Staticd events"};
|
struct debug static_dbg_events = {0, "Staticd events"};
|
||||||
struct debug static_dbg_route = {0, "Staticd route"};
|
struct debug static_dbg_route = {0, "Staticd route"};
|
||||||
|
struct debug static_dbg_bfd = {0, "Staticd bfd"};
|
||||||
|
|
||||||
struct debug *static_debug_arr[] = {
|
struct debug *static_debug_arr[] = {
|
||||||
&static_dbg_events,
|
&static_dbg_events,
|
||||||
&static_dbg_route
|
&static_dbg_route,
|
||||||
|
&static_dbg_bfd
|
||||||
};
|
};
|
||||||
|
|
||||||
const char *static_debugs_conflines[] = {
|
const char *static_debugs_conflines[] = {
|
||||||
"debug static events",
|
"debug static events",
|
||||||
"debug static route"
|
"debug static route",
|
||||||
|
"debug static bfd"
|
||||||
};
|
};
|
||||||
/* clang-format on */
|
/* clang-format on */
|
||||||
|
|
||||||
@ -105,7 +109,8 @@ int static_debug_status_write(struct vty *vty)
|
|||||||
* Debug general internal events
|
* Debug general internal events
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void static_debug_set(int vtynode, bool onoff, bool events, bool route)
|
void static_debug_set(int vtynode, bool onoff, bool events, bool route,
|
||||||
|
bool bfd)
|
||||||
{
|
{
|
||||||
uint32_t mode = DEBUG_NODE2MODE(vtynode);
|
uint32_t mode = DEBUG_NODE2MODE(vtynode);
|
||||||
|
|
||||||
@ -113,6 +118,10 @@ void static_debug_set(int vtynode, bool onoff, bool events, bool route)
|
|||||||
DEBUG_MODE_SET(&static_dbg_events, mode, onoff);
|
DEBUG_MODE_SET(&static_dbg_events, mode, onoff);
|
||||||
if (route)
|
if (route)
|
||||||
DEBUG_MODE_SET(&static_dbg_route, mode, onoff);
|
DEBUG_MODE_SET(&static_dbg_route, mode, onoff);
|
||||||
|
if (bfd) {
|
||||||
|
DEBUG_MODE_SET(&static_dbg_bfd, mode, onoff);
|
||||||
|
bfd_protocol_integration_set_debug(onoff);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -34,6 +34,7 @@ extern "C" {
|
|||||||
/* staticd debugging records */
|
/* staticd debugging records */
|
||||||
extern struct debug static_dbg_events;
|
extern struct debug static_dbg_events;
|
||||||
extern struct debug static_dbg_route;
|
extern struct debug static_dbg_route;
|
||||||
|
extern struct debug static_dbg_bfd;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialize staticd debugging.
|
* Initialize staticd debugging.
|
||||||
@ -71,7 +72,8 @@ int static_debug_status_write(struct vty *vty);
|
|||||||
* Debug general internal events
|
* Debug general internal events
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void static_debug_set(int vtynode, bool onoff, bool events, bool route);
|
void static_debug_set(int vtynode, bool onoff, bool events, bool route,
|
||||||
|
bool bfd);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -1457,16 +1457,17 @@ int static_path_list_cli_cmp(const struct lyd_node *dnode1,
|
|||||||
}
|
}
|
||||||
|
|
||||||
DEFPY_YANG(debug_staticd, debug_staticd_cmd,
|
DEFPY_YANG(debug_staticd, debug_staticd_cmd,
|
||||||
"[no] debug static [{events$events|route$route}]",
|
"[no] debug static [{events$events|route$route|bfd$bfd}]",
|
||||||
NO_STR DEBUG_STR STATICD_STR
|
NO_STR DEBUG_STR STATICD_STR
|
||||||
"Debug events\n"
|
"Debug events\n"
|
||||||
"Debug route\n")
|
"Debug route\n"
|
||||||
|
"Debug bfd\n")
|
||||||
{
|
{
|
||||||
/* If no specific category, change all */
|
/* If no specific category, change all */
|
||||||
if (strmatch(argv[argc - 1]->text, "static"))
|
if (strmatch(argv[argc - 1]->text, "static"))
|
||||||
static_debug_set(vty->node, !no, true, true);
|
static_debug_set(vty->node, !no, true, true, true);
|
||||||
else
|
else
|
||||||
static_debug_set(vty->node, !no, !!events, !!route);
|
static_debug_set(vty->node, !no, !!events, !!route, !!bfd);
|
||||||
|
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user