mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-01 22:56:45 +00:00
babeld: justify "running-config" meaning in CLI
The primary focus of this commit is to make "show running-config" command display more current configuration, including some of the bits previously seen in the output of "show babel running-config". Besides that, the following commands were renamed for consistency with the syntax of other components: "debug *" to "debug babel *" (and moved to top level) "show babel running-config" to "show babel parameters" * babel_interface.c * show_babel_running_config(): rename to show_babel_parameters(), update syntax pattern, don't call show_babeld_configuration() * babel_if_init(): update respectively * babel_enable_if_config_write(): new VTY helper for static babel_enable_if * babel_interface.h: add extern declaration * babel_main.c: unset all debug options by default * show_babel_main_configuration(): remove debug options decoder * babel_zebra.c * babel_debug(): rename to debug_babel(), update syntax pattern * no_babel_debug(): rename to no_debug_babel(), update syntax pattern * babelz_zebra_init(): update respectively * debug_babel_config_write() new VTY helper for static debug_type * babel_zebra.h: add extern declaration * babeld.c * babel_config_write(): add the code to output "debug babel *", "router babel", "redistribute *" and "network *" statements * show_babeld_configuration(): dismiss * babeld.h: remove extern declaration * babeld.texi: update for renamed commands * babeld.conf.sample: idem, add debug statements block
This commit is contained in:
parent
ce590ecd85
commit
a14ef5eecc
@ -877,9 +877,9 @@ DEFUN (show_babel_database,
|
|||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
DEFUN (show_babel_running_config,
|
DEFUN (show_babel_parameters,
|
||||||
show_babel_running_config_cmd,
|
show_babel_parameters_cmd,
|
||||||
"show babel running-config",
|
"show babel parameters",
|
||||||
SHOW_STR
|
SHOW_STR
|
||||||
IP_STR
|
IP_STR
|
||||||
"Babel information\n"
|
"Babel information\n"
|
||||||
@ -888,7 +888,6 @@ DEFUN (show_babel_running_config,
|
|||||||
{
|
{
|
||||||
vty_out(vty, " -- Babel running configuration --%s", VTY_NEWLINE);
|
vty_out(vty, " -- Babel running configuration --%s", VTY_NEWLINE);
|
||||||
show_babel_main_configuration(vty);
|
show_babel_main_configuration(vty);
|
||||||
show_babeld_configuration(vty);
|
|
||||||
vty_out(vty, " -- distribution lists --%s", VTY_NEWLINE);
|
vty_out(vty, " -- distribution lists --%s", VTY_NEWLINE);
|
||||||
config_show_distribute(vty);
|
config_show_distribute(vty);
|
||||||
|
|
||||||
@ -931,8 +930,8 @@ babel_if_init ()
|
|||||||
install_element(ENABLE_NODE, &show_babel_neighbour_cmd);
|
install_element(ENABLE_NODE, &show_babel_neighbour_cmd);
|
||||||
install_element(VIEW_NODE, &show_babel_database_cmd);
|
install_element(VIEW_NODE, &show_babel_database_cmd);
|
||||||
install_element(ENABLE_NODE, &show_babel_database_cmd);
|
install_element(ENABLE_NODE, &show_babel_database_cmd);
|
||||||
install_element(VIEW_NODE, &show_babel_running_config_cmd);
|
install_element(VIEW_NODE, &show_babel_parameters_cmd);
|
||||||
install_element(ENABLE_NODE, &show_babel_running_config_cmd);
|
install_element(ENABLE_NODE, &show_babel_parameters_cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* hooks: functions called respectively when struct interface is
|
/* hooks: functions called respectively when struct interface is
|
||||||
@ -980,6 +979,22 @@ interface_config_write (struct vty *vty)
|
|||||||
return write;
|
return write;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Output a "network" statement line for each of the enabled interfaces. */
|
||||||
|
int
|
||||||
|
babel_enable_if_config_write (struct vty * vty)
|
||||||
|
{
|
||||||
|
unsigned int i, lines = 0;
|
||||||
|
char *str;
|
||||||
|
|
||||||
|
for (i = 0; i < vector_active (babel_enable_if); i++)
|
||||||
|
if ((str = vector_slot (babel_enable_if, i)) != NULL)
|
||||||
|
{
|
||||||
|
vty_out (vty, " network %s%s", str, VTY_NEWLINE);
|
||||||
|
lines++;
|
||||||
|
}
|
||||||
|
return lines;
|
||||||
|
}
|
||||||
|
|
||||||
/* functions to allocate or free memory for a babel_interface_nfo, filling
|
/* functions to allocate or free memory for a babel_interface_nfo, filling
|
||||||
needed fields */
|
needed fields */
|
||||||
static babel_interface_nfo *
|
static babel_interface_nfo *
|
||||||
|
@ -41,6 +41,7 @@ THE SOFTWARE.
|
|||||||
|
|
||||||
#include <zebra.h>
|
#include <zebra.h>
|
||||||
#include "zclient.h"
|
#include "zclient.h"
|
||||||
|
#include "vty.h"
|
||||||
|
|
||||||
#define CONFIG_DEFAULT 0
|
#define CONFIG_DEFAULT 0
|
||||||
#define CONFIG_NO 1
|
#define CONFIG_NO 1
|
||||||
@ -147,6 +148,7 @@ unsigned update_jitter(babel_interface_nfo *babel_ifp, int urgent);
|
|||||||
int is_interface_ll_address(struct interface *ifp, const unsigned char *address);
|
int is_interface_ll_address(struct interface *ifp, const unsigned char *address);
|
||||||
/* Send retraction to all, and reset all interfaces statistics. */
|
/* Send retraction to all, and reset all interfaces statistics. */
|
||||||
void babel_interface_close_all(void);
|
void babel_interface_close_all(void);
|
||||||
|
extern int babel_enable_if_config_write (struct vty *);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -77,7 +77,7 @@ struct thread_master *master; /* quagga's threads handler */
|
|||||||
struct timeval babel_now; /* current time */
|
struct timeval babel_now; /* current time */
|
||||||
|
|
||||||
unsigned char myid[8]; /* unique id (mac address of an interface) */
|
unsigned char myid[8]; /* unique id (mac address of an interface) */
|
||||||
int debug = BABEL_DEBUG_COMMON;
|
int debug = 0;
|
||||||
|
|
||||||
int default_wireless_hello_interval = -1;
|
int default_wireless_hello_interval = -1;
|
||||||
int default_wired_hello_interval = -1;
|
int default_wired_hello_interval = -1;
|
||||||
@ -523,30 +523,6 @@ babel_save_state_file(void)
|
|||||||
void
|
void
|
||||||
show_babel_main_configuration (struct vty *vty)
|
show_babel_main_configuration (struct vty *vty)
|
||||||
{
|
{
|
||||||
#ifdef NO_DEBUG
|
|
||||||
vty_out(vty, "No debug.%s", VTY_NEWLINE);
|
|
||||||
#else
|
|
||||||
vty_out(vty, "Activated debug options:");
|
|
||||||
if (debug == BABEL_DEBUG_ALL) {
|
|
||||||
vty_out(vty, " all%s", VTY_NEWLINE);
|
|
||||||
} else {
|
|
||||||
vty_out(vty, "%s%s%s%s%s%s%s%s%s%s%s%s%s",
|
|
||||||
debug & BABEL_DEBUG_COMMON ? VTY_NEWLINE : "",
|
|
||||||
debug & BABEL_DEBUG_COMMON ? " common" : "",
|
|
||||||
debug & BABEL_DEBUG_KERNEL ? VTY_NEWLINE : "",
|
|
||||||
debug & BABEL_DEBUG_KERNEL ? " kernel" : "",
|
|
||||||
debug & BABEL_DEBUG_FILTER ? VTY_NEWLINE : "",
|
|
||||||
debug & BABEL_DEBUG_FILTER ? " filter" : "",
|
|
||||||
debug & BABEL_DEBUG_TIMEOUT ? VTY_NEWLINE : "",
|
|
||||||
debug & BABEL_DEBUG_TIMEOUT ? " timeout" : "",
|
|
||||||
debug & BABEL_DEBUG_IF ? VTY_NEWLINE : "",
|
|
||||||
debug & BABEL_DEBUG_IF ? " interface": "",
|
|
||||||
debug & BABEL_DEBUG_ROUTE ? VTY_NEWLINE : "",
|
|
||||||
debug & BABEL_DEBUG_ROUTE ? " route" : "",
|
|
||||||
VTY_NEWLINE);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
vty_out(vty,
|
vty_out(vty,
|
||||||
"pid file = %s%s"
|
"pid file = %s%s"
|
||||||
"state file = %s%s"
|
"state file = %s%s"
|
||||||
|
@ -236,10 +236,11 @@ DEFUN (no_babel_redistribute_type,
|
|||||||
|
|
||||||
#ifndef NO_DEBUG
|
#ifndef NO_DEBUG
|
||||||
/* [Babel Command] */
|
/* [Babel Command] */
|
||||||
DEFUN (babel_debug,
|
DEFUN (debug_babel,
|
||||||
babel_debug_cmd,
|
debug_babel_cmd,
|
||||||
"debug (common|kernel|filter|timeout|interface|route|all)",
|
"debug babel (common|kernel|filter|timeout|interface|route|all)",
|
||||||
"Enable debug messages for specific or all part.\n"
|
"Enable debug messages for specific or all part.\n"
|
||||||
|
"Babel information\n"
|
||||||
"Common messages (default)\n"
|
"Common messages (default)\n"
|
||||||
"Kernel messages\n"
|
"Kernel messages\n"
|
||||||
"Filter messages\n"
|
"Filter messages\n"
|
||||||
@ -264,11 +265,12 @@ DEFUN (babel_debug,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* [Babel Command] */
|
/* [Babel Command] */
|
||||||
DEFUN (no_babel_debug,
|
DEFUN (no_debug_babel,
|
||||||
no_babel_debug_cmd,
|
no_debug_babel_cmd,
|
||||||
"no debug (common|kernel|filter|timeout|interface|route|all)",
|
"no debug babel (common|kernel|filter|timeout|interface|route|all)",
|
||||||
NO_STR
|
NO_STR
|
||||||
"Disable debug messages for specific or all part.\n"
|
"Disable debug messages for specific or all part.\n"
|
||||||
|
"Babel information\n"
|
||||||
"Common messages (default)\n"
|
"Common messages (default)\n"
|
||||||
"Kernel messages\n"
|
"Kernel messages\n"
|
||||||
"Filter messages\n"
|
"Filter messages\n"
|
||||||
@ -293,6 +295,39 @@ DEFUN (no_babel_debug,
|
|||||||
}
|
}
|
||||||
#endif /* NO_DEBUG */
|
#endif /* NO_DEBUG */
|
||||||
|
|
||||||
|
/* Output "debug" statement lines, if necessary. */
|
||||||
|
int
|
||||||
|
debug_babel_config_write (struct vty * vty)
|
||||||
|
{
|
||||||
|
#ifdef NO_DEBUG
|
||||||
|
return 0;
|
||||||
|
#else
|
||||||
|
int i, lines = 0;
|
||||||
|
|
||||||
|
if (debug == BABEL_DEBUG_ALL)
|
||||||
|
{
|
||||||
|
vty_out (vty, "debug babel all%s", VTY_NEWLINE);
|
||||||
|
lines++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
for (i = 0; debug_type[i].str != NULL; i++)
|
||||||
|
if
|
||||||
|
(
|
||||||
|
debug_type[i].type != BABEL_DEBUG_ALL
|
||||||
|
&& CHECK_FLAG (debug, debug_type[i].type)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
vty_out (vty, "debug babel %s%s", debug_type[i].str, VTY_NEWLINE);
|
||||||
|
lines++;
|
||||||
|
}
|
||||||
|
if (lines)
|
||||||
|
{
|
||||||
|
vty_out (vty, "!%s", VTY_NEWLINE);
|
||||||
|
lines++;
|
||||||
|
}
|
||||||
|
return lines;
|
||||||
|
#endif /* NO_DEBUG */
|
||||||
|
}
|
||||||
|
|
||||||
void babelz_zebra_init(void)
|
void babelz_zebra_init(void)
|
||||||
{
|
{
|
||||||
@ -313,8 +348,10 @@ void babelz_zebra_init(void)
|
|||||||
install_node (&zebra_node, zebra_config_write);
|
install_node (&zebra_node, zebra_config_write);
|
||||||
install_element(BABEL_NODE, &babel_redistribute_type_cmd);
|
install_element(BABEL_NODE, &babel_redistribute_type_cmd);
|
||||||
install_element(BABEL_NODE, &no_babel_redistribute_type_cmd);
|
install_element(BABEL_NODE, &no_babel_redistribute_type_cmd);
|
||||||
install_element(BABEL_NODE, &babel_debug_cmd);
|
install_element(ENABLE_NODE, &debug_babel_cmd);
|
||||||
install_element(BABEL_NODE, &no_babel_debug_cmd);
|
install_element(ENABLE_NODE, &no_debug_babel_cmd);
|
||||||
|
install_element(CONFIG_NODE, &debug_babel_cmd);
|
||||||
|
install_element(CONFIG_NODE, &no_debug_babel_cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -36,8 +36,15 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|||||||
THE SOFTWARE.
|
THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef BABEL_ZEBRA_H
|
||||||
|
#define BABEL_ZEBRA_H
|
||||||
|
|
||||||
|
#include "vty.h"
|
||||||
|
|
||||||
extern struct zclient *zclient;
|
extern struct zclient *zclient;
|
||||||
|
|
||||||
void babelz_zebra_init(void);
|
void babelz_zebra_init(void);
|
||||||
void babel_zebra_close_connexion(void);
|
void babel_zebra_close_connexion(void);
|
||||||
|
extern int debug_babel_config_write (struct vty *);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
@ -59,6 +59,7 @@ THE SOFTWARE.
|
|||||||
#include "message.h"
|
#include "message.h"
|
||||||
#include "resend.h"
|
#include "resend.h"
|
||||||
#include "babel_filter.h"
|
#include "babel_filter.h"
|
||||||
|
#include "babel_zebra.h"
|
||||||
|
|
||||||
|
|
||||||
static int babel_init_routing_process(struct thread *thread);
|
static int babel_init_routing_process(struct thread *thread);
|
||||||
@ -92,7 +93,26 @@ static struct cmd_node cmd_babel_node =
|
|||||||
static int
|
static int
|
||||||
babel_config_write (struct vty *vty)
|
babel_config_write (struct vty *vty)
|
||||||
{
|
{
|
||||||
return 0;
|
int lines = 0;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
/* list enabled debug modes */
|
||||||
|
lines += debug_babel_config_write (vty);
|
||||||
|
|
||||||
|
if (!babel_routing_process)
|
||||||
|
return lines;
|
||||||
|
vty_out (vty, "router babel%s", VTY_NEWLINE);
|
||||||
|
/* list enabled interfaces */
|
||||||
|
lines = 1 + babel_enable_if_config_write (vty);
|
||||||
|
/* list redistributed protocols */
|
||||||
|
for (i = 0; i < ZEBRA_ROUTE_MAX; i++)
|
||||||
|
if (i != zclient->redist_default && zclient->redist[i])
|
||||||
|
{
|
||||||
|
vty_out (vty, " redistribute %s%s", zebra_route_string (i), VTY_NEWLINE);
|
||||||
|
lines++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return lines;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -701,9 +721,3 @@ redistribute_filter(const unsigned char *prefix, unsigned short plen,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
show_babeld_configuration (struct vty *vty)
|
|
||||||
{
|
|
||||||
vty_out(vty, "babeld running process %s.%s",
|
|
||||||
babel_routing_process ? "enable" : "disable", VTY_NEWLINE);
|
|
||||||
}
|
|
||||||
|
@ -1,13 +1,21 @@
|
|||||||
|
debug babel common
|
||||||
|
!debug babel kernel
|
||||||
|
!debug babel filter
|
||||||
|
!debug babel timeout
|
||||||
|
!debug babel interface
|
||||||
|
!debug babel route
|
||||||
|
!debug babel all
|
||||||
|
|
||||||
router babel
|
router babel
|
||||||
! network eth0
|
! network eth0
|
||||||
! redistribute kernel
|
! redistribute kernel
|
||||||
! no redistribute static
|
! no redistribute static
|
||||||
|
|
||||||
!interface eth0
|
!interface eth0
|
||||||
! wired
|
! babel wired
|
||||||
! wireless
|
! babel wireless
|
||||||
! babel split-horizon
|
! babel split-horizon
|
||||||
! no babel split-horizon
|
! no babel split-horizon
|
||||||
|
|
||||||
! log file /var/log/quagga/babeld.log
|
! log file /var/log/quagga/babeld.log
|
||||||
log stdout
|
log stdout
|
||||||
|
@ -132,7 +132,6 @@ extern int redistribute_filter(const unsigned char *prefix, unsigned short plen,
|
|||||||
unsigned int ifindex, int proto);
|
unsigned int ifindex, int proto);
|
||||||
extern int resize_receive_buffer(int size);
|
extern int resize_receive_buffer(int size);
|
||||||
extern void schedule_neighbours_check(int msecs, int override);
|
extern void schedule_neighbours_check(int msecs, int override);
|
||||||
extern void show_babeld_configuration (struct vty *vty);
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* BABEL_BABELD_H */
|
#endif /* BABEL_BABELD_H */
|
||||||
|
@ -109,7 +109,7 @@ Specify which kind of routes should be redistributed into Babel.
|
|||||||
@deffn {Command} {show babel database} {}
|
@deffn {Command} {show babel database} {}
|
||||||
@deffnx {Command} {show babel interface} {}
|
@deffnx {Command} {show babel interface} {}
|
||||||
@deffnx {Command} {show babel neighbour} {}
|
@deffnx {Command} {show babel neighbour} {}
|
||||||
@deffnx {Command} {show babel running-config} {}
|
@deffnx {Command} {show babel parameters} {}
|
||||||
These commands dump various parts of @command{babeld}'s internal
|
These commands dump various parts of @command{babeld}'s internal
|
||||||
state. They are mostly useful for troubleshooting.
|
state. They are mostly useful for troubleshooting.
|
||||||
@end deffn
|
@end deffn
|
||||||
@ -117,8 +117,8 @@ state. They are mostly useful for troubleshooting.
|
|||||||
@node Babel debugging commands, , Show Babel information, Babel
|
@node Babel debugging commands, , Show Babel information, Babel
|
||||||
@section Babel debugging commands
|
@section Babel debugging commands
|
||||||
|
|
||||||
@deffn {Babel Command} {debug @var{kind}} {}
|
@deffn {Babel Command} {debug babel @var{kind}} {}
|
||||||
@deffnx {Babel Command} {no debug @var{kind}} {}
|
@deffnx {Babel Command} {no debug babel @var{kind}} {}
|
||||||
Enable or disable debugging messages of a given kind. @var{kind} can
|
Enable or disable debugging messages of a given kind. @var{kind} can
|
||||||
be one of @samp{common}, @samp{kernel}, @samp{filter}, @samp{timeout},
|
be one of @samp{common}, @samp{kernel}, @samp{filter}, @samp{timeout},
|
||||||
@samp{interface}, @samp{route} or @samp{all}. Note that if you have
|
@samp{interface}, @samp{route} or @samp{all}. Note that if you have
|
||||||
|
Loading…
Reference in New Issue
Block a user