]> git.ipfire.org Git - thirdparty/ntp.git/commitdiff
The loopback is OK if we're listening to virtual IPs.
authorHarlan Stenn <stenn@ntp.org>
Thu, 3 Jan 2002 04:52:46 +0000 (23:52 -0500)
committerHarlan Stenn <stenn@ntp.org>
Thu, 3 Jan 2002 04:52:46 +0000 (23:52 -0500)
Show candidate interface addresses during debug.
From: Paul Vixie

bk: 3c33e39eRTeTRMk32unVzMPYSMvs5g

ntpd/ntp_io.c

index f3fb4948d38838bde734146f3688dbd8be151898..ef0c14698f5bff9936e1893a6b6ae415ca31d343 100644 (file)
@@ -41,6 +41,8 @@
 #endif
 #include <arpa/inet.h>
 
+extern int listen_to_virtual_ips;
+
 #if _BSDI_VERSION >= 199510
 # include <ifaddrs.h>
 #endif
@@ -275,9 +277,15 @@ create_sockets(
                if ((ifap->ifa_flags & IFF_UP) == 0)
                    continue;
 
+               if (debug)
+                       printf("after getifaddrs(), considering %s (%s)\n",
+                              ifap->ifa_name,
+                              inet_ntoa(((struct sockaddr_in *)ifap->ifa_addr)->sin_addr));
+
                if (ifap->ifa_flags & IFF_LOOPBACK) {
                        sin = (struct sockaddr_in *)ifap->ifa_addr;
-                       if (ntohl(sin->sin_addr.s_addr) != 0x7f000001)
+                       if (ntohl(sin->sin_addr.s_addr) != 0x7f000001 &&
+                           !listen_to_virtual_ips)
                                continue;
                }
                inter_list[i].flags = 0;
@@ -318,10 +326,10 @@ create_sockets(
                 * one physical interface. -wsr
                 */
                for (j=0; j < i; j++)
-                   if (inter_list[j].sin.sin_addr.s_addr &
-                       inter_list[j].mask.sin_addr.s_addr ==
-                       inter_list[i].sin.sin_addr.s_addr &
-                       inter_list[i].mask.sin_addr.s_addr)
+                   if ((inter_list[j].sin.sin_addr.s_addr &
+                        inter_list[j].mask.sin_addr.s_addr) ==
+                       (inter_list[i].sin.sin_addr.s_addr &
+                        inter_list[i].mask.sin_addr.s_addr))
                    {
                            if (inter_list[j].flags & INT_LOOPBACK)
                                inter_list[j] = inter_list[i];
@@ -395,8 +403,6 @@ create_sockets(
        for(n = ifc.ifc_len, ifr = ifc.ifc_req; n > 0;
            ifr = (struct ifreq *)((char *)ifr + size))
        {
-               extern int listen_to_virtual_ips;
-
                size = sizeof(*ifr);
 
 # ifdef HAVE_SA_LEN_IN_STRUCT_SOCKADDR
@@ -1235,7 +1241,7 @@ fdbits(
 /*
  * input_handler - receive packets asynchronously
  */
-extern void
+void
 input_handler(
        l_fp *cts
        )