Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 20 Jun 1997 10:54:12 -0700 (PDT)
From:      Bill Paul <wpaul@FreeBSD.ORG>
To:        cvs-committers@FreeBSD.ORG, cvs-all@FreeBSD.ORG, cvs-lib@FreeBSD.ORG
Subject:   cvs commit: src/lib/libc/rpc get_myaddress.c
Message-ID:  <199706201754.KAA25600@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
wpaul       1997/06/20 10:54:12 PDT

  Modified files:
    lib/libc/rpc         get_myaddress.c 
  Log:
  Hm... wonder how long this has been here.
  
  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.
  
  Revision  Changes    Path
  1.12      +3 -3      src/lib/libc/rpc/get_myaddress.c



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199706201754.KAA25600>