|
@@ -106,6 +106,8 @@ typedef struct {
|
|
|
uint16_t status;
|
|
uint16_t status;
|
|
|
} ntp_assoc_status_pair;
|
|
} ntp_assoc_status_pair;
|
|
|
|
|
|
|
|
|
|
+static int allow_zero_stratum = 0;
|
|
|
|
|
+
|
|
|
/* bits 1,2 are the leap indicator */
|
|
/* bits 1,2 are the leap indicator */
|
|
|
#define LI_MASK 0xc0
|
|
#define LI_MASK 0xc0
|
|
|
#define LI(x) ((x&LI_MASK)>>6)
|
|
#define LI(x) ((x&LI_MASK)>>6)
|
|
@@ -305,7 +307,7 @@ int best_offset_server(const ntp_server_results *slist, int nservers){
|
|
|
/* Sort out servers that didn't respond or responede with a 0 stratum;
|
|
/* Sort out servers that didn't respond or responede with a 0 stratum;
|
|
|
* stratum 0 is for reference clocks so no NTP server should ever report
|
|
* stratum 0 is for reference clocks so no NTP server should ever report
|
|
|
* a stratum 0 */
|
|
* a stratum 0 */
|
|
|
- if ( slist[cserver].stratum == 0){
|
|
|
|
|
|
|
+ if ( slist[cserver].stratum == 0 && !allow_zero_stratum){
|
|
|
if (verbose) printf("discarding peer %d: stratum=%d\n", cserver, slist[cserver].stratum);
|
|
if (verbose) printf("discarding peer %d: stratum=%d\n", cserver, slist[cserver].stratum);
|
|
|
continue;
|
|
continue;
|
|
|
}
|
|
}
|
|
@@ -674,6 +676,7 @@ int process_arguments(int argc, char **argv){
|
|
|
{"jcrit", required_argument, 0, 'k'},
|
|
{"jcrit", required_argument, 0, 'k'},
|
|
|
{"timeout", required_argument, 0, 't'},
|
|
{"timeout", required_argument, 0, 't'},
|
|
|
{"hostname", required_argument, 0, 'H'},
|
|
{"hostname", required_argument, 0, 'H'},
|
|
|
|
|
+ {"allow-zero-stratum", no_argument, 0, 'z'},
|
|
|
{0, 0, 0, 0}
|
|
{0, 0, 0, 0}
|
|
|
};
|
|
};
|
|
|
|
|
|
|
@@ -722,6 +725,9 @@ int process_arguments(int argc, char **argv){
|
|
|
case 't':
|
|
case 't':
|
|
|
timeout_interval = parse_timeout_string(optarg);
|
|
timeout_interval = parse_timeout_string(optarg);
|
|
|
break;
|
|
break;
|
|
|
|
|
+ case 'z':
|
|
|
|
|
+ allow_zero_stratum = 1;
|
|
|
|
|
+ break;
|
|
|
case '4':
|
|
case '4':
|
|
|
address_family = AF_INET;
|
|
address_family = AF_INET;
|
|
|
break;
|
|
break;
|
|
@@ -868,6 +874,8 @@ void print_help(void){
|
|
|
printf (" %s\n", _("Warning threshold for jitter"));
|
|
printf (" %s\n", _("Warning threshold for jitter"));
|
|
|
printf (" %s\n", "-k, --jcrit=THRESHOLD");
|
|
printf (" %s\n", "-k, --jcrit=THRESHOLD");
|
|
|
printf (" %s\n", _("Critical threshold for jitter"));
|
|
printf (" %s\n", _("Critical threshold for jitter"));
|
|
|
|
|
+ printf (" %s\n", "-z, --allow-zero-stratum");
|
|
|
|
|
+ printf (" %s\n", _("Do not discard DNS servers which report a stratum of zero (0)"));
|
|
|
printf (UT_CONN_TIMEOUT, DEFAULT_SOCKET_TIMEOUT);
|
|
printf (UT_CONN_TIMEOUT, DEFAULT_SOCKET_TIMEOUT);
|
|
|
printf (UT_VERBOSE);
|
|
printf (UT_VERBOSE);
|
|
|
|
|
|