]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
DARWIN: Fix processing using rx_ifaddr_* macros in afsi_SetServerIPRank()
authorAntoine Verheijen <antoine@ualberta.ca>
Wed, 1 Dec 2010 18:37:02 +0000 (11:37 -0700)
committerDerrick Brashear <shadow@dementia.org>
Mon, 6 Dec 2010 20:45:58 +0000 (12:45 -0800)
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.

Reviewed-on: http://gerrit.openafs.org/3401
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
(cherry picked from commit 8fa01c4d602fac6d5d81b119d0593f02087e4302)
Change-Id: If4a47f57a804a2492659d74a5e930f4a962f1748
Reviewed-on: http://gerrit.openafs.org/3451

src/afs/afs_server.c

index cf3db576f3fb06c898aaf8ffc1d0119c9ab87853..3f64e9cd1a2036db3342f14276c0ead2cc2289f6 100644 (file)
@@ -1245,7 +1245,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 {
@@ -1253,14 +1253,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 {