afscp was reporting its local address list in net-byte order, and then
giving that list as a response to RXAFSCB_WhoAreYou. Instead, convert
the addresses to host-byte order, since XDR takes care of endianness
foo.
Change-Id: I5d7d57f811ccaeada235e694ec5f343c1ac535b7
Reviewed-on: http://gerrit.openafs.org/2206
Tested-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
count = rx_getAllAddr((afs_uint32 *)&afs_cb_interface.addr_in, AFS_MAX_INTERFACE_ADDR);
if (count <= 0)
afs_cb_interface.numberOfInterfaces = 0;
- else
+ else {
+ int i;
afs_cb_interface.numberOfInterfaces = count;
+ for (i = 0; i < count; i++) {
+ /* these addresss will be marshalled in XDR, so they must be in
+ * host-byte order to make sense */
+ afs_cb_interface.addr_in[i] = ntohl(afs_cb_interface.addr_in[i]);
+ }
+ }
afs_cb_inited = 1;
return 0;
}