X-Git-Url: http://git.sameswireless.fr/l2tpns.git/blobdiff_plain/5a24a99c3836f1447e42617e7d67cd750c64109d..90074c27df2dde2a99658829249ccea82925c243:/cli.c diff --git a/cli.c b/cli.c index d6fbb07..fd8034a 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.70 2005/12/06 00:00:31 bodea Exp $"; +char const *cvs_id_cli = "$Id: cli.c,v 1.73 2006/05/05 08:10:18 bodea Exp $"; #include #include @@ -36,6 +36,7 @@ char const *cvs_id_cli = "$Id: cli.c,v 1.70 2005/12/06 00:00:31 bodea Exp $"; #endif extern tunnelt *tunnel; +extern bundlet *bundle; extern sessiont *session; extern radiust *radius; extern ippoolt *ip_address_pool; @@ -101,7 +102,6 @@ static int cmd_remove_plugin(struct cli_def *cli, char *command, char **argv, in 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); @@ -269,7 +269,7 @@ void init_cli(char *hostname) } memset(&addr, 0, sizeof(addr)); - clifd = socket(PF_INET, SOCK_STREAM, 6); + clifd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); setsockopt(clifd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)); { int flags; @@ -427,6 +427,14 @@ static int cmd_show_session(struct cli_def *cli, char *command, char **argv, int 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, "\tBytes In/Out:\t%u/%u", session[s].cout, session[s].cin); + if (session[s].timeout) + { + cli_print(cli, "\tRemaing time:\t%u", + (session[s].bundle && bundle[session[s].bundle].num_of_links > 1) + ? (unsigned) (session[s].timeout - bundle[session[s].bundle].online_time) + : (unsigned) (session[s].timeout - (time_now - session[s].opened))); + } + 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, "\tRx Speed:\t%u", session[s].rx_connect_speed); @@ -493,7 +501,7 @@ static int cmd_show_session(struct cli_def *cli, char *command, char **argv, int } // Show Summary - cli_print(cli, "%5s %4s %-32s %-15s %s %s %s %s %10s %10s %10s %4s %-15s %s", + cli_print(cli, "%5s %4s %-32s %-15s %s %s %s %s %10s %10s %10s %4s %10s %-15s %s", "SID", "TID", "Username", @@ -506,13 +514,20 @@ static int cmd_show_session(struct cli_def *cli, char *command, char **argv, int "downloaded", "uploaded", "idle", + "Rem.Time", "LAC", "CLI"); for (i = 1; i < MAXSESSION; i++) { + uint32_t rem_time; if (!session[i].opened) continue; - cli_print(cli, "%5d %4d %-32s %-15s %s %s %s %s %10u %10lu %10lu %4u %-15s %s", + if (session[i].bundle && bundle[session[i].bundle].num_of_links > 1) + rem_time = session[i].timeout ? (session[i].timeout - bundle[session[i].bundle].online_time) : 0; + else + rem_time = session[i].timeout ? (session[i].timeout - (time_now-session[i].opened)) : 0; + + cli_print(cli, "%5d %4d %-32s %-15s %s %s %s %s %10u %10lu %10lu %4u %10lu %-15s %s", i, session[i].tunnel, session[i].user[0] ? session[i].user : "*", @@ -525,6 +540,7 @@ static int cmd_show_session(struct cli_def *cli, char *command, char **argv, int (unsigned long)session[i].cout, (unsigned long)session[i].cin, abs(time_now - (session[i].last_packet ? session[i].last_packet : time_now)), + (unsigned long)(rem_time), fmtaddr(htonl(tunnel[ session[i].tunnel ].ip), 1), session[i].calling[0] ? session[i].calling : "*"); }