Include endpoint address in accounting dump files.

Convert mainloop to use epoll rather than select.
This commit is contained in:
Brendan O'Dea 2005-06-04 15:42:35 +00:00
parent 788fb3cb6d
commit b830a899ca
12 changed files with 549 additions and 267 deletions

66
cli.c
View file

@ -2,7 +2,7 @@
// vim: sw=8 ts=8
char const *cvs_name = "$Name: $";
char const *cvs_id_cli = "$Id: cli.c,v 1.60 2005-06-02 11:32:30 bodea Exp $";
char const *cvs_id_cli = "$Id: cli.c,v 1.61 2005-06-04 15:42:35 bodea Exp $";
#include <stdio.h>
#include <stdarg.h>
@ -49,15 +49,6 @@ extern struct cli_tunnel_actions *cli_tunnel_actions;
extern tbft *filter_list;
extern ip_filtert *ip_filters;
static char *debug_levels[] = {
"CRIT",
"ERROR",
"WARN",
"INFO",
"CALL",
"DATA",
};
struct
{
char critical;
@ -68,15 +59,24 @@ struct
char data;
} debug_flags;
static int debug_session;
static int debug_tunnel;
#ifdef RINGBUFFER
static int debug_rb_tail;
static char *debug_levels[] = {
"CRIT",
"ERROR",
"WARN",
"INFO",
"CALL",
"DATA",
};
#endif
static int cmd_show_session(struct cli_def *cli, char *command, char **argv, int argc);
static int cmd_show_tunnels(struct cli_def *cli, char *command, char **argv, int argc);
static int cmd_show_users(struct cli_def *cli, char *command, char **argv, int argc);
static int cmd_show_radius(struct cli_def *cli, char *command, char **argv, int argc);
static int cmd_show_counters(struct cli_def *cli, char *command, char **argv, int argc);
static int cmd_show_version(struct cli_def *cli, char *command, char **argv, int argc);
static int cmd_show_pool(struct cli_def *cli, char *command, char **argv, int argc);
static int cmd_show_run(struct cli_def *cli, char *command, char **argv, int argc);
@ -84,7 +84,6 @@ static int cmd_show_banana(struct cli_def *cli, char *command, char **argv, int
static int cmd_show_plugins(struct cli_def *cli, char *command, char **argv, int argc);
static int cmd_show_throttle(struct cli_def *cli, char *command, char **argv, int argc);
static int cmd_write_memory(struct cli_def *cli, char *command, char **argv, int argc);
static int cmd_clear_counters(struct cli_def *cli, char *command, char **argv, int argc);
static int cmd_drop_user(struct cli_def *cli, char *command, char **argv, int argc);
static int cmd_drop_tunnel(struct cli_def *cli, char *command, char **argv, int argc);
static int cmd_drop_session(struct cli_def *cli, char *command, char **argv, int argc);
@ -102,6 +101,11 @@ static int cmd_uptime(struct cli_def *cli, char *command, char **argv, int argc)
static int regular_stuff(struct cli_def *cli);
static void parsemac(char *string, char mac[6]);
#ifdef STATISTICS
static int cmd_show_counters(struct cli_def *cli, char *command, char **argv, int argc);
static int cmd_clear_counters(struct cli_def *cli, char *command, char **argv, int argc);
#endif /* STATISTICS */
#ifdef BGP
#define MODE_CONFIG_BGP 8
static int cmd_router_bgp(struct cli_def *cli, char *command, char **argv, int argc);
@ -312,8 +316,6 @@ void cli_do(int sockfd)
cli->users = 0;
}
debug_session = 0;
debug_tunnel = 0;
#ifdef RINGBUFFER
debug_rb_tail = ringbuffer->tail;
#endif
@ -646,6 +648,7 @@ static int cmd_show_users(struct cli_def *cli, char *command, char **argv, int a
return CLI_OK;
}
#ifdef STATISTICS
static int cmd_show_counters(struct cli_def *cli, char *command, char **argv, int argc)
{
if (CLI_HELP_REQUESTED)
@ -697,7 +700,7 @@ static int cmd_show_counters(struct cli_def *cli, char *command, char **argv, in
cli_print(cli, "%-30s%u", "multi_read_exceeded", GET_STAT(multi_read_exceeded));
#ifdef STATISTICS
#ifdef STAT_CALLS
cli_print(cli, "\n%-30s%-10s", "Counter", "Value");
cli_print(cli, "-----------------------------------------");
cli_print(cli, "%-30s%u", "call_processtun", GET_STAT(call_processtun));
@ -731,7 +734,7 @@ static int cmd_show_counters(struct cli_def *cli, char *command, char **argv, in
cli_print(cli, "%-30s%u", "call_radiussend", GET_STAT(call_radiussend));
cli_print(cli, "%-30s%u", "call_radiusretry", GET_STAT(call_radiusretry));
cli_print(cli, "%-30s%u", "call_random_data", GET_STAT(call_random_data));
#endif
#endif /* STAT_CALLS */
{
time_t l = GET_STAT(last_reset);
@ -746,6 +749,19 @@ static int cmd_show_counters(struct cli_def *cli, char *command, char **argv, in
return CLI_OK;
}
static int cmd_clear_counters(struct cli_def *cli, char *command, char **argv, int argc)
{
if (CLI_HELP_REQUESTED)
return CLI_HELP_NO_ARGS;
memset(_statistics, 0, sizeof(struct Tstats));
SET_STAT(last_reset, time(NULL));
cli_print(cli, "Counters cleared");
return CLI_OK;
}
#endif /* STATISTICS */
static int cmd_show_version(struct cli_def *cli, char *command, char **argv, int argc)
{
int tag = 0;
@ -1134,18 +1150,6 @@ static int cmd_show_banana(struct cli_def *cli, char *command, char **argv, int
return CLI_OK;
}
static int cmd_clear_counters(struct cli_def *cli, char *command, char **argv, int argc)
{
if (CLI_HELP_REQUESTED)
return CLI_HELP_NO_ARGS;
memset(_statistics, 0, sizeof(struct Tstats));
SET_STAT(last_reset, time(NULL));
cli_print(cli, "Counters cleared");
return CLI_OK;
}
static int cmd_drop_user(struct cli_def *cli, char *command, char **argv, int argc)
{
int i;
@ -1896,10 +1900,10 @@ static int cmd_set(struct cli_def *cli, char *command, char **argv, int argc)
int regular_stuff(struct cli_def *cli)
{
#ifdef RINGBUFFER
int out = 0;
int i;
#ifdef RINGBUFFER
for (i = debug_rb_tail; i != ringbuffer->tail; i = (i + 1) % RINGBUFFER_SIZE)
{
char *m = ringbuffer->buffer[i].message;