[MINOR] Allow showing and clearing by key of ipv6 stick tables
diff --git a/doc/configuration.txt b/doc/configuration.txt
index 9bf9900..a946e75 100644
--- a/doc/configuration.txt
+++ b/doc/configuration.txt
@@ -9336,7 +9336,7 @@
- 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
@@ -9562,7 +9562,7 @@
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 @@
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 @@
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;
}