From 4761efdb43aa128fa0326963d88debe8fb942c84 Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Mon, 29 May 2000 22:10:18 +0000 Subject: Tracing of CLI connections/commands can be now controlled by `debug commands ' in the configuration. Level 0 means no tracing, 1 means connections only, 2 includes all commands. --- conf/conf.h | 1 + nest/cli.c | 2 ++ nest/config.Y | 3 ++- sysdep/unix/main.c | 14 +++++++++----- 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; -- cgit v1.2.3