From 8fa01c4d602fac6d5d81b119d0593f02087e4302 Mon Sep 17 00:00:00 2001 From: Antoine Verheijen Date: Wed, 1 Dec 2010 11:37:02 -0700 Subject: [PATCH 1/1] 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 --- src/afs/afs_server.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/afs/afs_server.c b/src/afs/afs_server.c index 66546df..086ab4d 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 { -- 1.9.4