b1d8279802
The logic in get_myaddress() is broken: it always returns the loopback address due to the following rule: if ((ifreq.ifr_flags & IFF_UP) && ifr->ifr_addr.sa_family == AF_INET && (loopback == 1 && (ifreq.ifr_flags & IFF_LOOPBACK))) { The idea is that we want to select the interface address only if it's up and it's in the AF_INET family. If it turns uout we don't have such an interface available, we make a second pass through the loop, this time settling for the loopback interface. But the logic inadvertently locks out all cases when loopback == 0, so nothing is ever selected until the second pass (when loopback == 1). This is changed to: if (((ifreq.ifr_flags & IFF_UP) && ifr->ifr_addr.sa_family == AF_INET) || (loopback == 1 && (ifreq.ifr_flags & IFF_LOOPBACK))) { which I think does the right thing. This is yet another bogon I discovered during NIS+ testing; I need get_myaddress() to work correctly so that the callback code in the client library will work. |
||
---|---|---|
.. | ||
compat | ||
csu/i386 | ||
libalias | ||
libc | ||
libc_r | ||
libcom_err | ||
libcompat | ||
libcrypt | ||
libcurses | ||
libdisk | ||
libedit | ||
libf2c | ||
libF77 | ||
libftpio | ||
libgnumalloc | ||
libI77 | ||
libipx | ||
libkse | ||
libkvm | ||
libm | ||
libmd | ||
libmytinfo | ||
libncurses | ||
libopie | ||
libpam/modules | ||
libpcap | ||
libpthread | ||
libresolv | ||
librpcsvc | ||
libscsi | ||
libskey | ||
libss | ||
libtcl | ||
libtelnet | ||
libtermcap | ||
libutil | ||
libxpg4 | ||
liby | ||
libz | ||
msun | ||
ncurses/ncurses | ||
Makefile | ||
Makefile.inc |