---
 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


Reply via email to