summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Ahern <dsahern@gmail.com>2019-02-26 09:00:03 -0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-03-10 07:10:14 +0100
commit30b9819b9e08881e02ab9fd186f43b82d69f0fef (patch)
treec3d5e73c61d647115b79ff813c7c2219a635c6d4
parent07b619c5956c93147857216aa507dfc58ba90310 (diff)
downloadlinux-30b9819b9e08881e02ab9fd186f43b82d69f0fef.tar.gz
linux-30b9819b9e08881e02ab9fd186f43b82d69f0fef.tar.bz2
linux-30b9819b9e08881e02ab9fd186f43b82d69f0fef.zip
ipv6: Return error for RTA_VIA attribute
[ Upstream commit e3818541b49fb88650ba339d33cc53e4095da5b3 ] IPv6 currently does not support nexthops outside of the AF_INET6 family. Specifically, it does not handle RTA_VIA attribute. If it is passed in a route add request, the actual route added only uses the device which is clearly not what the user intended: $ ip -6 ro add 2001:db8:2::/64 via inet 172.16.1.1 dev eth0 $ ip ro ls ... 2001:db8:2::/64 dev eth0 metric 1024 pref medium Catch this and fail the route add: $ ip -6 ro add 2001:db8:2::/64 via inet 172.16.1.1 dev eth0 Error: IPv6 does not support RTA_VIA attribute. Fixes: 03c0566542f4c ("mpls: Netlink commands to add, remove, and dump routes") Signed-off-by: David Ahern <dsahern@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--net/ipv6/route.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index a68d447b6e2c..c87ce5732338 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -4163,6 +4163,10 @@ static int rtm_to_fib6_config(struct sk_buff *skb, struct nlmsghdr *nlh,
cfg->fc_gateway = nla_get_in6_addr(tb[RTA_GATEWAY]);
cfg->fc_flags |= RTF_GATEWAY;
}
+ if (tb[RTA_VIA]) {
+ NL_SET_ERR_MSG(extack, "IPv6 does not support RTA_VIA attribute");
+ goto errout;
+ }
if (tb[RTA_DST]) {
int plen = (rtm->rtm_dst_len + 7) >> 3;