Split off general commands to cmds.c.
Added `show symbols' command which dumps whole symbol table together with symbol types etc.
This commit is contained in:
parent
f5ad9f87a3
commit
4b87e256eb
9 changed files with 101 additions and 19 deletions
16
TODO
16
TODO
|
@ -21,13 +21,10 @@ Core
|
||||||
|
|
||||||
- netlink: import Linux route attributes to our rta's, so that they can be filtered?
|
- netlink: import Linux route attributes to our rta's, so that they can be filtered?
|
||||||
|
|
||||||
- socket: Use IP_RECVERR for BGP TCP sockets?
|
|
||||||
|
|
||||||
- config: executable config files
|
- config: executable config files
|
||||||
- config: when parsing prefix, check zero bits
|
- config: when parsing prefix, check zero bits
|
||||||
- config: useless rules when protocols disabled
|
- config: useless rules when protocols disabled
|
||||||
- config: better datetime format
|
- config: better datetime format
|
||||||
- config: long disable/enable/restart sequences hang
|
|
||||||
|
|
||||||
- krt: rescan interfaces when route addition fails?
|
- krt: rescan interfaces when route addition fails?
|
||||||
|
|
||||||
|
@ -37,11 +34,6 @@ Core
|
||||||
|
|
||||||
Commands
|
Commands
|
||||||
~~~~~~~~
|
~~~~~~~~
|
||||||
show <name> # show everything you know about symbol <name>
|
|
||||||
rip ??? [<name>]
|
|
||||||
ospf ??? [<name>]
|
|
||||||
static ??? [<name>]
|
|
||||||
symbols
|
|
||||||
- showing of routing table as seen by given protocol
|
- showing of routing table as seen by given protocol
|
||||||
|
|
||||||
Roadmap
|
Roadmap
|
||||||
|
@ -51,7 +43,6 @@ Roadmap
|
||||||
- Remaining bits of IPv6 support (radvd)
|
- Remaining bits of IPv6 support (radvd)
|
||||||
- RIPv6
|
- RIPv6
|
||||||
- BGP?
|
- BGP?
|
||||||
- Logging and debugging messages
|
|
||||||
|
|
||||||
Client
|
Client
|
||||||
~~~~~~
|
~~~~~~
|
||||||
|
@ -62,7 +53,7 @@ Documentation
|
||||||
- write doctool
|
- write doctool
|
||||||
- write documentation :|
|
- write documentation :|
|
||||||
|
|
||||||
Cleanup
|
Globals
|
||||||
~~~~~~~
|
~~~~~~~
|
||||||
- right usage of DBG vs. debug
|
- right usage of DBG vs. debug
|
||||||
- cleanup debugging calls
|
- cleanup debugging calls
|
||||||
|
@ -73,8 +64,8 @@ Cleanup
|
||||||
- replace all NUM, IPA and expr tokens by constant filter expressions
|
- replace all NUM, IPA and expr tokens by constant filter expressions
|
||||||
- try compiling with -Wunused
|
- try compiling with -Wunused
|
||||||
- does everybody test return value of sk_open?
|
- does everybody test return value of sk_open?
|
||||||
- add references to RFC's we did follow
|
- doc: references to RFC's we did follow
|
||||||
- protocols: implement CLI hooks
|
- protocols: implement CLI hooks and per-procotol CLI commands
|
||||||
- protocols: implement reconfigure hook
|
- protocols: implement reconfigure hook
|
||||||
- protocols: use locking
|
- protocols: use locking
|
||||||
|
|
||||||
|
@ -122,3 +113,4 @@ BGP
|
||||||
- hold time
|
- hold time
|
||||||
- idle timer after error: initial value, exponential growth, maximum value
|
- idle timer after error: initial value, exponential growth, maximum value
|
||||||
- import of IGP routes (use external route tags from OSPF)
|
- import of IGP routes (use external route tags from OSPF)
|
||||||
|
- Use IP_RECVERR for BGP TCP sockets?
|
||||||
|
|
|
@ -308,3 +308,43 @@ cf_pop_scope(void)
|
||||||
conf_this_scope = conf_this_scope->next;
|
conf_this_scope = conf_this_scope->next;
|
||||||
ASSERT(conf_this_scope);
|
ASSERT(conf_this_scope);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct symbol *
|
||||||
|
cf_walk_symbols(struct config *cf, struct symbol *sym, int *pos)
|
||||||
|
{
|
||||||
|
for(;;)
|
||||||
|
{
|
||||||
|
if (!sym)
|
||||||
|
{
|
||||||
|
if (*pos >= SYM_HASH_SIZE)
|
||||||
|
return NULL;
|
||||||
|
sym = cf->sym_hash[(*pos)++];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
sym = sym->next;
|
||||||
|
if (sym && sym->scope->active)
|
||||||
|
return sym;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
cf_symbol_class_name(struct symbol *sym)
|
||||||
|
{
|
||||||
|
switch (sym->class)
|
||||||
|
{
|
||||||
|
case SYM_VOID:
|
||||||
|
return "undefined";
|
||||||
|
case SYM_PROTO:
|
||||||
|
return "protocol";
|
||||||
|
case SYM_NUMBER:
|
||||||
|
return "numeric constant";
|
||||||
|
case SYM_FUNCTION:
|
||||||
|
return "function";
|
||||||
|
case SYM_FILTER:
|
||||||
|
return "filter";
|
||||||
|
case SYM_TABLE:
|
||||||
|
return "routing table";
|
||||||
|
default:
|
||||||
|
return "unknown type";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -94,6 +94,8 @@ struct symbol *cf_default_name(char *template, int *counter);
|
||||||
void cf_define_symbol(struct symbol *symbol, int type, void *def);
|
void cf_define_symbol(struct symbol *symbol, int type, void *def);
|
||||||
void cf_push_scope(struct symbol *);
|
void cf_push_scope(struct symbol *);
|
||||||
void cf_pop_scope(void);
|
void cf_pop_scope(void);
|
||||||
|
struct symbol *cf_walk_symbols(struct config *cf, struct symbol *sym, int *pos);
|
||||||
|
char *cf_symbol_class_name(struct symbol *sym);
|
||||||
|
|
||||||
/* Parser */
|
/* Parser */
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,7 @@ Reply codes of BIRD command-line interface
|
||||||
1007 Route list
|
1007 Route list
|
||||||
1008 Route details
|
1008 Route details
|
||||||
1009 Static route list
|
1009 Static route list
|
||||||
|
1010 Symbol list
|
||||||
|
|
||||||
8000 Reply too long
|
8000 Reply too long
|
||||||
8001 Route not found
|
8001 Route not found
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
source=rt-table.c rt-fib.c rt-attr.c proto.c iface.c rt-dev.c password.c cli.c locks.c
|
source=rt-table.c rt-fib.c rt-attr.c proto.c iface.c rt-dev.c password.c cli.c locks.c cmds.c
|
||||||
root-rel=../
|
root-rel=../
|
||||||
dir-name=nest
|
dir-name=nest
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* BIRD Internet Routing Daemon -- Command-Line Interface
|
* BIRD Internet Routing Daemon -- Command-Line Interface
|
||||||
*
|
*
|
||||||
* (c) 1999 Martin Mares <mj@ucw.cz>
|
* (c) 1999--2000 Martin Mares <mj@ucw.cz>
|
||||||
*
|
*
|
||||||
* 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.
|
||||||
*/
|
*/
|
||||||
|
|
35
nest/cmds.c
Normal file
35
nest/cmds.c
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
/*
|
||||||
|
* BIRD Internet Routing Daemon -- CLI Commands Which Don't Fit Anywhere Else
|
||||||
|
*
|
||||||
|
* (c) 2000 Martin Mares <mj@ucw.cz>
|
||||||
|
*
|
||||||
|
* Can be freely distributed and used under the terms of the GNU GPL.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "nest/bird.h"
|
||||||
|
#include "nest/cli.h"
|
||||||
|
#include "conf/conf.h"
|
||||||
|
#include "nest/cmds.h"
|
||||||
|
#include "lib/string.h"
|
||||||
|
|
||||||
|
void
|
||||||
|
cmd_show_status(void)
|
||||||
|
{
|
||||||
|
cli_msg(1000, "BIRD " BIRD_VERSION);
|
||||||
|
/* FIXME: Should include uptime, shutdown flag et cetera */
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cmd_show_symbols(struct symbol *sym)
|
||||||
|
{
|
||||||
|
int pos = 0;
|
||||||
|
|
||||||
|
if (sym)
|
||||||
|
cli_msg(1010, "%s\t%s", sym->name, cf_symbol_class_name(sym));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
while (sym = cf_walk_symbols(config, sym, &pos))
|
||||||
|
cli_msg(-1010, "%s\t%s", sym->name, cf_symbol_class_name(sym));
|
||||||
|
cli_msg(0, "");
|
||||||
|
}
|
||||||
|
}
|
10
nest/cmds.h
Normal file
10
nest/cmds.h
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
/*
|
||||||
|
* BIRD Internet Routing Daemon -- CLI Commands Which Don't Fit Anywhere Else
|
||||||
|
*
|
||||||
|
* (c) 2000 Martin Mares <mj@ucw.cz>
|
||||||
|
*
|
||||||
|
* Can be freely distributed and used under the terms of the GNU GPL.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void cmd_show_status(void);
|
||||||
|
void cmd_show_symbols(struct symbol *sym);
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* BIRD -- Core Configuration
|
* BIRD -- Core Configuration
|
||||||
*
|
*
|
||||||
* (c) 1998--1999 Martin Mares <mj@ucw.cz>
|
* (c) 1998--2000 Martin Mares <mj@ucw.cz>
|
||||||
*
|
*
|
||||||
* 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.
|
||||||
*/
|
*/
|
||||||
|
@ -13,6 +13,7 @@ static struct iface_patt *this_ipatt;
|
||||||
|
|
||||||
#include "nest/rt-dev.h"
|
#include "nest/rt-dev.h"
|
||||||
#include "nest/password.h"
|
#include "nest/password.h"
|
||||||
|
#include "nest/cmds.h"
|
||||||
|
|
||||||
CF_DECLS
|
CF_DECLS
|
||||||
|
|
||||||
|
@ -193,10 +194,8 @@ password_list:
|
||||||
|
|
||||||
CF_CLI_HELP(SHOW,,[[Show status information]])
|
CF_CLI_HELP(SHOW,,[[Show status information]])
|
||||||
|
|
||||||
CF_CLI(SHOW STATUS,,, [[Show router status]]) {
|
CF_CLI(SHOW STATUS,,, [[Show router status]])
|
||||||
cli_msg(1000, "BIRD " BIRD_VERSION);
|
{ cmd_show_status(); }
|
||||||
/* FIXME: Should include uptime, shutdown flag et cetera */
|
|
||||||
} ;
|
|
||||||
|
|
||||||
CF_CLI(SHOW PROTOCOLS, optsym, [<name>], [[Show routing protocols]])
|
CF_CLI(SHOW PROTOCOLS, optsym, [<name>], [[Show routing protocols]])
|
||||||
{ proto_show($3, 0); } ;
|
{ proto_show($3, 0); } ;
|
||||||
|
@ -253,6 +252,9 @@ r_args:
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
CF_CLI(SHOW SYMBOLS, optsym, [<symbol>], [[Show all known symbolic names]])
|
||||||
|
{ cmd_show_symbols($3); } ;
|
||||||
|
|
||||||
CF_CLI_HELP(DEBUG, <subsystem>, [[Show debugging information]])
|
CF_CLI_HELP(DEBUG, <subsystem>, [[Show debugging information]])
|
||||||
CF_CLI(DEBUG RESOURCES,,, [[Show all allocated resource]])
|
CF_CLI(DEBUG RESOURCES,,, [[Show all allocated resource]])
|
||||||
{ rdump(&root_pool); cli_msg(0, ""); } ;
|
{ rdump(&root_pool); cli_msg(0, ""); } ;
|
||||||
|
|
Loading…
Reference in a new issue