X-Git-Url: http://git.sameswireless.fr/l2tpns.git/blobdiff_plain/5a3b9184c8d1ab6c494ae62272e5d6c6fcd874ff..cd4f292462c2be94ec825ee1cfbb4abe09f73b96:/cli.c?ds=sidebyside diff --git a/cli.c b/cli.c index 3d5e223..857f8b2 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.35 2004/11/29 03:55:19 bodea Exp $"; +char const *cvs_id_cli = "$Id: cli.c,v 1.40 2004/12/15 03:09:56 bodea Exp $"; #include #include @@ -22,6 +22,7 @@ char const *cvs_id_cli = "$Id: cli.c,v 1.35 2004/11/29 03:55:19 bodea Exp $"; #include #include #include +#include #include "l2tpns.h" #include "util.h" #include "cluster.h" @@ -29,7 +30,6 @@ char const *cvs_id_cli = "$Id: cli.c,v 1.35 2004/11/29 03:55:19 bodea Exp $"; #include "ll.h" #ifdef BGP #include "bgp.h" -#include #endif extern tunnelt *tunnel; @@ -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 (*ringbuffer->buffer[i].message) + if (!*m) continue; + + 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); - if (++i == ringbuffer->tail) break; - if (i == RINGBUFFER_SIZE) i = 0; + 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); + + 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++; }