X-Git-Url: http://git.sameswireless.fr/l2tpns.git/blobdiff_plain/b830a899ca4587707123482c5dbb8c14edb8fd9c..bdc2baa573df926eb1b0034d11a53622385a4241:/cli.c?ds=sidebyside

diff --git a/cli.c b/cli.c
index e6eb2c5..6258bc3 100644
--- a/cli.c
+++ b/cli.c
@@ -2,7 +2,7 @@
 // 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.65 2005-08-10 07:53:56 bodea Exp $";
 
 #include <stdio.h>
 #include <stdarg.h>
@@ -25,6 +25,7 @@ char const *cvs_id_cli = "$Id: cli.c,v 1.61 2005-06-04 15:42:35 bodea Exp $";
 #include <libcli.h>
 
 #include "l2tpns.h"
+#include "constants.h"
 #include "util.h"
 #include "cluster.h"
 #include "tbf.h"
@@ -289,10 +290,10 @@ void cli_do(int sockfd)
 {
 	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",
@@ -407,10 +408,23 @@ static int cmd_show_session(struct cli_def *cli, char *command, char **argv, int
 			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, "\t LCP 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);
@@ -507,7 +521,7 @@ static int cmd_show_session(struct cli_def *cli, char *command, char **argv, int
 				(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,
@@ -816,7 +830,6 @@ static int cmd_show_version(struct cli_def *cli, char *command, char **argv, int
 		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);
@@ -2316,17 +2329,6 @@ static int cmd_restart_bgp(struct cli_def *cli, char *command, char **argv, int
 #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;
@@ -2377,7 +2379,7 @@ static int access_list(struct cli_def *cli, char **argv, int argc, int add)
 		return CLI_OK;
 	}
 
-	filt = find_access_list(argv[1]);
+	filt = find_filter(argv[1], strlen(argv[1]));
 	if (add)
 	{
 		if (filt < 0)
@@ -2970,7 +2972,7 @@ static int cmd_filter(struct cli_def *cli, char *command, char **argv, int argc)
 			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]);
@@ -3046,7 +3048,7 @@ static int cmd_show_access_list(struct cli_def *cli, char *command, char **argv,
 
 	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)