|
@@ -0,0 +1,40 @@
|
|
|
+--- openntpd-3.9p1.orig/server.c 2006-05-14 07:29:21.000000000 +0200
|
|
|
++++ openntpd-3.9p1/server.c 2010-07-02 15:33:05.061342638 +0200
|
|
|
+@@ -150,21 +150,33 @@ server_dispatch(int fd, struct ntpd_conf
|
|
|
+ version = (query.status & VERSIONMASK) >> 3;
|
|
|
+
|
|
|
+ bzero(&reply, sizeof(reply));
|
|
|
+- if (conf->status.synced)
|
|
|
++ if (conf->status.synced || conf->ignore)
|
|
|
+ reply.status = conf->status.leap;
|
|
|
+ else
|
|
|
+ reply.status = LI_ALARM;
|
|
|
++
|
|
|
+ reply.status |= (query.status & VERSIONMASK);
|
|
|
+ if ((query.status & MODEMASK) == MODE_CLIENT)
|
|
|
+ reply.status |= MODE_SERVER;
|
|
|
+ else
|
|
|
+ reply.status |= MODE_SYM_PAS;
|
|
|
+
|
|
|
+- reply.stratum = conf->status.stratum;
|
|
|
++ if (conf->ignore) {
|
|
|
++ reply.stratum = 1;
|
|
|
++ reply.precision = -20;
|
|
|
++ } else {
|
|
|
++ reply.stratum = conf->status.stratum;
|
|
|
++ reply.precision = conf->status.precision;
|
|
|
++ }
|
|
|
++
|
|
|
+ reply.ppoll = query.ppoll;
|
|
|
+- reply.precision = conf->status.precision;
|
|
|
+ reply.rectime = d_to_lfp(rectime);
|
|
|
+- reply.reftime = d_to_lfp(conf->status.reftime);
|
|
|
++
|
|
|
++ if (conf->ignore)
|
|
|
++ reply.reftime = d_to_lfp(gettime());
|
|
|
++ else
|
|
|
++ reply.reftime = d_to_lfp(conf->status.reftime);
|
|
|
++
|
|
|
+ reply.xmttime = d_to_lfp(gettime());
|
|
|
+ reply.orgtime = query.xmttime;
|
|
|
+ reply.rootdelay = d_to_sfp(conf->status.rootdelay);
|