]> git.ipfire.org Git - thirdparty/iptables.git/commitdiff
extensions: Fix ipvs vproto parsing
authorPhil Sutter <phil@nwl.cc>
Thu, 21 Feb 2019 19:09:30 +0000 (20:09 +0100)
committerFlorian Westphal <fw@strlen.de>
Fri, 22 Feb 2019 16:00:44 +0000 (17:00 +0100)
This was broken by integration into guided option parser:

* Make 'vproto' option XTTYPE_PROTOCOL, otherwise its arguments are
  parsed as garbage only.

* Drop O_VPROTO case from ipvs_mt_parse(), due to XTOPT_POINTER() and
  above change there is nothing to do for it in there.

Fixes: 372203af4c70f ("libxt_ipvs: use guided option parser")
Signed-off-by: Phil Sutter <phil@nwl.cc>
Signed-off-by: Florian Westphal <fw@strlen.de>
extensions/libxt_ipvs.c

index a6c57a030d2c643b8898eaa58adea238d599ca26..fe98fef951686eaca6c0df59351eec6bb124aedf 100644 (file)
@@ -27,7 +27,7 @@ enum {
 static const struct xt_option_entry ipvs_mt_opts[] = {
        {.name = "ipvs", .id = O_IPVS, .type = XTTYPE_NONE,
         .flags = XTOPT_INVERT},
-       {.name = "vproto", .id = O_VPROTO, .type = XTTYPE_STRING,
+       {.name = "vproto", .id = O_VPROTO, .type = XTTYPE_PROTOCOL,
         .flags = XTOPT_INVERT | XTOPT_PUT, XTOPT_POINTER(s, l4proto)},
        {.name = "vaddr", .id = O_VADDR, .type = XTTYPE_HOSTMASK,
         .flags = XTOPT_INVERT},
@@ -69,9 +69,6 @@ static void ipvs_mt_parse(struct xt_option_call *cb)
 
        xtables_option_parse(cb);
        switch (cb->entry->id) {
-       case O_VPROTO:
-               data->l4proto = cb->val.protocol;
-               break;
        case O_VADDR:
                memcpy(&data->vaddr, &cb->val.haddr, sizeof(cb->val.haddr));
                memcpy(&data->vmask, &cb->val.hmask, sizeof(cb->val.hmask));