// vim: sw=8 ts=8
char const *cvs_name = "$Name: $";
-char const *cvs_id_cli = "$Id: cli.c,v 1.61 2005/06/04 15:42:35 bodea Exp $";
+char const *cvs_id_cli = "$Id: cli.c,v 1.64 2005/07/31 10:04:09 bodea Exp $";
#include <stdio.h>
#include <stdarg.h>
#include <libcli.h>
#include "l2tpns.h"
+#include "constants.h"
#include "util.h"
#include "cluster.h"
#include "tbf.h"
{
int require_auth = 1;
struct sockaddr_in addr;
- int l = sizeof(addr);
+ socklen_t l = sizeof(addr);
if (fork_and_close()) return;
- if (getpeername(sockfd, (struct sockaddr *)&addr, &l) == 0)
+ if (getpeername(sockfd, (struct sockaddr *) &addr, &l) == 0)
{
require_auth = addr.sin_addr.s_addr != inet_addr("127.0.0.1");
LOG(require_auth ? 3 : 4, 0, 0, "Accepted connection to CLI from %s\n",
cli_print(cli, "\tCalling Num:\t%s", session[s].calling);
cli_print(cli, "\tCalled Num:\t%s", session[s].called);
cli_print(cli, "\tTunnel ID:\t%d", session[s].tunnel);
+ cli_print(cli, "\tPPP Phase:\t%s", ppp_phase(session[s].ppp.phase));
+ switch (session[s].ppp.phase)
+ {
+ case Establish:
+ cli_print(cli, "\tLCP state:\t%s", ppp_state(session[s].ppp.lcp));
+ break;
+
+ case Authenticate:
+ case Network:
+ cli_print(cli, "\t IPCP state:\t%s", ppp_state(session[s].ppp.ipcp));
+ cli_print(cli, "\t IPV6CP state:\t%s", ppp_state(session[s].ppp.ipv6cp));
+ cli_print(cli, "\t CCP state:\t%s", ppp_state(session[s].ppp.ccp));
+ }
cli_print(cli, "\tIP address:\t%s", fmtaddr(htonl(session[s].ip), 0));
cli_print(cli, "\tUnique SID:\t%u", session[s].unique_id);
- cli_print(cli, "\tOpened:\t\t%u seconds", abs(time_now - session[s].opened));
- cli_print(cli, "\tIdle time:\t%u seconds", abs(time_now - session[s].last_packet));
+ cli_print(cli, "\tOpened:\t\t%u seconds", session[s].opened ? abs(time_now - session[s].opened) : 0);
+ cli_print(cli, "\tIdle time:\t%u seconds", session[s].last_packet ? abs(time_now - session[s].last_packet) : 0);
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%u/%u", session[s].cout, session[s].cin);
(session[i].snoop_ip && session[i].snoop_port) ? "Y" : "N",
(session[i].throttle_in || session[i].throttle_out) ? "Y" : "N",
(session[i].walled_garden) ? "Y" : "N",
- (session[i].flags & SF_IPV6CP_ACKED) ? "Y" : "N",
+ (session[i].ppp.ipv6cp == Opened) ? "Y" : "N",
abs(time_now - (unsigned long)session[i].opened),
(unsigned long)session[i].cout,
(unsigned long)session[i].cin,
cli_print(cli, " %s", cvs_id_icmp);
cli_print(cli, " %s", cvs_id_l2tpns);
cli_print(cli, " %s", cvs_id_ll);
- cli_print(cli, " %s", cvs_id_md5);
cli_print(cli, " %s", cvs_id_ppp);
cli_print(cli, " %s", cvs_id_radius);
cli_print(cli, " %s", cvs_id_tbf);
#endif /* BGP*/
static int filt;
-static int find_access_list(char const *name)
-{
- int i;
-
- for (i = 0; i < MAXFILTER; i++)
- if (!(*ip_filters[i].name && strcmp(ip_filters[i].name, name)))
- return i;
-
- return -1;
-}
-
static int access_list(struct cli_def *cli, char **argv, int argc, int add)
{
int extended;
return CLI_OK;
}
- filt = find_access_list(argv[1]);
+ filt = find_filter(argv[1], strlen(argv[1]));
if (add)
{
if (filt < 0)
return CLI_OK;
}
- v = find_access_list(argv[i+1]);
+ v = find_filter(argv[i+1], strlen(argv[i+1]));
if (v < 0 || !*ip_filters[v].name)
{
cli_error(cli, "Access-list %s not defined", argv[i+1]);
for (i = 0; i < argc; i++)
{
- int f = find_access_list(argv[i]);
+ int f = find_filter(argv[i], strlen(argv[i]));
ip_filter_rulet *rules;
if (f < 0 || !*ip_filters[f].name)