Use rtisivalid(9) to check if the given (cached) route can be used.
authormpi <mpi@openbsd.org>
Tue, 13 Oct 2015 10:16:17 +0000 (10:16 +0000)
committermpi <mpi@openbsd.org>
Tue, 13 Oct 2015 10:16:17 +0000 (10:16 +0000)
commita7fe36b40b19de7766981ad47d69f44c8eb1466d
tree4dd4c147195b8f10a03d75e684a645f8d96f53d7
parent1a08736a8d922a124ad45d1e9f928525907acc8b
Use rtisivalid(9) to check if the given (cached) route can be used.

Note that after calling rtalloc(9) we only check if a route has been
returned or not and do not check for its validity.  This cannot be
improved without a massive refactoring.

The kernel currently *do* use !RTF_UP route due to a mismatch between
the value of ifp->if_link_state and the IFF_UP|IFF_RUNNING code.

I'd explain the RTF_UP flag as follow:

.  If a cached route entry w/o RTF_UP is passed to ip{6,}_output(),
.  call rtalloc(9) to see if a better entry is present in the tree.

This is enough to support MPATH and route cache invalidation.

ok bluhm@
sys/netinet/ip_output.c
sys/netinet6/in6_src.c