# HG changeset patch # User Brian Utterback # Date 1405434042 25200 # Node ID 2bf7d2affadc6ac763a0a8d7cf0cdf6e20aa4e6d # Parent 3ac44c0bacae24868a11530b4757a5cdd6e5c0ce 18280799 ntpd may not reach NTP servers during boot if it has multiple IP address diff -r 3ac44c0bacae -r 2bf7d2affadc components/ntp/patches/70-refresh.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/ntp/patches/70-refresh.patch Tue Jul 15 07:20:42 2014 -0700 @@ -0,0 +1,122 @@ +Patch to restore the period refreshing of the interface list +and to re-resolve the peers source addresses. This is needed +because the interfaces are not done coming online when ntpd +starts due to delays from DAD. + +This patch can be removed when NTP is upgraded to 4.2.7p396 +or later + + +--- ntpd/ntp_io.c ++++ ntpd/ntp_io.c +@@ -1704,7 +1704,6 @@ update_interfaces( + isc_result_t result; + isc_interface_t isc_if; + int new_interface_found; +- int refresh_peers; + unsigned int family; + endpt enumep; + endpt * ep; +@@ -1719,7 +1718,6 @@ update_interfaces( + */ + + new_interface_found = FALSE; +- refresh_peers = FALSE; + iter = NULL; + result = isc_interfaceiter_create(mctx, &iter); + +@@ -1755,6 +1753,8 @@ update_interfaces( + + convert_isc_if(&isc_if, &enumep, port); + ++ DPRINT_INTERFACE(4, (&enumep, "examining ", "\n")); ++ + /* + * Check if and how we are going to use the interface. + */ +@@ -1762,19 +1762,23 @@ update_interfaces( + enumep.flags)) { + + case ACTION_IGNORE: ++ DPRINTF(4, ("ignoring interface %s (%s) - by nic rules\n", ++ enumep.name, stoa(&enumep.sin))); + continue; + + case ACTION_LISTEN: ++ DPRINTF(4, ("listen interface %s (%s) - by nic rules\n", ++ enumep.name, stoa(&enumep.sin))); + enumep.ignore_packets = ISC_FALSE; + break; + + case ACTION_DROP: ++ DPRINTF(4, ("drop on interface %s (%s) - by nic rules\n", ++ enumep.name, stoa(&enumep.sin))); + enumep.ignore_packets = ISC_TRUE; + break; + } + +- DPRINT_INTERFACE(4, (&enumep, "examining ", "\n")); +- + /* interfaces must be UP to be usable */ + if (!(enumep.flags & INT_UP)) { + DPRINTF(4, ("skipping interface %s (%s) - DOWN\n", +@@ -1817,15 +1821,7 @@ update_interfaces( + */ + strlcpy(ep->name, enumep.name, + sizeof(ep->name)); +- if (ep->ignore_packets != +- enumep.ignore_packets) { +- ep->ignore_packets = +- enumep.ignore_packets; +- refresh_peers = TRUE; +- DPRINTF(4, ("refreshing peers due to %s ignore_packets change to %d\n", +- stoa(&ep->sin), +- ep->ignore_packets)); +- } ++ ep->ignore_packets = enumep.ignore_packets; + } else { + /* name collision - rename interface */ + strlcpy(ep->name, "*multiple*", +@@ -1890,9 +1886,6 @@ update_interfaces( + (*receiver)(data, &ifi); + + new_interface_found = TRUE; +- refresh_peers = TRUE; +- DPRINTF(4, ("refreshing peers due to new addr %s\n", +- stoa(&ep->sin))); + DPRINT_INTERFACE(3, + (ep, "updating ", + " new - created\n")); +@@ -1932,9 +1925,6 @@ update_interfaces( + DPRINT_INTERFACE(3, (ep, "updating ", + "GONE - deleting\n")); + remove_interface(ep); +- refresh_peers = TRUE; +- DPRINTF(4, ("refreshing peers due to deleted addr %s\n", +- stoa(&ep->sin))); + + ifi.action = IFS_DELETED; + ifi.ep = ep; +@@ -1956,17 +1946,16 @@ update_interfaces( + } + + /* +- * phase 3 - re-configure as the world has changed if necessary ++ * phase 3 - re-configure as the world has probably changed ++ * ++ * never ever make this conditional again - it is needed to track ++ * routing updates. see bug #2506 + */ ++ refresh_all_peerinterfaces(); + + if (broadcast_client_enabled) + io_setbclient(); + +- if (refresh_peers) { +- refresh_all_peerinterfaces(); +- msyslog(LOG_INFO, "peers refreshed"); +- } +- + return new_interface_found; + } +