--- doc/configuration.txt | 4 ++-- src/dumpstats.c | 16 +++++++++++----- 2 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/doc/configuration.txt b/doc/configuration.txt index 538be58..00e83f1 100644 --- a/doc/configuration.txt +++ b/doc/configuration.txt @@ -9345,7 +9345,7 @@ clear table <table> [ data.<type> <operator> <value> ] | [ key <key> ] - gt : match entries whose data is greater than this value When the key form is used the entry <key> is removed. The key must be of the - same type as the table, which currently is limited to IPv4. + same type as the table, which currently is limited to IPv4 and IPv6. Example : $ echo "show table http_proxy" | socat stdio /tmp/sock1 @@ -9571,7 +9571,7 @@ show table <name> [ data.<type> <operator> <value> ] | [ key <key> ] When the key form is used the entry <key> is shown. The key must be of the - same type as the table, which currently is limited to IPv4. + same type as the table, which currently is limited to IPv4 and IPv6. Example : $ echo "show table http_proxy" | socat stdio /tmp/sock1 diff --git a/src/dumpstats.c b/src/dumpstats.c index 8cd82ad..0d5396c 100644 --- a/src/dumpstats.c +++ b/src/dumpstats.c @@ -511,6 +511,7 @@ static void stats_sock_table_key_request(struct stream_interface *si, char **arg struct proxy *px = si->applet.ctx.table.target; struct stksess *ts; unsigned int ip_key; + unsigned char ip6_key[sizeof(struct in6_addr)]; si->applet.st0 = STAT_CLI_OUTPUT; @@ -520,15 +521,20 @@ static void stats_sock_table_key_request(struct stream_interface *si, char **arg return; } - if (px->table.type == STKTABLE_TYPE_IP) { + switch (px->table.type) { + case STKTABLE_TYPE_IP: ip_key = htonl(inetaddr_host(args[4])); static_table_key.key = (void *)&ip_key; - } - else { + break; + case STKTABLE_TYPE_IPV6: + inet_pton(AF_INET6, args[4], ip6_key); + static_table_key.key = &ip6_key; + break; + default: if (show) - si->applet.ctx.cli.msg = "Showing keys from non-ip tables is not supported\n"; + si->applet.ctx.cli.msg = "Showing keys from tables of type other than ip and ipv6 is not supported\n"; else - si->applet.ctx.cli.msg = "Removing keys from non-ip tables is not supported\n"; + si->applet.ctx.cli.msg = "Removing keys from ip tables of type other than ip and ipv6 is not supported\n"; si->applet.st0 = STAT_CLI_PRINT; return; } -- 1.7.4.4