From: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
To: Pierre Emeriaud <petrus.lt@gmail.com>,
netdev@vger.kernel.org, yoshfuji@linux-ipv6.org
Subject: Re: PROBLEM: Linux 3.9 more-specific ipv6 route ignored until next-hop is in neighbor cache
Date: Wed, 03 Jul 2013 22:21:19 +0400 [thread overview]
Message-ID: <51D46B9F.6050400@cogentembedded.com> (raw)
In-Reply-To: <20130703181546.GC12615@order.stressinduktion.org>
Hello.
On 07/03/2013 10:15 PM, Hannes Frederic Sowa wrote:
> I looked up the relevant RFCs and do think this is the proper fix. Could you
> give it a test?
> [PATCH net] ipv6: rt6_check_neigh should successfully verify neigh if no NUD information are available
> After the removal of rt->n we do not create a neighbour entry at route
> insertion time (rt6_bind_neighbour is gone). As long as no neighbour is
> created because of "useful traffic" we skip this routing entry because
> rt6_check_neigh cannot pick up a valid neighbour (neigh == NULL) and
> thus returns false.
> This change was introduced by commit
> 887c95cc1da53f66a5890fdeab13414613010097 ("ipv6: Complete neighbour
> entry removal from dst_entry.")
> To quote RFC4191:
> "If the host has no information about the router's reachability, then
> the host assumes the router is reachable."
> and also:
> "A host MUST NOT probe a router's reachability in the absence of useful
> traffic that the host would have sent to the router if it were reachable."
> So, just assume the router is reachable and let's rt6_probe do the
> rest. We don't need to create a neighbour on route insertion time.
> If we don't compile with CONFIG_IPV6_ROUTER_PREF (RFC4191 support)
> a neighbour is only valid if its nud_state is NUD_VALID. I did not find
> any references that we should probe the router on route insertion time
> via the other RFCs. So skip this route in that case.
> Reported-by: Pierre Emeriaud <petrus.lt@gmail.com>
> Cc: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
> Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
> ---
> net/ipv6/route.c | 4 ++++
> 1 file changed, 4 insertions(+)
> diff --git a/net/ipv6/route.c b/net/ipv6/route.c
> index ad0aa6b..450979d 100644
> --- a/net/ipv6/route.c
> +++ b/net/ipv6/route.c
> @@ -547,6 +547,10 @@ static inline bool rt6_check_neigh(struct rt6_info *rt)
> ret = true;
> #endif
> read_unlock(&neigh->lock);
> + } else {
> +#ifdef CONFIG_IPV6_ROUTER_PREF
How about:
} else if (IS_ENABLED(CONFIG_IPV6_ROUTER_PREF)) {
> + ret = true;
> +#endif
> }
WBR, Sergei
next prev parent reply other threads:[~2013-07-03 18:21 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-02 22:04 PROBLEM: Linux 3.9 more-specific ipv6 route ignored until next-hop is in neighbor cache Pierre Emeriaud
2013-07-03 5:00 ` Hannes Frederic Sowa
2013-07-03 18:15 ` Hannes Frederic Sowa
2013-07-03 18:21 ` Sergei Shtylyov [this message]
2013-07-03 18:45 ` Hannes Frederic Sowa
2013-07-04 0:51 ` David Miller
2013-07-04 5:20 ` Pierre Emeriaud
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=51D46B9F.6050400@cogentembedded.com \
--to=sergei.shtylyov@cogentembedded.com \
--cc=netdev@vger.kernel.org \
--cc=petrus.lt@gmail.com \
--cc=yoshfuji@linux-ipv6.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.