From: Antoine Verheijen Date: Wed, 1 Dec 2010 18:37:02 +0000 (-0700) Subject: DARWIN: Fix processing using rx_ifaddr_* macros in afsi_SetServerIPRank() X-Git-Tag: upstream/1.8.0_pre1^2~4425 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=8fa01c4d602fac6d5d81b119d0593f02087e4302;p=packages%2Fo%2Fopenafs.git DARWIN: Fix processing using rx_ifaddr_* macros in afsi_SetServerIPRank() The macros rx_ifaddr_address, rx_ifaddr_netmask, and rx_ifaddr_dstaddress all expand to a call to memcpy() which returns the destination address as its return value. The test in the DARWIN version of afsi_SetServerIPRank() for completion when using this macro, however, seems to assume that success returns zero, which is wrong and results in myAddr, subnetmask, and myDstaddr always being set to zero. This patch corrects this behaviour. Change-Id: I66f5c790d8c55b359e3550b6d71f3abe040a2820 Reviewed-on: http://gerrit.openafs.org/3401 Reviewed-by: Derrick Brashear Tested-by: Derrick Brashear --- diff --git a/src/afs/afs_server.c b/src/afs/afs_server.c index 66546dfd0..086ab4d93 100644 --- a/src/afs/afs_server.c +++ b/src/afs/afs_server.c @@ -1253,7 +1253,7 @@ afsi_SetServerIPRank(struct srvAddr *sa, rx_ifaddr_t ifa) if (rx_ifaddr_address_family(ifa) != AF_INET) return; t = rx_ifaddr_address(ifa, &sout, sizeof(sout)); - if (t == 0) { + if (t != 0) { sin = (struct sockaddr_in *)&sout; myAddr = ntohl(sin->sin_addr.s_addr); /* one of my IP addr in host order */ } else { @@ -1261,14 +1261,14 @@ afsi_SetServerIPRank(struct srvAddr *sa, rx_ifaddr_t ifa) } serverAddr = ntohl(sa->sa_ip); /* server's IP addr in host order */ t = rx_ifaddr_netmask(ifa, &sout, sizeof(sout)); - if (t == 0) { + if (t != 0) { sin = (struct sockaddr_in *)&sout; subnetmask = ntohl(sin->sin_addr.s_addr); /* subnet mask in host order */ } else { subnetmask = 0; } t = rx_ifaddr_dstaddress(ifa, &sout, sizeof(sout)); - if (t == 0) { + if (t != 0) { sin = (struct sockaddr_in *)&sout; myDstaddr = sin->sin_addr.s_addr; } else {