From: David Ahern Date: Fri, 21 Sep 2018 00:50:55 +0000 (-0700) Subject: Merge branch 'iproute2-master' into iproute2-next X-Git-Tag: v4.20.0~110 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=34212c73b7758637fffb58d09367eb9d5e735a12;p=thirdparty%2Fiproute2.git Merge branch 'iproute2-master' into iproute2-next Conflicts: ip/iproute_lwtunnel.c In addition to merge conflict between bd59e5b1517b and 94a8722f2f78, updated the code added by the latter commit based on the change of the former (ie., added ret = to the new rta_addattr_l). Signed-off-by: David Ahern --- 34212c73b7758637fffb58d09367eb9d5e735a12 diff --cc ip/iproute_lwtunnel.c index 14fdd8ed0,969a4763d..5ee37f715 --- a/ip/iproute_lwtunnel.c +++ b/ip/iproute_lwtunnel.c @@@ -765,9 -772,10 +772,10 @@@ static int parse_encap_mpls(struct rtat static int parse_encap_ip(struct rtattr *rta, size_t len, int *argcp, char ***argvp) { - int id_ok = 0, dst_ok = 0, tos_ok = 0, ttl_ok = 0; + int id_ok = 0, dst_ok = 0, src_ok = 0, tos_ok = 0, ttl_ok = 0; char **argv = *argvp; int argc = *argcp; + int ret = 0; while (argc > 0) { if (strcmp(*argv, "id") == 0) { @@@ -786,17 -794,8 +794,17 @@@ if (dst_ok++) duparg2("dst", *argv); get_addr(&addr, *argv, AF_INET); - rta_addattr_l(rta, len, LWTUNNEL_IP_DST, - &addr.data, addr.bytelen); + ret = rta_addattr_l(rta, len, LWTUNNEL_IP_DST, + &addr.data, addr.bytelen); + } else if (strcmp(*argv, "src") == 0) { + inet_prefix addr; + + NEXT_ARG(); + if (src_ok++) + duparg2("src", *argv); + get_addr(&addr, *argv, AF_INET); - rta_addattr_l(rta, len, LWTUNNEL_IP_SRC, - &addr.data, addr.bytelen); ++ ret = rta_addattr_l(rta, len, LWTUNNEL_IP_SRC, ++ &addr.data, addr.bytelen); } else if (strcmp(*argv, "tos") == 0) { __u32 tos; @@@ -908,9 -913,10 +922,10 @@@ static int parse_encap_ila(struct rtatt static int parse_encap_ip6(struct rtattr *rta, size_t len, int *argcp, char ***argvp) { - int id_ok = 0, dst_ok = 0, tos_ok = 0, ttl_ok = 0; + int id_ok = 0, dst_ok = 0, src_ok = 0, tos_ok = 0, ttl_ok = 0; char **argv = *argvp; int argc = *argcp; + int ret = 0; while (argc > 0) { if (strcmp(*argv, "id") == 0) { @@@ -929,17 -935,8 +944,17 @@@ if (dst_ok++) duparg2("dst", *argv); get_addr(&addr, *argv, AF_INET6); - rta_addattr_l(rta, len, LWTUNNEL_IP6_DST, - &addr.data, addr.bytelen); + ret = rta_addattr_l(rta, len, LWTUNNEL_IP6_DST, + &addr.data, addr.bytelen); + } else if (strcmp(*argv, "src") == 0) { + inet_prefix addr; + + NEXT_ARG(); + if (src_ok++) + duparg2("src", *argv); + get_addr(&addr, *argv, AF_INET6); - rta_addattr_l(rta, len, LWTUNNEL_IP6_SRC, - &addr.data, addr.bytelen); ++ ret = rta_addattr_l(rta, len, LWTUNNEL_IP6_SRC, ++ &addr.data, addr.bytelen); } else if (strcmp(*argv, "tc") == 0) { __u32 tc;