X-Git-Url: http://git.sameswireless.fr/l2tpns.git/blobdiff_plain/bc5b25832a728dea4346782d84d63128035bcfaf..53ea63b3266d2cce5ab6fe9f02264dfc2eea2a6d:/cli.c?ds=sidebyside diff --git a/cli.c b/cli.c index 190372e..515185f 100644 --- a/cli.c +++ b/cli.c @@ -2,7 +2,7 @@ // vim: sw=8 ts=8 char const *cvs_name = "$Name: $"; -char const *cvs_id_cli = "$Id: cli.c,v 1.34 2004/11/29 02:17:17 bodea Exp $"; +char const *cvs_id_cli = "$Id: cli.c,v 1.39 2004/12/03 06:41:11 bodea Exp $"; #include #include @@ -1003,7 +1003,7 @@ static int cmd_show_radius(struct cli_def *cli, char *command, char **argv, int NULL); } - cli_print(cli, "%6s%6s%5s%6s%9s%9s%4s", "ID", "Radius", "Sock", "State", "Session", "Retry", "Try"); + cli_print(cli, "%6s%7s%5s%6s%9s%9s%4s", "ID", "Radius", "Sock", "State", "Session", "Retry", "Try"); time(&time_now); @@ -1019,7 +1019,7 @@ static int cmd_show_radius(struct cli_def *cli, char *command, char **argv, int if (!show_all && radius[i].state == RADIUSNULL) continue; - cli_print(cli, "%6d%6d%5d%6s%9d%9u%4d", + cli_print(cli, "%6d%7d%5d%6s%9d%9u%4d", i, i >> RADIUS_SHIFT, i & RADIUS_MASK, @@ -1861,42 +1861,44 @@ static int cmd_set(struct cli_def *cli, char *command, char **argv, int argc) int regular_stuff(struct cli_def *cli) { - int i = debug_rb_tail; - int reprompt = 0; + int out = 0; + int i; #ifdef RINGBUFFER - while (i != ringbuffer->tail) + for (i = debug_rb_tail; i != ringbuffer->tail; i = (i + 1) % RINGBUFFER_SIZE) { - int show_message = 0; + char *m = ringbuffer->buffer[i].message; + char *p; + int show = 0; + + if (!*m) continue; - if (*ringbuffer->buffer[i].message) + switch (ringbuffer->buffer[i].level) { - // Always show messages if we are doing general debug - if (ringbuffer->buffer[i].level == 0 && debug_flags.critical) show_message = 1; - if (ringbuffer->buffer[i].level == 1 && debug_flags.error) show_message = 1; - if (ringbuffer->buffer[i].level == 2 && debug_flags.warning) show_message = 1; - if (ringbuffer->buffer[i].level == 3 && debug_flags.info) show_message = 1; - if (ringbuffer->buffer[i].level == 4 && debug_flags.calls) show_message = 1; - if (ringbuffer->buffer[i].level == 5 && debug_flags.data) show_message = 1; + case 0: show = debug_flags.critical; break; + case 1: show = debug_flags.error; break; + case 2: show = debug_flags.warning; break; + case 3: show = debug_flags.info; break; + case 4: show = debug_flags.calls; break; + case 5: show = debug_flags.data; break; } - if (show_message) - { - cli_print(cli, "\r%s-%u-%u %s", - debug_levels[(int)ringbuffer->buffer[i].level], - ringbuffer->buffer[i].tunnel, - ringbuffer->buffer[i].session, - ringbuffer->buffer[i].message); + if (!show) continue; - reprompt = 1; - } + if (!(p = strchr(m, '\n'))) + p = m + strlen(p); + + cli_print(cli, "\r%s-%u-%u %.*s", + debug_levels[(int)ringbuffer->buffer[i].level], + ringbuffer->buffer[i].tunnel, + ringbuffer->buffer[i].session, + p - m, m); - if (++i == ringbuffer->tail) break; - if (i == RINGBUFFER_SIZE) i = 0; + out++; } debug_rb_tail = ringbuffer->tail; - if (reprompt) + if (out) cli_reprompt(cli); #endif return CLI_OK; @@ -2688,6 +2690,12 @@ ip_filter_rulet *access_list_rule_ext(struct cli_def *cli, char *command, char * if (a < argc && MATCH("fragments", argv[a])) { + if (rule.src_ports.op || rule.dst_ports.op || rule.tcp_flag_op) + { + cli_print(cli, "Can't specify \"fragments\" on rules with layer 4 matches"); + return NULL; + } + rule.frag = 1; a++; } @@ -3008,6 +3016,9 @@ static int cmd_show_access_list(struct cli_def *cli, char *command, char **argv, return CLI_OK; } + if (i) + cli_print(cli, ""); + cli_print(cli, "%s IP access list %s", ip_filters[f].extended ? "Extended" : "Standard", ip_filters[f].name);