mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-12-22 09:41:54 +00:00
Adds filtering to 'show symbols' command.
Thanks Alexander V. Chernikov for the original patch.
This commit is contained in:
parent
20ab192bec
commit
0f808c066f
@ -50,6 +50,7 @@ CF_DECLS
|
|||||||
struct f_path_mask *h;
|
struct f_path_mask *h;
|
||||||
struct password_item *p;
|
struct password_item *p;
|
||||||
struct rt_show_data *ra;
|
struct rt_show_data *ra;
|
||||||
|
struct sym_show_data *sd;
|
||||||
struct lsadb_show_data *ld;
|
struct lsadb_show_data *ld;
|
||||||
struct iface *iface;
|
struct iface *iface;
|
||||||
void *g;
|
void *g;
|
||||||
|
@ -570,7 +570,7 @@ This argument can be omitted if there exists only a single instance.
|
|||||||
<tag>show interfaces [summary]</tag>
|
<tag>show interfaces [summary]</tag>
|
||||||
Show the list of interfaces. For each interface, print its type, state, MTU and addresses assigned.
|
Show the list of interfaces. For each interface, print its type, state, MTU and addresses assigned.
|
||||||
|
|
||||||
<tag>show symbols</tag>
|
<tag>show symbols [table|filter|function|protocol|template|<symbol>]</tag>
|
||||||
Show the list of symbols defined in the configuration (names of protocols, routing tables etc.).
|
Show the list of symbols defined in the configuration (names of protocols, routing tables etc.).
|
||||||
|
|
||||||
<tag>show route [[for] <m/prefix/|<m/IP/] [table <m/sym/] [filter <m/f/|where <m/c/] [(export|preexport) <m/p/] [protocol <m/p/] [<m/options/]</tag>
|
<tag>show route [[for] <m/prefix/|<m/IP/] [table <m/sym/] [filter <m/f/|where <m/c/] [(export|preexport) <m/p/] [protocol <m/p/] [<m/options/]</tag>
|
||||||
|
13
nest/cmds.c
13
nest/cmds.c
@ -7,6 +7,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "nest/bird.h"
|
#include "nest/bird.h"
|
||||||
|
#include "nest/route.h"
|
||||||
#include "nest/cli.h"
|
#include "nest/cli.h"
|
||||||
#include "conf/conf.h"
|
#include "conf/conf.h"
|
||||||
#include "nest/cmds.h"
|
#include "nest/cmds.h"
|
||||||
@ -35,16 +36,22 @@ cmd_show_status(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cmd_show_symbols(struct symbol *sym)
|
cmd_show_symbols(struct sym_show_data *sd)
|
||||||
{
|
{
|
||||||
int pos = 0;
|
int pos = 0;
|
||||||
|
struct symbol *sym = sd->sym;
|
||||||
|
|
||||||
if (sym)
|
if (sym)
|
||||||
cli_msg(1010, "%s\t%s", sym->name, cf_symbol_class_name(sym));
|
cli_msg(1010, "%-8s\t%s", sym->name, cf_symbol_class_name(sym));
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
while (sym = cf_walk_symbols(config, sym, &pos))
|
while (sym = cf_walk_symbols(config, sym, &pos))
|
||||||
cli_msg(-1010, "%s\t%s", sym->name, cf_symbol_class_name(sym));
|
{
|
||||||
|
if (sd->type && (sym->class != sd->type))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
cli_msg(-1010, "%-8s\t%s", sym->name, cf_symbol_class_name(sym));
|
||||||
|
}
|
||||||
cli_msg(0, "");
|
cli_msg(0, "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,11 @@
|
|||||||
* Can be freely distributed and used under the terms of the GNU GPL.
|
* Can be freely distributed and used under the terms of the GNU GPL.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
struct sym_show_data {
|
||||||
|
int type; /* Symbols type to show */
|
||||||
|
struct symbol *sym;
|
||||||
|
};
|
||||||
|
|
||||||
void cmd_show_status(void);
|
void cmd_show_status(void);
|
||||||
void cmd_show_symbols(struct symbol *sym);
|
void cmd_show_symbols(struct sym_show_data *sym);
|
||||||
void cmd_show_memory(void);
|
void cmd_show_memory(void);
|
||||||
|
@ -59,6 +59,7 @@ CF_ENUM(T_ENUM_RTD, RTD_, ROUTER, DEVICE, BLACKHOLE, UNREACHABLE, PROHIBIT, MULT
|
|||||||
%type <r> rtable
|
%type <r> rtable
|
||||||
%type <s> optsym
|
%type <s> optsym
|
||||||
%type <ra> r_args
|
%type <ra> r_args
|
||||||
|
%type <sd> sym_args
|
||||||
%type <i> proto_start echo_mask echo_size debug_mask debug_list debug_flag mrtdump_mask mrtdump_list mrtdump_flag export_or_preexport
|
%type <i> proto_start echo_mask echo_size debug_mask debug_list debug_flag mrtdump_mask mrtdump_list mrtdump_flag export_or_preexport
|
||||||
%type <ps> proto_patt proto_patt2
|
%type <ps> proto_patt proto_patt2
|
||||||
|
|
||||||
@ -432,9 +433,21 @@ export_or_preexport:
|
|||||||
| EXPORT { $$ = 2; }
|
| EXPORT { $$ = 2; }
|
||||||
;
|
;
|
||||||
|
|
||||||
CF_CLI(SHOW SYMBOLS, optsym, [<symbol>], [[Show all known symbolic names]])
|
CF_CLI(SHOW SYMBOLS, sym_args, [table|filter|function|protocol|template|<symbol>], [[Show all known symbolic names]])
|
||||||
{ cmd_show_symbols($3); } ;
|
{ cmd_show_symbols($3); } ;
|
||||||
|
|
||||||
|
sym_args:
|
||||||
|
/* empty */ {
|
||||||
|
$$ = cfg_allocz(sizeof(struct sym_show_data));
|
||||||
|
}
|
||||||
|
| sym_args TABLE { $$ = $1; $$->type = SYM_TABLE; }
|
||||||
|
| sym_args FUNCTION { $$ = $1; $$->type = SYM_FUNCTION; }
|
||||||
|
| sym_args FILTER { $$ = $1; $$->type = SYM_FILTER; }
|
||||||
|
| sym_args PROTOCOL { $$ = $1; $$->type = SYM_PROTO; }
|
||||||
|
| sym_args TEMPLATE { $$ = $1; $$->type = SYM_TEMPLATE; }
|
||||||
|
| sym_args SYM { $$ = $1; $$->sym = $2; }
|
||||||
|
;
|
||||||
|
|
||||||
CF_CLI_HELP(DUMP, ..., [[Dump debugging information]])
|
CF_CLI_HELP(DUMP, ..., [[Dump debugging information]])
|
||||||
CF_CLI(DUMP RESOURCES,,, [[Dump all allocated resource]])
|
CF_CLI(DUMP RESOURCES,,, [[Dump all allocated resource]])
|
||||||
{ rdump(&root_pool); cli_msg(0, ""); } ;
|
{ rdump(&root_pool); cli_msg(0, ""); } ;
|
||||||
|
Loading…
Reference in New Issue
Block a user