Consolidate loopback address tests
authorAndrew Deason <adeason@sinenomine.net>
Thu, 8 Jul 2010 20:37:48 +0000 (15:37 -0500)
committerDerrick Brashear <shadow@dementia.org>
Mon, 12 Jul 2010 18:29:43 +0000 (11:29 -0700)
Many different places were testing if an address is a loopback
address. Consolidate these into one function to make it easier to
alter.

Change-Id: I9c4465f3bdc4e840c83d69456504caaac1c544e7
Reviewed-on: http://gerrit.openafs.org/2375
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>

src/afs/afs_server.c
src/libadmin/test/vos.c
src/rx/IRIX/rx_knet.c
src/rx/SOLARIS/rx_knet.c
src/rx/rx.h
src/rx/rx_getaddr.c
src/rx/rx_kcommon.c
src/rx/rx_user.c
src/util/netutils.c
src/volser/vos.c

index 32c2891..c00dd21 100644 (file)
@@ -1358,7 +1358,7 @@ afs_SetServerPrefs(struct srvAddr *sa)
 
 #ifdef notdef
        if (!s) {
-           if (afsifinfo[i].ipaddr != 0x7f000001) {    /* ignore loopback */
+           if (!rx_IsLoopbackAddr(afsifinfo[i].ipaddr)) {      /* ignore loopback */
                *cnt += 1;
                if (*cnt > 16)
                    return;
@@ -1421,7 +1421,7 @@ afs_SetServerPrefs(struct srvAddr *sa)
            net = ipif->ipif_local_addr & netmask;
 #ifdef notdef
            if (!s) {
-               if (ipif->ipif_local_addr != 0x7f000001) {      /* ignore loopback */
+               if (!rx_IsLoopbackAddr(ipif->ipif_local_addr)) {        /* ignore loopback */
                    *cnt += 1;
                    if (*cnt > 16)
                        return;
index 2c7db4c..533b58b 100644 (file)
@@ -1643,7 +1643,7 @@ GetServer(char *aname)
        memcpy(&addr, th->h_addr, sizeof(addr));
     }
 
-    if (addr == htonl(0x7f000001)) {   /* local host */
+    if (rx_IsLoopbackAddr(ntohl(addr))) {      /* local host */
        code = gethostname(hostname, MAXHOSTCHARS);
        if (code)
            return 0;
index c6a00c1..67d0a2e 100644 (file)
@@ -374,7 +374,7 @@ rxi_EnumGetIfInfo(struct hashbucket *h, caddr_t key, caddr_t arg1,
        *(int *)arg1 = different;
     }
     rxmtu = rxmtu * rxi_nRecvFrags + ((rxi_nRecvFrags - 1) * UDP_HDR_SIZE);
-    if ((ifinaddr != 0x7f000001) && (rxmtu > rx_maxReceiveSize)) {
+    if (!rx_IsLoopbackAddr(ifinaddr) && (rxmtu > rx_maxReceiveSize)) {
        rx_maxReceiveSize = MIN(RX_MAX_PACKET_SIZE, rxmtu);
        rx_maxReceiveSize = MIN(rx_maxReceiveSize, rx_maxReceiveSizeUser);
     }
index 22c85a6..97a153a 100644 (file)
@@ -123,7 +123,7 @@ rxi_GetIFInfo()
            maxmtu = rxi_AdjustMaxMTU(rxmtu, maxmtu);
            addrs[i] = ifinaddr;
 
-           if (ifinaddr != 0x7f000001 && maxmtu > rx_maxReceiveSize) {
+           if (!rx_IsLoopbackAddr(ifinaddr) && maxmtu > rx_maxReceiveSize) {
                rx_maxReceiveSize = MIN(RX_MAX_PACKET_SIZE, maxmtu);
                rx_maxReceiveSize =
                    MIN(rx_maxReceiveSize, rx_maxReceiveSizeUser);
@@ -184,7 +184,7 @@ rxi_GetIFInfo()
            addrs[i] = ifinaddr;
            i++;
 
-           if (ifinaddr != 0x7f000001 && maxmtu > rx_maxReceiveSize) {
+           if (!rx_IsLoopbackAddr(ifinaddr) && maxmtu > rx_maxReceiveSize) {
                rx_maxReceiveSize = MIN(RX_MAX_PACKET_SIZE, maxmtu);
                rx_maxReceiveSize =
                    MIN(rx_maxReceiveSize, rx_maxReceiveSizeUser);
index 990dc86..3e46218 100644 (file)
@@ -122,6 +122,12 @@ int ntoh_syserr_conv(int error);
 #define        rx_SecurityClassOf(conn)        ((conn)->securityIndex)
 #define rx_SecurityObjectOf(conn)      ((conn)->securityObject)
 
+static_inline int
+rx_IsLoopbackAddr(afs_uint32 addr)
+{
+    return (addr == 0x7f000001);
+}
+
 /*******************
  * Macros callable by the user to further define attributes of a
  * service.  Must be called before rx_StartServer
index 9a5104d..15a13c3 100644 (file)
@@ -240,7 +240,7 @@ rx_getAllAddr_internal(afs_uint32 buffer[], int maxSize, int loopbacks)
            if (count >= maxSize)       /* no more space */
                dpf(("Too many interfaces..ignoring 0x%x\n",
                       a->sin_addr.s_addr));
-           else if (!loopbacks && a->sin_addr.s_addr == htonl(0x7f000001)) {
+           else if (!loopbacks && rx_IsLoopbackAddr(ntohl(a->sin_addr.s_addr))) {
                addrcount--;
                continue;       /* skip loopback address as well. */
            } else if (loopbacks && ifm->ifm_flags & IFF_LOOPBACK) {
@@ -329,7 +329,7 @@ rx_getAllAddrMaskMtu(afs_uint32 addrBuffer[], afs_uint32 maskBuffer[],
            }
            a = (struct sockaddr_in *) info.rti_info[RTAX_IFA];
 
-           if (a->sin_addr.s_addr != htonl(0x7f000001) ) {
+           if (!rx_IsLoopbackAddr(ntohl(a->sin_addr.s_addr))) ) {
                if (count >= maxSize) { /* no more space */
                    dpf(("Too many interfaces..ignoring 0x%x\n",
                           a->sin_addr.s_addr));
@@ -430,7 +430,7 @@ rx_getAllAddr_internal(afs_uint32 buffer[], int maxSize, int loopbacks)
        }
        if (a->sin_addr.s_addr != 0) {
             if (!loopbacks) {
-                if (a->sin_addr.s_addr == htonl(0x7f000001)) 
+                if (rx_IsLoopbackAddr(ntohl(a->sin_addr.s_addr)))
                    continue;   /* skip loopback address as well. */
             } else {
                 if (ifr->ifr_flags & IFF_LOOPBACK) 
@@ -517,7 +517,7 @@ rx_getAllAddrMaskMtu(afs_uint32 addrBuffer[], afs_uint32 maskBuffer[],
                continue;       /* ignore this address */
            }
 
-            if (a->sin_addr.s_addr == htonl(0x7f000001) )
+            if (rx_IsLoopbackAddr(ntohl(a->sin_addr.s_addr)))
                 continue;   /* skip loopback address as well. */
 
            if (count >= maxSize) {     /* no more space */
index a88213f..f14cf27 100644 (file)
@@ -532,7 +532,7 @@ rxi_GetcbiInfo(void)
            rxmtu * rxi_nRecvFrags + ((rxi_nRecvFrags - 1) * UDP_HDR_SIZE);
        maxmtu = rxi_AdjustMaxMTU(rxmtu, maxmtu);
        addrs[i++] = ifinaddr;
-       if ((ifinaddr != 0x7f000001) && (maxmtu > rx_maxReceiveSize)) {
+       if (!rx_IsLoopbackAddr(ifinaddr) && (maxmtu > rx_maxReceiveSize)) {
            rx_maxReceiveSize = MIN(RX_MAX_PACKET_SIZE, maxmtu);
            rx_maxReceiveSize = MIN(rx_maxReceiveSize, rx_maxReceiveSizeUser);
        }
@@ -658,7 +658,7 @@ rxi_GetIFInfo(void)
                            ((rxi_nRecvFrags - 1) * UDP_HDR_SIZE);
                        maxmtu = rxi_AdjustMaxMTU(rxmtu, maxmtu);
                        addrs[i++] = ifinaddr;
-                       if ((ifinaddr != 0x7f000001) && 
+                       if (!rx_IsLoopbackAddr(ifinaddr) &&
                            (maxmtu > rx_maxReceiveSize)) {
                            rx_maxReceiveSize = 
                                MIN(RX_MAX_PACKET_SIZE, maxmtu);
@@ -711,7 +711,7 @@ rxi_GetIFInfo(void)
                    ((rxi_nRecvFrags - 1) * UDP_HDR_SIZE);
                maxmtu = rxi_AdjustMaxMTU(rxmtu, maxmtu);
                addrs[i++] = ifinaddr;
-               if ((ifinaddr != 0x7f000001) && (maxmtu > rx_maxReceiveSize)) {
+               if (!rx_IsLoopbackAddr(ifinaddr) && (maxmtu > rx_maxReceiveSize)) {
                    rx_maxReceiveSize = MIN(RX_MAX_PACKET_SIZE, maxmtu);
                    rx_maxReceiveSize =
                        MIN(rx_maxReceiveSize, rx_maxReceiveSizeUser);
index 9712120..b4b729d 100644 (file)
@@ -541,7 +541,7 @@ rx_GetIFInfo(void)
        if (a->sin_family != AF_INET)
            continue;
        rxi_NetAddrs[rxi_numNetAddrs] = ntohl(a->sin_addr.s_addr);
-       if (rxi_NetAddrs[rxi_numNetAddrs] == 0x7f000001) {
+       if (rx_IsLoopbackAddr(rxi_NetAddrs[rxi_numNetAddrs])) {
            /* we don't really care about "localhost" */
            continue;
        }
@@ -634,7 +634,7 @@ rx_GetIFInfo(void)
 #endif
        }
 
-       if (rxi_NetAddrs[rxi_numNetAddrs] != 0x7f000001) {      /* ignore lo0 */
+       if (!rx_IsLoopbackAddr(rxi_NetAddrs[rxi_numNetAddrs])) {        /* ignore lo0 */
            int maxsize;
            maxsize =
                rxi_nRecvFrags * (myNetMTUs[rxi_numNetAddrs] - RX_IP_SIZE);
index 03a90e3..14f2f17 100644 (file)
 #define MAX_NETFILE_LINE       2048    /* length of a line in the netrestrict file */
 #define MAXIPADDRS             1024    /* from afsd.c */
 
-#ifndef INADDR_LOOPBACK
-#define INADDR_LOOPBACK (afs_uint32)0x7f000001
-#endif
-
 int ParseNetInfoFile_int(afs_uint32 *, afs_uint32 *, afs_uint32 *,
                          int, char reason[], const char *,
                          int);
@@ -412,7 +408,7 @@ filterAddrs(afs_uint32 addr1[], afs_uint32 addr2[], afs_uint32 mask1[],
        }
 
        /* Always mask loopback address */
-       if (found && addr1[i] == INADDR_LOOPBACK) 
+       if (found && rx_IsLoopbackAddr(addr1[i]))
            found = 0;
 
        if (found) {
index 69b5244..bf55a1c 100644 (file)
@@ -236,7 +236,7 @@ GetServer(char *aname)
        memcpy(&addr, th->h_addr, sizeof(addr));
     }
 
-    if (addr == htonl(0x7f000001)) {   /* local host */
+    if (rx_IsLoopbackAddr(ntohl(addr))) {      /* local host */
        code = gethostname(hostname, MAXHOSTCHARS);
        if (code)
            return 0;