Nikola Forró <nfo...@redhat.com> wrote: > Man page of ip-route(8) says following about route types: > > unreachable - these destinations are unreachable. Packets are dis‐ > carded and the ICMP message host unreachable is generated. The local > senders get an EHOSTUNREACH error. > > blackhole - these destinations are unreachable. Packets are dis‐ > carded silently. The local senders get an EINVAL error. > > prohibit - these destinations are unreachable. Packets are discarded > and the ICMP message communication administratively prohibited is > generated. The local senders get an EACCES error. > > In the inet6 address family, this was correct, except the local senders > got ENETUNREACH error instead of EHOSTUNREACH in case of unreachable route. > In the inet address family, all three route types generated ICMP message > net unreachable, and the local senders got ENETUNREACH error. > > In both address families all three route types now behave consistently > with documentation. > > Signed-off-by: Nikola Forró <nfo...@redhat.com> > --- > include/net/ip_fib.h | 21 ++++++++++++++++----- > net/ipv4/route.c | 6 ++++-- > net/ipv6/route.c | 4 +++- > 3 files changed, 23 insertions(+), 8 deletions(-) > > diff --git a/include/net/ip_fib.h b/include/net/ip_fib.h > index 5fa643b..cf025107 100644 > --- a/include/net/ip_fib.h > +++ b/include/net/ip_fib.h > @@ -233,8 +233,10 @@ static inline int fib_lookup(struct net *net, const > struct flowi4 *flp, > rcu_read_lock(); > > tb = fib_get_table(net, RT_TABLE_MAIN); > - if (tb && !fib_table_lookup(tb, flp, res, flags | FIB_LOOKUP_NOREF)) > - err = 0; > + if (tb) > + err = fib_table_lookup(tb, flp, res, flags | FIB_LOOKUP_NOREF); > + if (err == -EAGAIN) > + err = -ENETUNREACH;
Missing { } ? -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html