cosmetic logging change
[l2tpns.git] / cli.c
diff --git a/cli.c b/cli.c
index 3d5e223..857f8b2 100644 (file)
--- a/cli.c
+++ b/cli.c
@@ -2,7 +2,7 @@
 // vim: sw=8 ts=8
 
 char const *cvs_name = "$Name:  $";
 // 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 <stdio.h>
 #include <stdarg.h>
 
 #include <stdio.h>
 #include <stdarg.h>
@@ -22,6 +22,7 @@ char const *cvs_id_cli = "$Id: cli.c,v 1.35 2004/11/29 03:55:19 bodea Exp $";
 #include <unistd.h>
 #include <dlfcn.h>
 #include <libcli.h>
 #include <unistd.h>
 #include <dlfcn.h>
 #include <libcli.h>
+#include <netdb.h>
 #include "l2tpns.h"
 #include "util.h"
 #include "cluster.h"
 #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 "ll.h"
 #ifdef BGP
 #include "bgp.h"
-#include <netdb.h>
 #endif
 
 extern tunnelt *tunnel;
 #endif
 
 extern tunnelt *tunnel;
@@ -1003,7 +1003,7 @@ static int cmd_show_radius(struct cli_def *cli, char *command, char **argv, int
                        NULL);
        }
 
                        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);
 
 
        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;
 
 
                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,
                                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 regular_stuff(struct cli_def *cli)
 {
-       int i = debug_rb_tail;
-       int reprompt = 0;
+       int out = 0;
+       int i;
 
 #ifdef RINGBUFFER
 
 #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;
        }
 
        debug_rb_tail = ringbuffer->tail;
-       if (reprompt)
+       if (out)
                cli_reprompt(cli);
 #endif
        return CLI_OK;
                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 (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++;
        }
                rule.frag = 1;
                a++;
        }