CVSROOT:        /cvs
Module name:    src
Changes by:     m...@cvs.openbsd.org    2015/01/08 07:29:18

Modified files:
        sys/net        : if_ethersubr.c route.c route.h 
        sys/netinet    : if_ether.c 
        sys/netinet6   : nd6.c 

Log message:
Factorize various duplicated chunks of (old and horrible) code, checking
for the validity of a given outgoing route entry into a single function.

This change is inspired from FreeBSD r111767.  The function introduced
here, rt_checkgate(), should hopefully die in a near future.  Why should
it die?  Well, it is way too late to do such validity checks: if your
kernel can ends up in ether_output() with an invalid route, please do
not let it try to find a new one that might do the job.

Go read this function if you're wondering why you're getting messages
like:

"arpresolve: X.X.X.X: route without link local address"

Since this horrible logic has survived 20 years of copy & past and small
modifications for workarounds without a single clear commit message, let's
assume it is full of dragons and try to play safe.  This factorization is
not intended to change any behavior.

With much inputs from bluhm@, tested by weerd@ and florian@ on setups
with p2p IPv6 interfaces.

ok bluhm@, benno@, florian@

Reply via email to