diff options
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/ChangeLog | 5 | ||||
| -rw-r--r-- | src/include/foreachaddr.c | 14 |
2 files changed, 19 insertions, 0 deletions
diff --git a/src/include/ChangeLog b/src/include/ChangeLog index 032343014..58830ef5e 100644 --- a/src/include/ChangeLog +++ b/src/include/ChangeLog @@ -1,3 +1,8 @@ +2003-08-26 Ken Raeburn <raeburn@mit.edu> + + * foreachaddr.c (foreach_localaddr) [HAVE_IFADDRS_H]: Skip over + any returned data structure with a NULL ifa_addr field. + 2003-08-21 Ken Raeburn <raeburn@mit.edu> * fake-addrinfo.h (getnameinfo): Define to my_fake_getnameinfo diff --git a/src/include/foreachaddr.c b/src/include/foreachaddr.c index 101f8efca..f91034a77 100644 --- a/src/include/foreachaddr.c +++ b/src/include/foreachaddr.c @@ -383,6 +383,20 @@ foreach_localaddr (/*@null@*/ void *data, if ((ifp->ifa_flags & IFF_UP) == 0) continue; if (ifp->ifa_flags & IFF_LOOPBACK) { + /* Pretend it's not up, so the second pass will skip + it. */ + ifp->ifa_flags &= ~IFF_UP; + continue; + } + if (ifp->ifa_addr == NULL) { + /* Can't use an interface without an address. Linux + apparently does this sometimes. [RT ticket 1770 from + Maurice Massar, also Debian bug 206851, shows the + problem with a PPP link on a newer kernel than I'm + running.] + + Pretend it's not up, so the second pass will skip + it. */ ifp->ifa_flags &= ~IFF_UP; continue; } |
