Skip to content

Commit

Permalink
ipv6: Reject routes configurations that specify dsfield (tos)
Browse files Browse the repository at this point in the history
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: Toke Høiland-Jørgensen <toke@redhat.com>
Signed-off-by: Guillaume Nault <gnault@redhat.com>
Reviewed-by: David Ahern <dsahern@kernel.org>
Reviewed-by: Shuah Khan <skhan@linuxfoundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Guillaume Nault authored and David S. Miller committed Feb 11, 2022
1 parent 12a8f37 commit b960516
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 0 deletions.
6 changes: 6 additions & 0 deletions net/ipv6/route.c
Original file line number Diff line number Diff line change
Expand Up @@ -5009,6 +5009,12 @@ static int rtm_to_fib6_config(struct sk_buff *skb, struct nlmsghdr *nlh,
err = -EINVAL;
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){
.fc_table = rtm->rtm_table,
.fc_dst_len = rtm->rtm_dst_len,
Expand Down
13 changes: 13 additions & 0 deletions tools/testing/selftests/net/fib_tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -988,12 +988,25 @@ ipv6_rt_replace()
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()
{
route_setup

ipv6_rt_add
ipv6_rt_replace
ipv6_rt_dsfield

route_cleanup
}
Expand Down

0 comments on commit b960516

Please sign in to comment.