]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: stktable/cli: support v6tov4 and v4tov6 conversions
authorAurelien DARRAGON <adarragon@haproxy.com>
Wed, 8 Nov 2023 10:35:05 +0000 (11:35 +0100)
committerChristopher Faulet <cfaulet@haproxy.com>
Wed, 8 Nov 2023 15:38:06 +0000 (16:38 +0100)
Add a special treatment for the IPV4 and IPV6 cases in
table_process_entry_per_key() function so that input string is parsed
in best effort (STR to pseudo type ADDR): input format is first considered
over table type and then let smp_to_stkey() do the type conversion for us
when needed.

This patch heavily depends on:
- "MEDIUM: stktable/cli: simplify entry key handling"

And optionally depends on:
72514a44 ("MEDIUM: tools/ip: v4tov6() and v6tov4() rework")

src/stick_table.c

index 825c22cee38ce3a0f85b6a4164a4a100644461cb..b97114c3040a26a0d5fb712bb8720cb2fec7a171 100644 (file)
@@ -4908,6 +4908,13 @@ static int table_process_entry_per_key(struct appctx *appctx, char **args)
        switch (t->type) {
        case SMP_T_IPV4:
        case SMP_T_IPV6:
+               /* prefer input format over table type when parsing ip addresses,
+                * then let smp_to_stkey() do the conversion for us when needed
+                */
+               BUG_ON(!sample_casts[key.data.type][SMP_T_ADDR]);
+               if (!sample_casts[key.data.type][SMP_T_ADDR](&key))
+                       return cli_err(appctx, "Invalid key\n");
+               break;
        case SMP_T_SINT:
        case SMP_T_STR:
                break;