diff options
author | wpaul <wpaul@FreeBSD.org> | 1997-09-21 23:04:51 +0000 |
---|---|---|
committer | wpaul <wpaul@FreeBSD.org> | 1997-09-21 23:04:51 +0000 |
commit | 079c1fbcfafc444b6064ce120b978c198520b67f (patch) | |
tree | 72ceb7dce790e1640fd0f1cb02220e57bb91cbd8 /lib/libc | |
parent | 2a712aab9bb16cab5c075b86ee8fd76bd4a61582 (diff) | |
download | FreeBSD-src-079c1fbcfafc444b6064ce120b978c198520b67f.zip FreeBSD-src-079c1fbcfafc444b6064ce120b978c198520b67f.tar.gz |
Make selection logic more strict. Only select AF_INET loopback interfaces
that are up on second (loopback only) pass, and only select non-loopback
AF_INET interfaces that are up on first pass.
Diffstat (limited to 'lib/libc')
-rw-r--r-- | lib/libc/rpc/get_myaddress.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/libc/rpc/get_myaddress.c b/lib/libc/rpc/get_myaddress.c index a96b84b..b2ec397 100644 --- a/lib/libc/rpc/get_myaddress.c +++ b/lib/libc/rpc/get_myaddress.c @@ -30,7 +30,7 @@ #if defined(LIBC_SCCS) && !defined(lint) /*static char *sccsid = "from: @(#)get_myaddress.c 1.4 87/08/11 Copyr 1984 Sun Micro";*/ /*static char *sccsid = "from: @(#)get_myaddress.c 2.1 88/07/29 4.0 RPCSRC";*/ -static char *rcsid = "$Id: get_myaddress.c,v 1.11 1997/05/28 05:05:11 wpaul Exp $"; +static char *rcsid = "$Id: get_myaddress.c,v 1.12 1997/06/20 17:54:11 wpaul Exp $"; #endif /* @@ -87,8 +87,11 @@ again: return(-1); } if (((ifreq.ifr_flags & IFF_UP) && - ifr->ifr_addr.sa_family == AF_INET) || - (loopback == 1 && (ifreq.ifr_flags & IFF_LOOPBACK))) { + ifr->ifr_addr.sa_family == AF_INET && + !(ifreq.ifr_flags & IFF_LOOPBACK)) || + (loopback == 1 && (ifreq.ifr_flags & IFF_LOOPBACK) + && (ifr->ifr_addr.sa_family == AF_INET) + && (ifr->ifr_flags & IFF_UP))) { *addr = *((struct sockaddr_in *)&ifr->ifr_addr); addr->sin_port = htons(PMAPPORT); gotit = 1; |