summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Mares <mj@ucw.cz>2000-05-30 00:10:18 +0200
committerMartin Mares <mj@ucw.cz>2000-05-30 00:10:18 +0200
commit4761efdb43aa128fa0326963d88debe8fb942c84 (patch)
tree483e33ce446335643fc4f83148a386df87b47e4d
parent26eee1c33ac90ccbc5753afac06d34980fade2b8 (diff)
downloadbird-4761efdb43aa128fa0326963d88debe8fb942c84.tar
bird-4761efdb43aa128fa0326963d88debe8fb942c84.zip
Tracing of CLI connections/commands can be now controlled
by `debug commands <level>' in the configuration. Level 0 means no tracing, 1 means connections only, 2 includes all commands.
-rw-r--r--conf/conf.h1
-rw-r--r--nest/cli.c2
-rw-r--r--nest/config.Y3
-rw-r--r--sysdep/unix/main.c14
4 files changed, 14 insertions, 6 deletions
diff --git a/conf/conf.h b/conf/conf.h
index dbc747d..b8bfd94 100644
--- a/conf/conf.h
+++ b/conf/conf.h
@@ -23,6 +23,7 @@ struct config {
struct rtable_config *master_rtc; /* Configuration of master routing table */
u32 router_id; /* Our Router ID */
unsigned int proto_default_debug; /* Default protocol debug mask */
+ int cli_debug; /* Tracing of CLI connections and commands */
char *err_msg; /* Parser error message */
int err_lino; /* Line containing error */
char *file_name; /* Name of configuration file */
diff --git a/nest/cli.c b/nest/cli.c
index fb2b679..ec18bc9 100644
--- a/nest/cli.c
+++ b/nest/cli.c
@@ -162,6 +162,8 @@ cli_command(struct cli *c)
struct config f;
int res;
+ if (config->cli_debug > 1)
+ log(L_TRACE "CLI: %s", c->rx_buf);
bzero(&f, sizeof(f));
f.mem = c->parser_pool;
cf_read_hook = cli_cmd_read_hook;
diff --git a/nest/config.Y b/nest/config.Y
index e2668f5..2918d25 100644
--- a/nest/config.Y
+++ b/nest/config.Y
@@ -22,7 +22,7 @@ CF_DECLS
CF_KEYWORDS(ROUTER, ID, PROTOCOL, PREFERENCE, DISABLED, DEBUG, ALL, OFF, DIRECT)
CF_KEYWORDS(INTERFACE, IMPORT, EXPORT, FILTER, NONE, TABLE, STATES, ROUTES, FILTERS)
CF_KEYWORDS(PASSWORD, FROM, PASSIVE, TO, ID, EVENTS, PACKETS, PROTOCOLS, INTERFACES)
-CF_KEYWORDS(PRIMARY, STATS, COUNT, FOR)
+CF_KEYWORDS(PRIMARY, STATS, COUNT, FOR, COMMANDS)
CF_ENUM(T_ENUM_RTS, RTS_, DUMMY, STATIC, INHERIT, DEVICE, STATIC_DEVICE, REDIRECT,
RIP, OSPF, OSPF_EXT, OSPF_IA, OSPF_BOUNDARY, BGP, PIPE)
@@ -118,6 +118,7 @@ CF_ADDTO(conf, debug_default)
debug_default:
DEBUG PROTOCOLS debug_mask { new_config->proto_default_debug = $3; }
+ | DEBUG COMMANDS expr { new_config->cli_debug = $3; }
;
/* Interface patterns */
diff --git a/sysdep/unix/main.c b/sysdep/unix/main.c
index 971c79d..fed833b 100644
--- a/sysdep/unix/main.c
+++ b/sysdep/unix/main.c
@@ -233,10 +233,13 @@ cli_tx(sock *s)
static void
cli_err(sock *s, int err)
{
- if (err)
- log(L_INFO "CLI connection dropped: %s", strerror(err));
- else
- log(L_INFO "CLI connection closed");
+ if (config->cli_debug)
+ {
+ if (err)
+ log(L_INFO "CLI connection dropped: %s", strerror(err));
+ else
+ log(L_INFO "CLI connection closed");
+ }
cli_free(s->data);
sk_close(s);
}
@@ -246,7 +249,8 @@ cli_connect(sock *s, int size)
{
cli *c;
- log(L_INFO "CLI connect");
+ if (config->cli_debug)
+ log(L_INFO "CLI connect");
s->rx_hook = cli_rx;
s->tx_hook = cli_tx;
s->err_hook = cli_err;