afscp: Correctly advertise local addresses
authorAndrew Deason <adeason@sinenomine.net>
Tue, 15 Jun 2010 17:33:48 +0000 (12:33 -0500)
committerDerrick Brashear <shadow@dementia.org>
Tue, 15 Jun 2010 21:33:08 +0000 (14:33 -0700)
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>

src/tests/afscp_callback.c

index e590a26..c6a052e 100644 (file)
@@ -15,8 +15,15 @@ init_afs_cb(void)
     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;
 }