--- sys/conf/options +++ sys/conf/options @@ -494,6 +494,8 @@ # # # +# For interconnect beetween kernels in claster +MYLOOP_MASKLEN opt_myloop_masklen.h # Netgraph(4). Use option NETGRAPH to enable the base netgraph code. # Each netgraph node type can be either be compiled into the kernel --- sys/netinet/in.c +++ sys/netinet/in.c @@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$"); #include "opt_mpath.h" +#include "opt_myloop_masklen.h" #include #include --- sys/netinet/in.h +++ sys/netinet/in.h @@ -372,8 +372,13 @@ #define IN_EXPERIMENTAL(i) (((in_addr_t)(i) & 0xf0000000) == 0xf0000000) #define IN_BADCLASS(i) (((in_addr_t)(i) & 0xf0000000) == 0xf0000000) +#ifndef MYLOOP_MASKLEN +# define MYLOOP_MASKLEN 8 +#endif + +#define INADDR_LOOPBACK (in_addr_t)0x7f000001 #define IN_LINKLOCAL(i) (((in_addr_t)(i) & 0xffff0000) == 0xa9fe0000) -#define IN_LOOPBACK(i) (((in_addr_t)(i) & 0xff000000) == 0x7f000000) +#define IN_LOOPBACK(i) ((((in_addr_t)(i) ^ INADDR_LOOPBACK) & (INADDR_BROADCAST << (32 - MYLOOP_MASKLEN))) == 0) #define IN_ZERONET(i) (((in_addr_t)(i) & 0xff000000) == 0) #define IN_PRIVATE(i) ((((in_addr_t)(i) & 0xff000000) == 0x0a000000) || \ @@ -384,7 +389,6 @@ #define IN_ANY_LOCAL(i) (IN_LINKLOCAL(i) || IN_LOCAL_GROUP(i)) -#define INADDR_LOOPBACK ((in_addr_t)0x7f000001) #ifndef _KERNEL #define INADDR_NONE ((in_addr_t)0xffffffff) /* -1 return */ #endif --- sys/netinet/ip_input.c +++ sys/netinet/ip_input.c @@ -38,6 +38,7 @@ #include "opt_ipstealth.h" #include "opt_ipsec.h" #include "opt_route.h" +#include "opt_myloop_masklen.h" #include "opt_rss.h" #include --- sys/netinet/ip_output.c +++ sys/netinet/ip_output.c @@ -40,6 +40,7 @@ #include "opt_mbuf_stress_test.h" #include "opt_mpath.h" #include "opt_route.h" +#include "opt_myloop_masklen.h" #include "opt_sctp.h" #include "opt_rss.h" --- sys/netinet/myloop_masklen.h +++ sys/netinet/myloop_masklen.h @@ -0,0 +1,7 @@ +#include "opt_myloop_masklen.h" + +#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