From: Frank Kardel Date: Sun, 25 Mar 2007 20:07:31 +0000 (+0000) Subject: ntp_peer.c: X-Git-Tag: NTP_4_2_5P20~1^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=21d490d0f19083965e38e6da315213189669ad8c;p=thirdparty%2Fntp.git ntp_peer.c: [Bug 789] avoid broadcast/multicast client associations getting confused when multicast packets arrive during the autokey/delay dance bk: 4606d683zOERvaE4P-gA5j9Bu-Bj0A --- diff --git a/ntpd/ntp_peer.c b/ntpd/ntp_peer.c index e57a4a813..69c5e3e14 100644 --- a/ntpd/ntp_peer.c +++ b/ntpd/ntp_peer.c @@ -530,6 +530,18 @@ void set_peerdstadr(struct peer *peer, struct interface *interface) { if (peer->dstadr != interface) { + if (interface != NULL && + (peer->cast_flags & MDF_BCLNT) && + (interface->flags & INT_MCASTIF) && + peer->burst) { + /* + * don't accept updates to a true multicast reception + * interface while a BCLNT peer is running it's + * unicast protocol + */ + return; + } + if (peer->dstadr != NULL) { peer->dstadr->peercnt--; @@ -603,9 +615,9 @@ peer_refresh_interface(struct peer *peer) /* * clear crypto if we change the local address */ - if (peer->dstadr != piface) { - peer_crypto_clear(peer); - } + if (peer->dstadr != piface && !(peer->cast_flags & MDF_BCLNT)) { + peer_crypto_clear(peer); + } /* * Broadcast needs the socket enabled for broadcast