#define RETRANSMISSION_TIMEOUT (1.0)
+#define NTP_VERSION 3
+#define NTP_MAX_COMPAT_VERSION 4
+#define NTP_MIN_COMPAT_VERSION 2
+
typedef struct {
IPAddr ip_addr; /* Address of the server */
int sanity; /* Flag indicating whether source
probe_source(SourceRecord *src)
{
NTP_Packet pkt;
- int version = 3;
+ int version = NTP_VERSION;
NTP_Mode my_mode = MODE_CLIENT;
struct timeval cooked;
union sockaddr_in46 his_addr;
mode = lvm & 0x7;
if ((leap == LEAP_Unsynchronised) ||
- (version != 3) ||
+ (version < NTP_MIN_COMPAT_VERSION || version > NTP_MAX_COMPAT_VERSION) ||
(mode != MODE_SERVER && mode != MODE_PASSIVE)) {
return;
}
/* The NTP protocol version that we support */
#define NTP_VERSION 3
+/* Compatible NTP protocol versions */
+#define NTP_MAX_COMPAT_VERSION 4
+#define NTP_MIN_COMPAT_VERSION 2
+
/* Maximum allowed dispersion - as defined in RFC1305 (16 seconds) */
#define NTP_MAX_DISPERSION 16.0
struct timeval our_ref_time;
double our_root_delay, our_root_dispersion;
- version = 3;
+ version = NTP_VERSION;
LCL_ReadCookedTime(&local_transmit, NULL);
REF_GetReferenceParams(&local_transmit,
/* Check version */
version = (message->lvm >> 3) & 0x7;
- if (version != NTP_VERSION) {
+ if (version < NTP_MIN_COMPAT_VERSION || version > NTP_MAX_COMPAT_VERSION) {
/* Ignore packet, but might want to log it */
return;
}
NTP_Mode his_mode;
NTP_Mode my_mode;
- int my_poll;
+ int my_poll, version;
+
+ /* Check version */
+ version = (message->lvm >> 3) & 0x7;
+ if (version < NTP_MIN_COMPAT_VERSION || version > NTP_MAX_COMPAT_VERSION) {
+ /* Ignore packet, but might want to log it */
+ return;
+ }
if (ADF_IsAllowed(access_auth_table, &remote_addr->ip_addr)) {
NTP_Mode his_mode;
NTP_Mode my_mode;
- int my_poll;
+ int my_poll, version;
int valid_key, valid_auth;
unsigned long key_id;
+ /* Check version */
+ version = (message->lvm >> 3) & 0x7;
+ if (version < NTP_MIN_COMPAT_VERSION || version > NTP_MAX_COMPAT_VERSION) {
+ /* Ignore packet, but might want to log it */
+ return;
+ }
+
if (ADF_IsAllowed(access_auth_table, &remote_addr->ip_addr)) {
his_mode = message->lvm & 0x07;