Commit b9605161 authored by Guillaume Nault's avatar Guillaume Nault Committed by David S. Miller

ipv6: Reject routes configurations that specify dsfield (tos)

The ->rtm_tos option is normally used to route packets based on both
the destination address and the DS field. However it's ignored for
IPv6 routes. Setting ->rtm_tos for IPv6 is thus invalid as the route
is going to work only on the destination address anyway, so it won't
behave as specified.
Suggested-by: default avatarToke Høiland-Jørgensen <toke@redhat.com>
Signed-off-by: default avatarGuillaume Nault <gnault@redhat.com>
Reviewed-by: default avatarDavid Ahern <dsahern@kernel.org>
Reviewed-by: default avatarShuah Khan <skhan@linuxfoundation.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 12a8f37f
...@@ -5009,6 +5009,12 @@ static int rtm_to_fib6_config(struct sk_buff *skb, struct nlmsghdr *nlh, ...@@ -5009,6 +5009,12 @@ static int rtm_to_fib6_config(struct sk_buff *skb, struct nlmsghdr *nlh,
err = -EINVAL; err = -EINVAL;
rtm = nlmsg_data(nlh); rtm = nlmsg_data(nlh);
if (rtm->rtm_tos) {
NL_SET_ERR_MSG(extack,
"Invalid dsfield (tos): option not available for IPv6");
goto errout;
}
*cfg = (struct fib6_config){ *cfg = (struct fib6_config){
.fc_table = rtm->rtm_table, .fc_table = rtm->rtm_table,
.fc_dst_len = rtm->rtm_dst_len, .fc_dst_len = rtm->rtm_dst_len,
......
...@@ -988,12 +988,25 @@ ipv6_rt_replace() ...@@ -988,12 +988,25 @@ ipv6_rt_replace()
ipv6_rt_replace_mpath ipv6_rt_replace_mpath
} }
ipv6_rt_dsfield()
{
echo
echo "IPv6 route with dsfield tests"
run_cmd "$IP -6 route flush 2001:db8:102::/64"
# IPv6 doesn't support routing based on dsfield
run_cmd "$IP -6 route add 2001:db8:102::/64 dsfield 0x04 via 2001:db8:101::2"
log_test $? 2 "Reject route with dsfield"
}
ipv6_route_test() ipv6_route_test()
{ {
route_setup route_setup
ipv6_rt_add ipv6_rt_add
ipv6_rt_replace ipv6_rt_replace
ipv6_rt_dsfield
route_cleanup route_cleanup
} }
......
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