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 <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
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 {
}
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 {