Commit f0df4081 authored by Paolo Abeni's avatar Paolo Abeni Committed by Stephen Hemminger

lwtunnel: fix argument parsing

Currently parse_encap_ip() does not update correctly argv/argc;
if multiple lwtunnel arguments are provided, the parsing fails after
the first one, i.e.

 ip route add 172.16.101.0/24 dev vxlan1 encap ip id 42 dst 192.168.255.1

fails with:

 Error: either "to" is duplicate, or "dst" is a garbage.

This commit addresses the issue, stepping to next argument at each iteration
of the parsing loop.

Fixes: 1e529305 ("lwtunnel: Add encapsulation support to ip route")
Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent ed6b8652
...@@ -201,10 +201,14 @@ static int parse_encap_ip(struct rtattr *rta, size_t len, int *argcp, char ***ar ...@@ -201,10 +201,14 @@ static int parse_encap_ip(struct rtattr *rta, size_t len, int *argcp, char ***ar
} else { } else {
break; break;
} }
argc--; argv++;
} }
*argcp = argc; /* argv is currently the first unparsed argument,
*argvp = argv; * but the lwt_parse_encap() caller will move to the next,
* so step back */
*argcp = argc + 1;
*argvp = argv - 1;
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment