// vim: sw=8 ts=8
char const *cvs_name = "$Name: $";
-char const *cvs_id_cli = "$Id: cli.c,v 1.36 2004-11-29 06:30:05 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 <unistd.h>
#include <dlfcn.h>
#include <libcli.h>
+#include <netdb.h>
#include "l2tpns.h"
#include "util.h"
#include "cluster.h"
#include "ll.h"
#ifdef BGP
#include "bgp.h"
-#include <netdb.h>
#endif
extern tunnelt *tunnel;
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);
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,
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;
if (a < argc && MATCH("fragments", argv[a]))
{
- if (rule.src_ports.op || rule.dest_ports.op || rule.tcp_flag_op)
+ 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;