ipv6: router reachability probing
authorJiri Benc <jbenc@redhat.com>
Wed, 11 Dec 2013 12:48:20 +0000 (13:48 +0100)
committerDavid S. Miller <davem@davemloft.net>
Wed, 11 Dec 2013 21:02:58 +0000 (16:02 -0500)
commit7e9805696428113e34625a65a30dbc62cb78acc5
tree3d5c13ae988049a6b4e53ff586826ee7779627a6
parente47726683803616c773bc75c88cfb3eb54a8172b
ipv6: router reachability probing

RFC 4191 states in 3.5:

   When a host avoids using any non-reachable router X and instead sends
   a data packet to another router Y, and the host would have used
   router X if router X were reachable, then the host SHOULD probe each
   such router X's reachability by sending a single Neighbor
   Solicitation to that router's address.  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.  In any case,
   these probes MUST be rate-limited to no more than one per minute per
   router.

Currently, when the neighbour corresponding to a router falls into
NUD_FAILED, it's never considered again. Introduce a new rt6_nud_state
value, RT6_NUD_FAIL_PROBE, which suggests the route should not be used but
should be probed with a single NS. The probe is ratelimited by the existing
code. To better distinguish meanings of the failure values, rename
RT6_NUD_FAIL_SOFT to RT6_NUD_FAIL_DO_RR.

Signed-off-by: Jiri Benc <jbenc@redhat.com>
Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/neighbour.h
net/core/neighbour.c
net/ipv6/route.c