ntp: limit interleaved responses to NTPv4

The interleaved modes are being specified for NTPv4 only. As a server,
detect interleaved requests only in NTPv4 packets.

Clients and peers can still send interleaved requests in lower-version
packets if configured with the version option.
This commit is contained in:
Miroslav Lichvar 2021-11-22 16:33:46 +01:00
parent 8df49b799f
commit 7f984cf7fa

View file

@ -2395,7 +2395,8 @@ NCR_ProcessRxUnknown(NTP_Remote_Address *remote_addr, NTP_Local_Address *local_a
transmit timestamp (this is verified in transmit_packet()). For a new transmit timestamp (this is verified in transmit_packet()). For a new
client starting with a zero origin timestamp, the third response is the client starting with a zero origin timestamp, the third response is the
earliest one that can be interleaved. */ earliest one that can be interleaved. */
if (kod == 0 && log_index >= 0 && message->originate_ts.lo & htonl(1) && if (kod == 0 && log_index >= 0 && info.version == 4 &&
message->originate_ts.lo & htonl(1) &&
UTI_CompareNtp64(&message->receive_ts, &message->transmit_ts) != 0) { UTI_CompareNtp64(&message->receive_ts, &message->transmit_ts) != 0) {
ntp_rx = message->originate_ts; ntp_rx = message->originate_ts;
local_ntp_rx = &ntp_rx; local_ntp_rx = &ntp_rx;