--- crypto/heimdal/lib/krb5/addr_families.c +++ crypto/heimdal/lib/krb5/addr_families.c @@ -32,6 +32,7 @@ */ +#include #include "krb5_locl.h" struct addr_operations { int af; @@ -142,7 +143,7 @@ { const struct sockaddr_in *sin4 = (const struct sockaddr_in *)sa; - if ((ntohl(sin4->sin_addr.s_addr) >> 24) == IN_LOOPBACKNET) + if (IN_MY_LOOP(ntohl(sin4->sin_addr.s_addr))) return TRUE; return FALSE; --- crypto/heimdal/lib/ipc/myloop_masklen.h +++ crypto/heimdal/lib/ipc/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