1
0
mirror of https://gitlab.labs.nic.cz/labs/bird.git synced 2024-05-11 16:54:54 +00:00

show interfaces' and show protocols' works.

This commit is contained in:
Martin Mares
1999-11-30 12:57:14 +00:00
parent 10b5baaef3
commit 0d3e6bceee
5 changed files with 82 additions and 20 deletions

View File

@@ -191,12 +191,15 @@ password_list:
CF_CLI_HELP(SHOW,,[[Show status information]])
CF_CLI(SHOW STATUS,,, [[Show router status]]) {
cli_msg(2000, "BIRD " BIRD_VERSION);
cli_msg(1000, "BIRD " BIRD_VERSION);
/* FIXME: Should include uptime, shutdown flag et cetera */
} ;
CF_CLI(SHOW PROTOCOLS, optsym, [<name>], [[Show routing protocols]])
{ proto_show($3); } ;
{ proto_show($3, 0); } ;
CF_CLI(SHOW PROTOCOLS VERBOSE, optsym, [<name>], [[Show routing protocol details]])
{ proto_show($4, 1); } ;
CF_CLI(SHOW INTERFACES,,, [[Show network interfaces]])
{ if_show(); } ;

View File

@@ -646,7 +646,7 @@ if_show_addr(struct ifa *a)
bsprintf(opp, ", opposite %I", a->opposite);
else
opp[0] = 0;
cli_msg(-2003, "\t%I/%d (%s%s%s, scope %s)",
cli_msg(-1003, "\t%I/%d (%s%s%s, scope %s)",
a->ip, a->pxlen,
(a->flags & IA_PRIMARY) ? "Primary" : (a->flags & IA_SECONDARY) ? "Secondary" : "???",
broad, opp,
@@ -662,14 +662,14 @@ if_show(void)
WALK_LIST(i, iface_list)
{
cli_msg(-2001, "%s %s (index=%d)", i->name, (i->flags & IF_UP) ? "up" : "DOWN", i->index);
cli_msg(-1001, "%s %s (index=%d)", i->name, (i->flags & IF_UP) ? "up" : "DOWN", i->index);
if (i->flags & IF_UNNUMBERED)
type = "UnNum-PtP";
else if (!(i->flags & IF_MULTIACCESS))
type = "PtP";
else
type = "MultiAccess";
cli_msg(-2004, "\t%s%s%s Admin%s Link%s%s%s MTU=%d",
cli_msg(-1004, "\t%s%s%s Admin%s Link%s%s%s MTU=%d",
type,
(i->flags & IF_BROADCAST) ? " Broadcast" : "",
(i->flags & IF_MULTICAST) ? " Multicast" : "",
@@ -693,13 +693,14 @@ if_show_summary(void)
struct iface *i;
byte addr[STD_ADDRESS_P_LENGTH + 16];
cli_msg(-2005, "interface state address");
WALK_LIST(i, iface_list)
{
if (i->addr)
bsprintf(addr, "%I/%d", i->addr->ip, i->addr->pxlen);
else
addr[0] = 0;
cli_msg(-2005, "%s\t%s\t%s", i->name, (i->flags & IF_UP) ? "up" : "DOWN", addr);
cli_msg(-1005, "%-9s %-5s %s", i->name, (i->flags & IF_UP) ? "up" : "DOWN", addr);
}
cli_msg(0, "");
}

View File

@@ -422,10 +422,69 @@ proto_flush_all(void *unused)
return 0;
}
void
proto_show(struct symbol *s)
/*
* CLI Commands
*/
static char *
proto_state_name(struct proto *p)
{
cli_msg(-1002, "");
cli_msg(-2002, "");
#define P(x,y) ((x << 4) | y)
switch (P(p->proto_state, p->core_state))
{
case P(PS_DOWN, FS_HUNGRY): return "down";
case P(PS_START, FS_HUNGRY): return "start";
case P(PS_UP, FS_HUNGRY):
case P(PS_UP, FS_FEEDING): return "feed";
case P(PS_STOP, FS_HUNGRY): return "stop";
case P(PS_UP, FS_HAPPY): return "up";
case P(PS_STOP, FS_FLUSHING):
case P(PS_DOWN, FS_FLUSHING): return "flush";
default: return "???";
}
#undef P
}
static char *
proto_goal_name(struct proto *p)
{
if (p->disabled)
return " <disabled>";
if (p->core_goal == p->core_state)
return "";
if (p->core_goal == FS_HAPPY)
return " <starting>";
return " <shutting down>";
}
static void
proto_do_show(list *l, int verbose)
{
struct proto *p;
WALK_LIST(p, *l)
{
cli_msg(-1002, "%-8s %-8s %-8s %s%s",
p->name,
p->proto->name,
p->table->name,
proto_state_name(p),
proto_goal_name(p));
if (verbose)
{
cli_msg(-1006, "\tPreference: %d", p->preference);
cli_msg(-1006, "\tInput filter: %s", filter_name(p->in_filter));
cli_msg(-1006, "\tOutput filter: %s", filter_name(p->out_filter));
}
}
}
void
proto_show(struct symbol *s, int verbose)
{
cli_msg(-2002, "name proto table state");
proto_do_show(&proto_list, verbose);
proto_do_show(&flush_proto_list, verbose);
proto_do_show(&inactive_proto_list, verbose);
cli_msg(0, "");
}

View File

@@ -144,7 +144,7 @@ struct proto {
void proto_build(struct proto_config *);
void *proto_new(struct proto_config *, unsigned size);
void *proto_config_new(struct protocol *, unsigned size);
void proto_show(struct symbol *);
void proto_show(struct symbol *, int);
extern list proto_list;