add counters for select_called, select_ready and select_processed
fix cli_print format strings
This commit is contained in:
parent
9504bc0efb
commit
4d7d7850b5
6 changed files with 153 additions and 132 deletions
3
Changes
3
Changes
|
|
@ -1,4 +1,4 @@
|
|||
* Thu Dec 16 2004 Brendan O'Dea <bod@optusnet.com.au> 2.0.13
|
||||
* Fri Dec 17 2004 Brendan O'Dea <bod@optusnet.com.au> 2.0.13
|
||||
- Better cluster master collision resolution: keep a counter of state
|
||||
changes, propagated in the heartbeats; the master with the highest #
|
||||
of changes (that has kept in contact with the LAC through the
|
||||
|
|
@ -10,6 +10,7 @@
|
|||
startup-config (from Jonathan's Debian package patches).
|
||||
- Read multiple packets off cluster_sockfd as well as udpfd, tunfd in an
|
||||
attempt to avoid losing the cluster in high load (DoS) conditions.
|
||||
- Add counters for select_called, select_ready and select_processed.
|
||||
- Compress logs.
|
||||
- Retain counters of shutdown sessions to dump once per minute.
|
||||
- Use standard uintN_t types for portability.
|
||||
|
|
|
|||
119
cli.c
119
cli.c
|
|
@ -2,10 +2,11 @@
|
|||
// vim: sw=8 ts=8
|
||||
|
||||
char const *cvs_name = "$Name: $";
|
||||
char const *cvs_id_cli = "$Id: cli.c,v 1.41 2004/12/16 08:49:52 bodea Exp $";
|
||||
char const *cvs_id_cli = "$Id: cli.c,v 1.42 2004/12/16 23:40:30 bodea Exp $";
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/file.h>
|
||||
#include <sys/stat.h>
|
||||
#include <syslog.h>
|
||||
|
|
@ -19,10 +20,10 @@ char const *cvs_id_cli = "$Id: cli.c,v 1.41 2004/12/16 08:49:52 bodea Exp $";
|
|||
#include <sys/socket.h>
|
||||
#include <sys/types.h>
|
||||
#include <signal.h>
|
||||
#include <unistd.h>
|
||||
#include <dlfcn.h>
|
||||
#include <libcli.h>
|
||||
#include <netdb.h>
|
||||
#include <libcli.h>
|
||||
|
||||
#include "l2tpns.h"
|
||||
#include "util.h"
|
||||
#include "cluster.h"
|
||||
|
|
@ -405,12 +406,12 @@ static int cmd_show_session(struct cli_def *cli, char *command, char **argv, int
|
|||
cli_print(cli, "\tIdle time:\t%u seconds", abs(time_now - session[s].last_packet));
|
||||
cli_print(cli, "\tNext Recv:\t%u", session[s].nr);
|
||||
cli_print(cli, "\tNext Send:\t%u", session[s].ns);
|
||||
cli_print(cli, "\tBytes In/Out:\t%lu/%lu", (unsigned long)session[s].total_cout, (unsigned long)session[s].total_cin);
|
||||
cli_print(cli, "\tPkts In/Out:\t%lu/%lu", (unsigned long)session[s].pout, (unsigned long)session[s].pin);
|
||||
cli_print(cli, "\tBytes In/Out:\t%u/%u", session[s].total_cout, session[s].total_cin);
|
||||
cli_print(cli, "\tPkts In/Out:\t%u/%u", session[s].pout, session[s].pin);
|
||||
cli_print(cli, "\tMRU:\t\t%d", session[s].mru);
|
||||
cli_print(cli, "\tRadius Session:\t%u", session[s].radius);
|
||||
cli_print(cli, "\tRx Speed:\t%lu", session[s].rx_connect_speed);
|
||||
cli_print(cli, "\tTx Speed:\t%lu", session[s].tx_connect_speed);
|
||||
cli_print(cli, "\tRx Speed:\t%u", session[s].rx_connect_speed);
|
||||
cli_print(cli, "\tTx Speed:\t%u", session[s].tx_connect_speed);
|
||||
if (session[s].filter_in && session[s].filter_in <= MAXFILTER)
|
||||
cli_print(cli, "\tFilter in:\t%u (%s)", session[s].filter_in, ip_filters[session[s].filter_in - 1].name);
|
||||
if (session[s].filter_out && session[s].filter_out <= MAXFILTER)
|
||||
|
|
@ -645,23 +646,22 @@ static int cmd_show_counters(struct cli_def *cli, char *command, char **argv, in
|
|||
return CLI_HELP_NO_ARGS;
|
||||
|
||||
cli_print(cli, "%-10s %-8s %-10s %-8s", "Ethernet", "Bytes", "Packets", "Errors");
|
||||
cli_print(cli, "%-10s %8lu %8lu %8lu", "RX",
|
||||
cli_print(cli, "%-10s %8u %8u %8u", "RX",
|
||||
GET_STAT(tun_rx_bytes),
|
||||
GET_STAT(tun_rx_packets),
|
||||
GET_STAT(tun_rx_errors));
|
||||
cli_print(cli, "%-10s %8lu %8lu %8lu", "TX",
|
||||
cli_print(cli, "%-10s %8u %8u %8u", "TX",
|
||||
GET_STAT(tun_tx_bytes),
|
||||
GET_STAT(tun_tx_packets),
|
||||
GET_STAT(tun_tx_errors));
|
||||
cli_print(cli, "");
|
||||
|
||||
cli_print(cli, "%-10s %-8s %-10s %-8s %-8s", "Tunnel", "Bytes", "Packets", "Errors", "Retries");
|
||||
cli_print(cli, "%-10s %8lu %8lu %8lu %8lu", "RX",
|
||||
cli_print(cli, "%-10s %8u %8u %8u", "RX",
|
||||
GET_STAT(tunnel_rx_bytes),
|
||||
GET_STAT(tunnel_rx_packets),
|
||||
GET_STAT(tunnel_rx_errors),
|
||||
0L);
|
||||
cli_print(cli, "%-10s %8lu %8lu %8lu %8lu", "TX",
|
||||
GET_STAT(tunnel_rx_errors));
|
||||
cli_print(cli, "%-10s %8u %8u %8u %8u", "TX",
|
||||
GET_STAT(tunnel_tx_bytes),
|
||||
GET_STAT(tunnel_tx_packets),
|
||||
GET_STAT(tunnel_tx_errors),
|
||||
|
|
@ -670,52 +670,55 @@ static int cmd_show_counters(struct cli_def *cli, char *command, char **argv, in
|
|||
|
||||
cli_print(cli, "%-30s%-10s", "Counter", "Value");
|
||||
cli_print(cli, "-----------------------------------------");
|
||||
cli_print(cli, "%-30s%lu", "radius_retries", GET_STAT(radius_retries));
|
||||
cli_print(cli, "%-30s%lu", "arp_sent", GET_STAT(arp_sent));
|
||||
cli_print(cli, "%-30s%lu", "packets_snooped", GET_STAT(packets_snooped));
|
||||
cli_print(cli, "%-30s%lu", "tunnel_created", GET_STAT(tunnel_created));
|
||||
cli_print(cli, "%-30s%lu", "session_created", GET_STAT(session_created));
|
||||
cli_print(cli, "%-30s%lu", "tunnel_timeout", GET_STAT(tunnel_timeout));
|
||||
cli_print(cli, "%-30s%lu", "session_timeout", GET_STAT(session_timeout));
|
||||
cli_print(cli, "%-30s%lu", "radius_timeout", GET_STAT(radius_timeout));
|
||||
cli_print(cli, "%-30s%lu", "radius_overflow", GET_STAT(radius_overflow));
|
||||
cli_print(cli, "%-30s%lu", "tunnel_overflow", GET_STAT(tunnel_overflow));
|
||||
cli_print(cli, "%-30s%lu", "session_overflow", GET_STAT(session_overflow));
|
||||
cli_print(cli, "%-30s%lu", "ip_allocated", GET_STAT(ip_allocated));
|
||||
cli_print(cli, "%-30s%lu", "ip_freed", GET_STAT(ip_freed));
|
||||
cli_print(cli, "%-30s%lu", "cluster_forwarded", GET_STAT(c_forwarded));
|
||||
cli_print(cli, "%-30s%lu", "recv_forward", GET_STAT(recv_forward));
|
||||
cli_print(cli, "%-30s%u", "radius_retries", GET_STAT(radius_retries));
|
||||
cli_print(cli, "%-30s%u", "arp_sent", GET_STAT(arp_sent));
|
||||
cli_print(cli, "%-30s%u", "packets_snooped", GET_STAT(packets_snooped));
|
||||
cli_print(cli, "%-30s%u", "tunnel_created", GET_STAT(tunnel_created));
|
||||
cli_print(cli, "%-30s%u", "session_created", GET_STAT(session_created));
|
||||
cli_print(cli, "%-30s%u", "tunnel_timeout", GET_STAT(tunnel_timeout));
|
||||
cli_print(cli, "%-30s%u", "session_timeout", GET_STAT(session_timeout));
|
||||
cli_print(cli, "%-30s%u", "radius_timeout", GET_STAT(radius_timeout));
|
||||
cli_print(cli, "%-30s%u", "radius_overflow", GET_STAT(radius_overflow));
|
||||
cli_print(cli, "%-30s%u", "tunnel_overflow", GET_STAT(tunnel_overflow));
|
||||
cli_print(cli, "%-30s%u", "session_overflow", GET_STAT(session_overflow));
|
||||
cli_print(cli, "%-30s%u", "ip_allocated", GET_STAT(ip_allocated));
|
||||
cli_print(cli, "%-30s%u", "ip_freed", GET_STAT(ip_freed));
|
||||
cli_print(cli, "%-30s%u", "cluster_forwarded", GET_STAT(c_forwarded));
|
||||
cli_print(cli, "%-30s%u", "recv_forward", GET_STAT(recv_forward));
|
||||
cli_print(cli, "%-30s%u", "select_called", GET_STAT(select_called));
|
||||
cli_print(cli, "%-30s%u", "select_ready", GET_STAT(select_ready));
|
||||
cli_print(cli, "%-30s%u", "select_processed", GET_STAT(select_processed));
|
||||
|
||||
|
||||
#ifdef STATISTICS
|
||||
cli_print(cli, "\n%-30s%-10s", "Counter", "Value");
|
||||
cli_print(cli, "-----------------------------------------");
|
||||
cli_print(cli, "%-30s%lu", "call_processtun", GET_STAT(call_processtun));
|
||||
cli_print(cli, "%-30s%lu", "call_processipout", GET_STAT(call_processipout));
|
||||
cli_print(cli, "%-30s%lu", "call_processudp", GET_STAT(call_processudp));
|
||||
cli_print(cli, "%-30s%lu", "call_processpap", GET_STAT(call_processpap));
|
||||
cli_print(cli, "%-30s%lu", "call_processchap", GET_STAT(call_processchap));
|
||||
cli_print(cli, "%-30s%lu", "call_processlcp", GET_STAT(call_processlcp));
|
||||
cli_print(cli, "%-30s%lu", "call_processipcp", GET_STAT(call_processipcp));
|
||||
cli_print(cli, "%-30s%lu", "call_processipin", GET_STAT(call_processipin));
|
||||
cli_print(cli, "%-30s%lu", "call_processccp", GET_STAT(call_processccp));
|
||||
cli_print(cli, "%-30s%lu", "call_processrad", GET_STAT(call_processrad));
|
||||
cli_print(cli, "%-30s%lu", "call_sendarp", GET_STAT(call_sendarp));
|
||||
cli_print(cli, "%-30s%lu", "call_sendipcp", GET_STAT(call_sendipcp));
|
||||
cli_print(cli, "%-30s%lu", "call_sendchap", GET_STAT(call_sendchap));
|
||||
cli_print(cli, "%-30s%lu", "call_sessionbyip", GET_STAT(call_sessionbyip));
|
||||
cli_print(cli, "%-30s%lu", "call_sessionbyuser", GET_STAT(call_sessionbyuser));
|
||||
cli_print(cli, "%-30s%lu", "call_tunnelsend", GET_STAT(call_tunnelsend));
|
||||
cli_print(cli, "%-30s%lu", "call_tunnelkill", GET_STAT(call_tunnelkill));
|
||||
cli_print(cli, "%-30s%lu", "call_tunnelshutdown", GET_STAT(call_tunnelshutdown));
|
||||
cli_print(cli, "%-30s%lu", "call_sessionkill", GET_STAT(call_sessionkill));
|
||||
cli_print(cli, "%-30s%lu", "call_sessionshutdown", GET_STAT(call_sessionshutdown));
|
||||
cli_print(cli, "%-30s%lu", "call_sessionsetup", GET_STAT(call_sessionsetup));
|
||||
cli_print(cli, "%-30s%lu", "call_assign_ip_address", GET_STAT(call_assign_ip_address));
|
||||
cli_print(cli, "%-30s%lu", "call_free_ip_address", GET_STAT(call_free_ip_address));
|
||||
cli_print(cli, "%-30s%lu", "call_dump_acct_info", GET_STAT(call_dump_acct_info));
|
||||
cli_print(cli, "%-30s%lu", "call_radiussend", GET_STAT(call_radiussend));
|
||||
cli_print(cli, "%-30s%lu", "call_radiusretry", GET_STAT(call_radiusretry));
|
||||
cli_print(cli, "%-30s%u", "call_processtun", GET_STAT(call_processtun));
|
||||
cli_print(cli, "%-30s%u", "call_processipout", GET_STAT(call_processipout));
|
||||
cli_print(cli, "%-30s%u", "call_processudp", GET_STAT(call_processudp));
|
||||
cli_print(cli, "%-30s%u", "call_processpap", GET_STAT(call_processpap));
|
||||
cli_print(cli, "%-30s%u", "call_processchap", GET_STAT(call_processchap));
|
||||
cli_print(cli, "%-30s%u", "call_processlcp", GET_STAT(call_processlcp));
|
||||
cli_print(cli, "%-30s%u", "call_processipcp", GET_STAT(call_processipcp));
|
||||
cli_print(cli, "%-30s%u", "call_processipin", GET_STAT(call_processipin));
|
||||
cli_print(cli, "%-30s%u", "call_processccp", GET_STAT(call_processccp));
|
||||
cli_print(cli, "%-30s%u", "call_processrad", GET_STAT(call_processrad));
|
||||
cli_print(cli, "%-30s%u", "call_sendarp", GET_STAT(call_sendarp));
|
||||
cli_print(cli, "%-30s%u", "call_sendipcp", GET_STAT(call_sendipcp));
|
||||
cli_print(cli, "%-30s%u", "call_sendchap", GET_STAT(call_sendchap));
|
||||
cli_print(cli, "%-30s%u", "call_sessionbyip", GET_STAT(call_sessionbyip));
|
||||
cli_print(cli, "%-30s%u", "call_sessionbyuser", GET_STAT(call_sessionbyuser));
|
||||
cli_print(cli, "%-30s%u", "call_tunnelsend", GET_STAT(call_tunnelsend));
|
||||
cli_print(cli, "%-30s%u", "call_tunnelkill", GET_STAT(call_tunnelkill));
|
||||
cli_print(cli, "%-30s%u", "call_tunnelshutdown", GET_STAT(call_tunnelshutdown));
|
||||
cli_print(cli, "%-30s%u", "call_sessionkill", GET_STAT(call_sessionkill));
|
||||
cli_print(cli, "%-30s%u", "call_sessionshutdown", GET_STAT(call_sessionshutdown));
|
||||
cli_print(cli, "%-30s%u", "call_sessionsetup", GET_STAT(call_sessionsetup));
|
||||
cli_print(cli, "%-30s%u", "call_assign_ip_address", GET_STAT(call_assign_ip_address));
|
||||
cli_print(cli, "%-30s%u", "call_free_ip_address", GET_STAT(call_free_ip_address));
|
||||
cli_print(cli, "%-30s%u", "call_dump_acct_info", GET_STAT(call_dump_acct_info));
|
||||
cli_print(cli, "%-30s%u", "call_radiussend", GET_STAT(call_radiussend));
|
||||
cli_print(cli, "%-30s%u", "call_radiusretry", GET_STAT(call_radiusretry));
|
||||
#endif
|
||||
return CLI_OK;
|
||||
}
|
||||
|
|
@ -754,7 +757,7 @@ static int cmd_show_version(struct cli_def *cli, char *command, char **argv, int
|
|||
p = "HEAD";
|
||||
|
||||
e = strpbrk(p, " \t$");
|
||||
cli_print(cli, "Tag: %.*s", e ? e - p + 1 : strlen(p), p);
|
||||
cli_print(cli, "Tag: %.*s", (int) (e ? e - p + 1 : strlen(p)), p);
|
||||
}
|
||||
|
||||
if (file)
|
||||
|
|
@ -837,7 +840,7 @@ static int cmd_show_pool(struct cli_def *cli, char *command, char **argv, int ar
|
|||
if (ip_address_pool[i].last)
|
||||
cli_print(cli, "%-15s\tN %8s [%s] %ds",
|
||||
fmtaddr(htonl(ip_address_pool[i].address), 0), "",
|
||||
ip_address_pool[i].user, time_now - ip_address_pool[i].last);
|
||||
ip_address_pool[i].user, (int) time_now - ip_address_pool[i].last);
|
||||
|
||||
else if (show_all)
|
||||
cli_print(cli, "%-15s\tN", fmtaddr(htonl(ip_address_pool[i].address), 0));
|
||||
|
|
@ -1892,7 +1895,7 @@ int regular_stuff(struct cli_def *cli)
|
|||
debug_levels[(int)ringbuffer->buffer[i].level],
|
||||
ringbuffer->buffer[i].tunnel,
|
||||
ringbuffer->buffer[i].session,
|
||||
p - m, m);
|
||||
(int) (p - m), m);
|
||||
|
||||
out++;
|
||||
}
|
||||
|
|
@ -2161,7 +2164,7 @@ static int cmd_show_bgp(struct cli_def *cli, char *command, char **argv, int arg
|
|||
"----------- ------- -------- ----- ---- ---------");
|
||||
}
|
||||
|
||||
cli_print(cli, "%-18.18s %5d %15s %-11s %7d %7ds %5s %4s %4d %4d",
|
||||
cli_print(cli, "%-18.18s %5d %15s %-11s %7d %7lds %5s %4s %4d %4d",
|
||||
bgp_peers[i].name,
|
||||
bgp_peers[i].as,
|
||||
addr,
|
||||
|
|
|
|||
19
cluster.c
19
cluster.c
|
|
@ -1,8 +1,12 @@
|
|||
// L2TPNS Clustering Stuff
|
||||
|
||||
char const *cvs_id_cluster = "$Id: cluster.c,v 1.25 2004/12/16 08:49:53 bodea Exp $";
|
||||
char const *cvs_id_cluster = "$Id: cluster.c,v 1.26 2004/12/16 23:40:31 bodea Exp $";
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
#include <unistd.h>
|
||||
#include <inttypes.h>
|
||||
#include <sys/file.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/socket.h>
|
||||
|
|
@ -13,12 +17,7 @@ char const *cvs_id_cluster = "$Id: cluster.c,v 1.25 2004/12/16 08:49:53 bodea Ex
|
|||
#include <string.h>
|
||||
#include <malloc.h>
|
||||
#include <errno.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <libcli.h>
|
||||
#include <inttypes.h>
|
||||
|
||||
#include "l2tpns.h"
|
||||
#include "cluster.h"
|
||||
|
|
@ -62,7 +61,7 @@ static struct {
|
|||
|
||||
static struct {
|
||||
in_addr_t peer;
|
||||
time_t basetime;
|
||||
uint32_t basetime;
|
||||
clockt timestamp;
|
||||
int uptodate;
|
||||
} peers[CLUSTER_MAX_SIZE]; // List of all the peers we've heard from.
|
||||
|
|
@ -1440,12 +1439,12 @@ int cmd_show_cluster(struct cli_def *cli, char *command, char **argv, int argc)
|
|||
: "Not defined",
|
||||
0.1 * (TIME - config->cluster_last_hb));
|
||||
cli_print(cli, "Uptodate : %s", config->cluster_iam_uptodate ? "Yes" : "No");
|
||||
cli_print(cli, "Table version # : %llu", config->cluster_table_version);
|
||||
cli_print(cli, "Table version # : %" PRIu64, config->cluster_table_version);
|
||||
cli_print(cli, "Next sequence number expected: %d", config->cluster_seq_number);
|
||||
cli_print(cli, "%d sessions undefined of %d", config->cluster_undefined_sessions, config->cluster_highest_sessionid);
|
||||
cli_print(cli, "%d tunnels undefined of %d", config->cluster_undefined_tunnels, config->cluster_highest_tunnelid);
|
||||
} else {
|
||||
cli_print(cli, "Table version # : %llu", config->cluster_table_version);
|
||||
cli_print(cli, "Table version # : %" PRIu64, config->cluster_table_version);
|
||||
cli_print(cli, "Next heartbeat # : %d", config->cluster_seq_number);
|
||||
cli_print(cli, "Highest session : %d", config->cluster_highest_sessionid);
|
||||
cli_print(cli, "Highest tunnel : %d", config->cluster_highest_tunnelid);
|
||||
|
|
@ -1456,7 +1455,7 @@ int cmd_show_cluster(struct cli_def *cli, char *command, char **argv, int argc)
|
|||
if (num_peers)
|
||||
cli_print(cli, "%20s %10s %8s", "Address", "Basetime", "Age");
|
||||
for (i = 0; i < num_peers; ++i) {
|
||||
cli_print(cli, "%20s %10d %8d", fmtaddr(peers[i].peer, 0),
|
||||
cli_print(cli, "%20s %10u %8d", fmtaddr(peers[i].peer, 0),
|
||||
peers[i].basetime, TIME - peers[i].timestamp);
|
||||
}
|
||||
return CLI_OK;
|
||||
|
|
|
|||
23
l2tpns.c
23
l2tpns.c
|
|
@ -4,7 +4,7 @@
|
|||
// Copyright (c) 2002 FireBrick (Andrews & Arnold Ltd / Watchfront Ltd) - GPL licenced
|
||||
// vim: sw=8 ts=8
|
||||
|
||||
char const *cvs_id_l2tpns = "$Id: l2tpns.c,v 1.71 2004/12/16 08:54:16 bodea Exp $";
|
||||
char const *cvs_id_l2tpns = "$Id: l2tpns.c,v 1.72 2004/12/16 23:40:31 bodea Exp $";
|
||||
|
||||
#include <arpa/inet.h>
|
||||
#include <assert.h>
|
||||
|
|
@ -2346,6 +2346,8 @@ static void mainloop(void)
|
|||
n = select(n + 1, &r, 0, 0, &to);
|
||||
#endif /* BGP */
|
||||
|
||||
STAT(select_called);
|
||||
|
||||
TIME = now();
|
||||
if (n < 0)
|
||||
{
|
||||
|
|
@ -2365,11 +2367,14 @@ static void mainloop(void)
|
|||
int tun_pkts = 0;
|
||||
int cluster_pkts = 0;
|
||||
|
||||
INC_STAT(select_ready, n);
|
||||
|
||||
// nsctl commands
|
||||
if (FD_ISSET(controlfd, &r))
|
||||
{
|
||||
alen = sizeof(addr);
|
||||
processcontrol(buf, recvfrom(controlfd, buf, sizeof(buf), MSG_WAITALL, (void *) &addr, &alen), &addr, alen);
|
||||
STAT(select_processed);
|
||||
n--;
|
||||
}
|
||||
|
||||
|
|
@ -2381,6 +2386,7 @@ static void mainloop(void)
|
|||
if (FD_ISSET(radfds[i], &r))
|
||||
{
|
||||
processrad(buf, recv(radfds[i], buf, sizeof(buf), 0), i);
|
||||
STAT(select_processed);
|
||||
n--;
|
||||
}
|
||||
}
|
||||
|
|
@ -2400,17 +2406,21 @@ static void mainloop(void)
|
|||
else
|
||||
LOG(0, 0, 0, "accept error: %s\n", strerror(errno));
|
||||
|
||||
STAT(select_processed);
|
||||
n--;
|
||||
}
|
||||
|
||||
#ifdef BGP
|
||||
for (i = 0; i < BGP_NUM_PEERS; i++)
|
||||
{
|
||||
int isr = bgp_set[i] ? FD_ISSET(bgp_peers[i].sock, &r) : 0;
|
||||
int isw = bgp_set[i] ? FD_ISSET(bgp_peers[i].sock, &w) : 0;
|
||||
int isr = bgp_set[i] ? !!FD_ISSET(bgp_peers[i].sock, &r) : 0;
|
||||
int isw = bgp_set[i] ? !!FD_ISSET(bgp_peers[i].sock, &w) : 0;
|
||||
bgp_process(&bgp_peers[i], isr, isw);
|
||||
if (isr) n--;
|
||||
if (isw) n--;
|
||||
if (isr || isw)
|
||||
{
|
||||
INC_STAT(select_processed, isr + isw);
|
||||
n -= (isr + isw);
|
||||
}
|
||||
}
|
||||
#endif /* BGP */
|
||||
|
||||
|
|
@ -2423,6 +2433,7 @@ static void mainloop(void)
|
|||
if ((s = recvfrom(udpfd, buf, sizeof(buf), 0, (void *) &addr, &alen)) > 0)
|
||||
{
|
||||
processudp(buf, s, &addr);
|
||||
STAT(select_processed);
|
||||
udp_pkts++;
|
||||
}
|
||||
else
|
||||
|
|
@ -2438,6 +2449,7 @@ static void mainloop(void)
|
|||
if ((s = read(tunfd, buf, sizeof(buf))) > 0)
|
||||
{
|
||||
processtun(buf, s);
|
||||
STAT(select_processed);
|
||||
tun_pkts++;
|
||||
}
|
||||
else
|
||||
|
|
@ -2454,6 +2466,7 @@ static void mainloop(void)
|
|||
if ((s = recvfrom(cluster_sockfd, buf, sizeof(buf), MSG_WAITALL, (void *) &addr, &alen)) > 0)
|
||||
{
|
||||
processcluster(buf, s, addr.sin_addr.s_addr);
|
||||
STAT(select_processed);
|
||||
cluster_pkts++;
|
||||
}
|
||||
else
|
||||
|
|
|
|||
119
l2tpns.h
119
l2tpns.h
|
|
@ -1,5 +1,5 @@
|
|||
// L2TPNS Global Stuff
|
||||
// $Id: l2tpns.h,v 1.47 2004/12/16 08:49:53 bodea Exp $
|
||||
// $Id: l2tpns.h,v 1.48 2004/12/16 23:40:31 bodea Exp $
|
||||
|
||||
#ifndef __L2TPNS_H__
|
||||
#define __L2TPNS_H__
|
||||
|
|
@ -307,71 +307,76 @@ enum
|
|||
|
||||
struct Tstats
|
||||
{
|
||||
time_t start_time;
|
||||
time_t last_reset;
|
||||
time_t start_time;
|
||||
time_t last_reset;
|
||||
|
||||
unsigned long tun_rx_packets;
|
||||
unsigned long tun_tx_packets;
|
||||
unsigned long tun_rx_bytes;
|
||||
unsigned long tun_tx_bytes;
|
||||
unsigned long tun_rx_errors;
|
||||
unsigned long tun_tx_errors;
|
||||
uint32_t tun_rx_packets;
|
||||
uint32_t tun_tx_packets;
|
||||
uint32_t tun_rx_bytes;
|
||||
uint32_t tun_tx_bytes;
|
||||
uint32_t tun_rx_errors;
|
||||
uint32_t tun_tx_errors;
|
||||
|
||||
unsigned long tunnel_rx_packets;
|
||||
unsigned long tunnel_tx_packets;
|
||||
unsigned long tunnel_rx_bytes;
|
||||
unsigned long tunnel_tx_bytes;
|
||||
unsigned long tunnel_rx_errors;
|
||||
unsigned long tunnel_tx_errors;
|
||||
uint32_t tunnel_rx_packets;
|
||||
uint32_t tunnel_tx_packets;
|
||||
uint32_t tunnel_rx_bytes;
|
||||
uint32_t tunnel_tx_bytes;
|
||||
uint32_t tunnel_rx_errors;
|
||||
uint32_t tunnel_tx_errors;
|
||||
|
||||
unsigned long tunnel_retries;
|
||||
unsigned long radius_retries;
|
||||
uint32_t tunnel_retries;
|
||||
uint32_t radius_retries;
|
||||
|
||||
unsigned long arp_sent;
|
||||
uint32_t arp_sent;
|
||||
|
||||
unsigned long packets_snooped;
|
||||
uint32_t packets_snooped;
|
||||
|
||||
unsigned long tunnel_created;
|
||||
unsigned long session_created;
|
||||
unsigned long tunnel_timeout;
|
||||
unsigned long session_timeout;
|
||||
unsigned long radius_timeout;
|
||||
unsigned long radius_overflow;
|
||||
unsigned long tunnel_overflow;
|
||||
unsigned long session_overflow;
|
||||
uint32_t tunnel_created;
|
||||
uint32_t session_created;
|
||||
uint32_t tunnel_timeout;
|
||||
uint32_t session_timeout;
|
||||
uint32_t radius_timeout;
|
||||
uint32_t radius_overflow;
|
||||
uint32_t tunnel_overflow;
|
||||
uint32_t session_overflow;
|
||||
|
||||
unsigned long ip_allocated;
|
||||
unsigned long ip_freed;
|
||||
uint32_t ip_allocated;
|
||||
uint32_t ip_freed;
|
||||
|
||||
uint32_t c_forwarded;
|
||||
uint32_t recv_forward;
|
||||
|
||||
uint32_t select_called; // number of times select called
|
||||
uint32_t select_ready; // number of fds returned by select
|
||||
uint32_t select_processed; // number of read/writes handled per select
|
||||
|
||||
unsigned long c_forwarded;
|
||||
unsigned long recv_forward;
|
||||
#ifdef STATISTICS
|
||||
unsigned long call_processtun;
|
||||
unsigned long call_processipout;
|
||||
unsigned long call_processudp;
|
||||
unsigned long call_sessionbyip;
|
||||
unsigned long call_sessionbyuser;
|
||||
unsigned long call_sendarp;
|
||||
unsigned long call_sendipcp;
|
||||
unsigned long call_tunnelsend;
|
||||
unsigned long call_sessionkill;
|
||||
unsigned long call_sessionshutdown;
|
||||
unsigned long call_tunnelkill;
|
||||
unsigned long call_tunnelshutdown;
|
||||
unsigned long call_assign_ip_address;
|
||||
unsigned long call_free_ip_address;
|
||||
unsigned long call_dump_acct_info;
|
||||
unsigned long call_sessionsetup;
|
||||
unsigned long call_processpap;
|
||||
unsigned long call_processchap;
|
||||
unsigned long call_processlcp;
|
||||
unsigned long call_processipcp;
|
||||
unsigned long call_processipin;
|
||||
unsigned long call_processccp;
|
||||
unsigned long call_sendchap;
|
||||
unsigned long call_processrad;
|
||||
unsigned long call_radiussend;
|
||||
unsigned long call_radiusretry;
|
||||
uint32_t call_processtun;
|
||||
uint32_t call_processipout;
|
||||
uint32_t call_processudp;
|
||||
uint32_t call_sessionbyip;
|
||||
uint32_t call_sessionbyuser;
|
||||
uint32_t call_sendarp;
|
||||
uint32_t call_sendipcp;
|
||||
uint32_t call_tunnelsend;
|
||||
uint32_t call_sessionkill;
|
||||
uint32_t call_sessionshutdown;
|
||||
uint32_t call_tunnelkill;
|
||||
uint32_t call_tunnelshutdown;
|
||||
uint32_t call_assign_ip_address;
|
||||
uint32_t call_free_ip_address;
|
||||
uint32_t call_dump_acct_info;
|
||||
uint32_t call_sessionsetup;
|
||||
uint32_t call_processpap;
|
||||
uint32_t call_processchap;
|
||||
uint32_t call_processlcp;
|
||||
uint32_t call_processipcp;
|
||||
uint32_t call_processipin;
|
||||
uint32_t call_processccp;
|
||||
uint32_t call_sendchap;
|
||||
uint32_t call_processrad;
|
||||
uint32_t call_radiussend;
|
||||
uint32_t call_radiusretry;
|
||||
#endif
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -43,5 +43,5 @@ rm -rf %{buildroot}
|
|||
%attr(644,root,root) /usr/share/man/man[58]/*
|
||||
|
||||
%changelog
|
||||
* Thu Dec 16 2004 Brendan O'Dea <bod@optusnet.com.au> 2.0.13-1
|
||||
* Fri Dec 17 2004 Brendan O'Dea <bod@optusnet.com.au> 2.0.13-1
|
||||
- 2.0.13 release, see /usr/share/doc/l2tpns-2.0.13/Changes
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue