]> git.ipfire.org Git - thirdparty/ntp.git/commitdiff
ChangeLog:
authorDave Hart <hart@ntp.org>
Fri, 3 Jul 2009 03:26:28 +0000 (03:26 +0000)
committerDave Hart <hart@ntp.org>
Fri, 3 Jul 2009 03:26:28 +0000 (03:26 +0000)
  [Bug 1042] multicast listeners IPv4+6 ignore new interfaces
ntp_io.c:
  [Bug 1042] multicast listeners IPv4+6 ignore new interfaces
  more detailed DPRINTFs

bk: 4a4d7a644d7wR2gS7xOWJ8b0dJne3Q

ChangeLog
ntpd/ntp_io.c

index 284f99303c6fe583390734912696ead516849d48..5dad2e62604fe8e88f8efe2b1664343119983b08 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,4 @@
+* [Bug 1042] multicast listeners IPv4+6 ignore new interfaces
 (4.2.5p182) 2009/06/18 Released by Harlan Stenn <stenn@ntp.org>
 * Add missing header dependencies to the ntpdc layout verification.
 * prefer.html updates from Dave Mills.
index 313da0d3a8cfd5c4ca16d440d027d9099891b324..cc7ea3d9ee44601ee45435c6584e118c7914bded 100644 (file)
@@ -3392,7 +3392,8 @@ findlocalcastinterface(
        nif = findlocalinterface(addr, 0, 0);
 
        if (nif) {
-               DPRINTF(2, ("findlocalcastinterface: kernel recommends interface #%d %s\n", nif->ifnum, nif->name));
+               DPRINTF(2, ("findlocalcastinterface: kernel recommends interface #%d %s for %s\n",
+                           nif->ifnum, nif->name, stoa(addr)));
                return nif;
        }
 
@@ -3436,8 +3437,8 @@ findlocalcastinterface(
        }       /* for loop over interfaces */
 
        if (nif != NULL)
-               DPRINTF(3, ("findlocalcastinterface: found interface #%d %s\n",
-                           nif->ifnum, nif->name));
+               DPRINTF(3, ("findlocalcastinterface: found interface #%d %s for %s\n",
+                           nif->ifnum, nif->name, stoa(addr)));
        else
                DPRINTF(3, ("findlocalcastinterface: no interface found for %s\n",
                            stoa(addr)));
@@ -3838,6 +3839,12 @@ delete_interface_from_list(
                        DPRINTF(4, ("Deleted addr %s for interface #%d %s from list of addresses\n",
                                    stoa(&entry->addr), iface->ifnum,
                                    iface->name));
+                       if (addr_ismulticast(&entry->addr)) {
+                               /* find a new interface to use */
+                               io_multicast_add(&entry->addr);
+                               /* the list may have changed */
+                               next = ISC_LIST_HEAD(remoteaddr_list);
+                       }
                        free(entry);
                }
                entry = next;