diff --git a/broadcast.c b/broadcast.c index ca12eec..30e19f1 100644 --- a/broadcast.c +++ b/broadcast.c @@ -90,6 +90,9 @@ timeout_handler(void *arbitrary) leap = LEAP_Unsynchronised; } + if (our_stratum >= NTP_MAX_STRATUM) + our_stratum = 0; + message.lvm = NTP_LVM(leap, NTP_VERSION, MODE_BROADCAST); message.stratum = our_stratum; message.poll = 6; /* FIXME: what should this be? */ diff --git a/ntp.h b/ntp.h index d06b190..0e012be 100644 --- a/ntp.h +++ b/ntp.h @@ -41,6 +41,9 @@ typedef uint32_t NTP_int32; /* The NTP protocol version that we support */ #define NTP_VERSION 4 +/* Maximum stratum number (infinity) */ +#define NTP_MAX_STRATUM 16 + /* The minimum valid length of an extension field */ #define NTP_MIN_EXTENSION_LENGTH 16 diff --git a/ntp_core.c b/ntp_core.c index 599b3fb..08043cd 100644 --- a/ntp_core.c +++ b/ntp_core.c @@ -201,9 +201,6 @@ struct NCR_Instance_Record { /* Maximum allowed dispersion - as defined in RFC 5905 (16 seconds) */ #define NTP_MAX_DISPERSION 16.0 -/* Maximum stratum number */ -#define NTP_MAX_STRATUM 16 - /* Invalid stratum number */ #define NTP_INVALID_STRATUM 0 diff --git a/reference.c b/reference.c index 494bfe9..62489f0 100644 --- a/reference.c +++ b/reference.c @@ -1089,7 +1089,7 @@ REF_GetReferenceParams *is_synchronised = 0; *leap_status = LEAP_Unsynchronised; - *stratum = 0; + *stratum = NTP_MAX_STRATUM; *ref_id = 0; ref_time->tv_sec = ref_time->tv_usec = 0; /* These values seem to be standard for a client, and @@ -1111,7 +1111,7 @@ REF_GetOurStratum(void) } else if (enable_local_stratum) { return local_stratum; } else { - return 16; + return NTP_MAX_STRATUM; } }