ipv6: fix handling of blackhole and prohibit routes
authorNicolas Dichtel <nicolas.dichtel@6wind.com>
Wed, 5 Sep 2012 02:12:42 +0000 (02:12 +0000)
committerZefan Li <lizefan@huawei.com>
Wed, 26 Oct 2016 15:15:43 +0000 (23:15 +0800)
commitaf706acbb5dbf492ad19fb448c2f05db8595f78e
tree4bc5b6abd82e79329c1d5af431f2df5d71b8b077
parenta4ea6252cc4b05d002ea465ef17bd8dcdd83b6bf
ipv6: fix handling of blackhole and prohibit routes

commit ef2c7d7b59708d54213c7556a82d14de9a7e4475 upstream.

When adding a blackhole or a prohibit route, they were handling like classic
routes. Moreover, it was only possible to add this kind of routes by specifying
an interface.

Bug already reported here:
  http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=498498

Before the patch:
  $ ip route add blackhole 2001::1/128
  RTNETLINK answers: No such device
  $ ip route add blackhole 2001::1/128 dev eth0
  $ ip -6 route | grep 2001
  2001::1 dev eth0  metric 1024

After:
  $ ip route add blackhole 2001::1/128
  $ ip -6 route | grep 2001
  blackhole 2001::1 dev lo  metric 1024  error -22

v2: wrong patch
v3: add a field fc_type in struct fib6_config to store RTN_* type

Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Zefan Li <lizefan@huawei.com>
include/net/ip6_fib.h
net/ipv6/route.c