Clear the timex UNSYNC flag so the RTC receives updates from the

system clock.
This commit is contained in:
Christian Weisgerber 2015-04-30 15:17:20 +00:00
parent 8fe6ad9b9c
commit 655ea3bd7b
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=385051
3 changed files with 42 additions and 0 deletions

View file

@ -2,6 +2,7 @@
PORTNAME= openntpd PORTNAME= openntpd
PORTVERSION= 5.7p4 PORTVERSION= 5.7p4
PORTREVISION= 1
PORTEPOCH= 2 PORTEPOCH= 2
CATEGORIES= net CATEGORIES= net
MASTER_SITES= ${MASTER_SITE_OPENBSD} MASTER_SITES= ${MASTER_SITE_OPENBSD}

View file

@ -0,0 +1,23 @@
--- compat/adjfreq_freebsd.c.orig 2015-03-12 04:42:13 UTC
+++ compat/adjfreq_freebsd.c
@@ -57,3 +57,20 @@ adjfreq(const int64_t *freq, int64_t *ol
return 0;
}
+
+/*
+ * The RTC is only updated if the clock is not marked as unsynced.
+ */
+
+void
+update_status(int synced)
+{
+ struct timex txc = { 0 };
+
+ txc.modes = MOD_STATUS;
+ if (!synced)
+ txc.status = STA_UNSYNC;
+ if (ntp_adjtime(&txc) == -1)
+ log_warn("ntp_adjtime (3) failed");
+ return;
+}

View file

@ -0,0 +1,18 @@
--- src/ntpd.c.orig 2015-03-25 01:18:56 UTC
+++ src/ntpd.c
@@ -53,6 +53,7 @@ const char *ctl_lookup_option(char *
void show_status_msg(struct imsg *);
void show_peer_msg(struct imsg *, int);
void show_sensor_msg(struct imsg *, int);
+void update_status(int);
volatile sig_atomic_t quit = 0;
volatile sig_atomic_t reconfig = 0;
@@ -423,6 +424,7 @@ ntpd_adjtime(double d)
else if (!firstadj && olddelta.tv_sec == 0 && olddelta.tv_usec == 0)
synced = 1;
firstadj = 0;
+ update_status(synced);
return (synced);
}