diff --git a/cli.c b/cli.c index 391a32f..869a385 100644 --- a/cli.c +++ b/cli.c @@ -454,6 +454,27 @@ static int cmd_show_session(struct cli_def *cli, const char *command, char **arg 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)); + for (r = 0; r < MAXROUTE && session[s].route[r].ip; r++) + { + cli_print(cli, "\tIP route:\t%s/%d", fmtaddr(htonl(session[s].route[r].ip), 0), session[s].route[r].prefixlen); + } + if (session[s].ipv6address.s6_addr[0]) + { + cli_print(cli, "\tIPv6 address:\t%s", fmtaddr6(&session[s].ipv6address, 0)); + } + else + { + in_addr_t addr_ipv4 = htonl(session[s].ip); + struct in6_addr addr; + memset(&addr, 0, sizeof(addr)); + memcpy(&addr, &config->ipv6_prefix, 8); + memcpy(&addr.s6_addr[8], &addr_ipv4, 4); + cli_print(cli, "\tIPv6 address:\t%s", fmtaddr6(&addr, 0)); + } + for (r = 0; r < MAXROUTE6 && session[s].route6[r].ipv6prefixlen; r++) + { + cli_print(cli, "\tIPv6 route:\t%s/%d", fmtaddr6(&session[s].route6[r].ipv6route, 0), session[s].route6[r].ipv6prefixlen); + } cli_print(cli, "\tUnique SID:\t%u", session[s].unique_id); 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);