From 6f59c71988d75f76750c46adb11cda7e9189d5f3 Mon Sep 17 00:00:00 2001 From: Derrick Brashear Date: Tue, 11 Oct 2011 15:37:57 -0400 Subject: [PATCH] ukernel: get an ip address even when dns and hosts suck gethostname plus gethostbyname being useless make things fun make things less fun Change-Id: I5595698b0b7f2448b8c86448bedd8b16ab088510 Reviewed-on: http://gerrit.openafs.org/5600 Tested-by: Derrick Brashear Reviewed-by: Derrick Brashear --- src/util/uuid.c | 46 ++++++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/src/util/uuid.c b/src/util/uuid.c index 08cbeb9..8946eb1 100644 --- a/src/util/uuid.c +++ b/src/util/uuid.c @@ -64,6 +64,9 @@ # include "afs/sysincludes.h" # include "afsincludes.h" #endif +#ifdef UKERNEL +# include "rx/rx_prototypes.h" +#endif typedef struct { char eaddr[6]; /* 6 bytes of ethernet hardware address */ @@ -405,38 +408,37 @@ static int uuid_get_address(uuid_address_p_t addr) { afs_int32 code; - afs_uint32 addr1; - struct hostent *he; + afs_uint32 addr1 = 0; + struct hostent *he = NULL; code = gethostname(hostName1, 64); - if (code) { - printf("gethostname() failed\n"); -#ifdef AFS_NT40_ENV - return ENOENT; -#else - return errno; + if (!code) + he = gethostbyname(hostName1); + + if (he) + memcpy(&addr1, he->h_addr_list[0], 4); +#ifdef UKERNEL + else + addr1=rxi_getaddr(); #endif - } - he = gethostbyname(hostName1); - if (!he) { - printf("Can't find address for '%s'\n", hostName1); + + if (!addr1) { #ifdef AFS_NT40_ENV return ENOENT; #else return errno; #endif - } else { - memcpy(&addr1, he->h_addr_list[0], 4); - addr1 = ntohl(addr1); - memcpy(addr->eaddr, &addr1, 4); - addr->eaddr[4] = 0xaa; - addr->eaddr[5] = 0x77; + } + + addr1 = ntohl(addr1); + memcpy(addr->eaddr, &addr1, 4); + addr->eaddr[4] = 0xaa; + addr->eaddr[5] = 0x77; #ifdef UUID_DEBUG - printf("uuid_get_address: %02x-%02x-%02x-%02x-%02x-%02x\n", - addr->eaddr[0], addr->eaddr[1], addr->eaddr[2], addr->eaddr[3], - addr->eaddr[4], addr->eaddr[5]); + printf("uuid_get_address: %02x-%02x-%02x-%02x-%02x-%02x\n", + addr->eaddr[0], addr->eaddr[1], addr->eaddr[2], addr->eaddr[3], + addr->eaddr[4], addr->eaddr[5]); #endif - } return 0; } -- 1.9.4