From: Dave Hart Date: Fri, 3 Jul 2009 03:26:28 +0000 (+0000) Subject: ChangeLog: X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=296704f6cd92af9ceb6a19ebf11642c0317ae986;p=thirdparty%2Fntp.git ChangeLog: [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 --- diff --git a/ChangeLog b/ChangeLog index 284f99303c..5dad2e6260 100644 --- 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 * Add missing header dependencies to the ntpdc layout verification. * prefer.html updates from Dave Mills. diff --git a/ntpd/ntp_io.c b/ntpd/ntp_io.c index 313da0d3a8..cc7ea3d9ee 100644 --- a/ntpd/ntp_io.c +++ b/ntpd/ntp_io.c @@ -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;