Andreas Kahari [EMAIL PROTECTED] wrote:
> Is there a firewall blocking the requests in either direction?  Does
> networki routing etc. work apart from this?

Yes, networking works as it should. The problem was that ntpd did not
get synced because I had hacked it to settimeofday() every time the sensor
reports a new offset. This put the internal magical calculators out of
sync and ntpd put the alert flag up in responses which were then rejected
by other ntpd's and ntpdate.

So I approached the problem from another angle and thought about
adjtime()'ing the offsets. It produced this very simple patch:
Index: ntp.c
===================================================================
RCS file: /storage/1/mirror/openbsd/src/usr.sbin/ntpd/ntp.c,v
retrieving revision 1.91
diff -u -r1.91 ntp.c
--- ntp.c       1 Jul 2006 18:52:46 -0000       1.91
+++ ntp.c       15 Jul 2006 07:50:05 -0000
@@ -1,4 +1,4 @@
-/*     $OpenBSD: ntp.c,v 1.91 2006-07-01 18:52:46 otto Exp $ */
+/*     $OpenBSD: ntp.c,v 1.91 2006/07/01 18:52:46 otto Exp $ */

 /*
  * Copyright (c) 2003, 2004 Henning Brauer <[EMAIL PROTECTED]>
@@ -315,8 +315,10 @@
                for (s = TAILQ_FIRST(&conf->ntp_sensors); s != NULL;
                    s = next_s) {
                        next_s = TAILQ_NEXT(s, entry);
-                       if (s->next <= time(NULL))
+                       if (s->next <= time(NULL)) {
                                sensor_query(s);
+                               priv_adjtime();
+                       }
                }
        }


Now priv_adjtime() takes into account the offset set by a nmea
sensor and adjusts the time correctly, and voila, ntpd's internal magic
calculators also agreed and started working as they should. So now
I have a working (sync'ed) ntpd that uses a usb gps receiver as its
time source.

Without that priv_adjtime() the offset reported by the sensor never
got updated, I don't know why yet.

best regards,
Bo Granlund

Reply via email to