--- sbin/routed/if.c +++ sbin/routed/if.c @@ -30,6 +30,8 @@ */ #include +#define MYLOOP_MASKLEN 24 +#define IN_MY_LOOP(i) (((in_addr_t)(i) & (0xFFFFFFFF << (32 - MYLOOP_MASKLEN))) == (127 << 24)) #include "defs.h" #include "pathnames.h" @@ -356,6 +356,7 @@ int /* 0=bad */ check_dst(naddr addr) { + if (IN_MY_LOOP(addr)) return 0; addr = ntohl(addr); if (IN_CLASSA(addr)) { @@ -363,7 +364,7 @@ return 1; /* default */ addr >>= IN_CLASSA_NSHIFT; - return (addr != 0 && addr != IN_LOOPBACKNET); + return (addr != 0); } return (IN_CLASSB(addr) || IN_CLASSC(addr));