add counters for select_called, select_ready and select_processed

fix cli_print format strings
This commit is contained in:
bodea 2004-12-16 23:40:30 +00:00
parent 9504bc0efb
commit 4d7d7850b5
6 changed files with 153 additions and 132 deletions

View file

@ -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
View file

@ -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,

View file

@ -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;

View file

@ -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

115
l2tpns.h
View file

@ -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__
@ -310,68 +310,73 @@ struct Tstats
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
};

View file

@ -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