--- sys/netinet/in.c +++ sys/netinet/in.c @@ -34,6 +34,7 @@ #include #include "opt_inet.h" +#include "myloop_masklen.h" #define IN_HISTORICAL_NETS /* include class masks */ --- sys/netinet/in.h +++ sys/netinet/in.h @@ -382,12 +382,12 @@ #define IN_BADCLASS(i) (((in_addr_t)(i) & 0xf0000000) == 0xf0000000) #define IN_LINKLOCAL(i) (((in_addr_t)(i) & 0xffff0000) == 0xa9fe0000) +#define IN_LOOPBACK_MASK_DFLT (INADDR_BROADCAST << (32 - MYLOOP_MASKLEN)) #ifdef _KERNEL #define IN_LOOPBACK(i) \ (((in_addr_t)(i) & V_in_loopback_mask) == 0x7f000000) -#define IN_LOOPBACK_MASK_DFLT 0xff000000 #else -#define IN_LOOPBACK(i) (((in_addr_t)(i) & 0xff000000) == 0x7f000000) +#define IN_LOOPBACK(i) IN_MY_LOOP(i) #endif #define IN_ZERONET(i) (((in_addr_t)(i) & 0xff000000) == 0) --- sys/netinet/ip_input.c +++ sys/netinet/ip_input.c @@ -37,6 +37,7 @@ #include "opt_ipstealth.h" #include "opt_ipsec.h" #include "opt_route.h" +#include "myloop_masklen.h" #include "opt_rss.h" #include "opt_sctp.h" --- sys/netinet/ip_output.c +++ sys/netinet/ip_output.c @@ -38,6 +38,7 @@ #include "opt_mbuf_stress_test.h" #include "opt_ratelimit.h" #include "opt_route.h" +#include "myloop_masklen.h" #include "opt_rss.h" #include "opt_sctp.h" --- include/myloop_masklen.h +++ include/myloop_masklen.h @@ -0,0 +1,7 @@ +#define MYLOOP_MASKLEN 24 + +#ifndef MYLOOP_MASKLEN +#define IN_MY_LOOP(i) (((in_addr_t)(i) & IN_CLASSA_NET) == (IN_LOOPBACKNET << IN_CLASSA_NSHIFT)) +#else +#define IN_MY_LOOP(i) (((in_addr_t)(i) & (INADDR_BROADCAST << (32 - MYLOOP_MASKLEN))) == (IN_LOOPBACKNET << IN_CLASSA_NSHIFT)) +#endif --- sys/myloop_masklen.h +++ sys/myloop_masklen.h @@ -0,0 +1,7 @@ +#define MYLOOP_MASKLEN 24 + +#ifndef MYLOOP_MASKLEN +#define IN_MY_LOOP(i) (((in_addr_t)(i) & IN_CLASSA_NET) == 0x7F000000) +#else +#define IN_MY_LOOP(i) (((in_addr_t)(i) & IN_LOOPBACK_MASK_DFLT) == 0x7F000000) +#endif