aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Ahern <dsahern@gmail.com>2019-02-26 12:00:03 -0500
committerDavid S. Miller <davem@davemloft.net>2019-02-26 16:23:17 -0500
commite3818541b49fb88650ba339d33cc53e4095da5b3 (patch)
tree78867af29dc256b077676bd5a17d9db5c50f6e97
parentb6e9e5df4ecf100f6a10ab2ade8e46d47a4b9779 (diff)
ipv6: Return error for RTA_VIA attribute
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>
-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 ce15dc4ccbfa..b7a620023a52 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -4182,6 +4182,10 @@ static int rtm_to_fib6_config(struct sk_buff *skb, struct nlmsghdr *nlh,
4182 cfg->fc_gateway = nla_get_in6_addr(tb[RTA_GATEWAY]); 4182 cfg->fc_gateway = nla_get_in6_addr(tb[RTA_GATEWAY]);
4183 cfg->fc_flags |= RTF_GATEWAY; 4183 cfg->fc_flags |= RTF_GATEWAY;
4184 } 4184 }
4185 if (tb[RTA_VIA]) {
4186 NL_SET_ERR_MSG(extack, "IPv6 does not support RTA_VIA attribute");
4187 goto errout;
4188 }
4185 4189
4186 if (tb[RTA_DST]) { 4190 if (tb[RTA_DST]) {
4187 int plen = (rtm->rtm_dst_len + 7) >> 3; 4191 int plen = (rtm->rtm_dst_len + 7) >> 3;