services: ntpd: Add 'allow-large-adjustment?' knob.
authorLudovic Courtès <ludo@gnu.org>
Thu, 20 Oct 2016 13:14:17 +0000 (15:14 +0200)
committerLudovic Courtès <ludo@gnu.org>
Thu, 20 Oct 2016 13:43:59 +0000 (15:43 +0200)
Suggested by Leo Famulari.

* gnu/services/networking.scm (<ntp-configuration>)[allow-large-adjustment?]:
New field.
(ntp-shepherd-service): Honor it.
(ntp-service): Add #:allow-large-adjustment? and honor it.
* doc/guix.texi (Networking Services): Document it.

doc/guix.texi
gnu/services/networking.scm

index 0c5d641..86b82c8 100644 (file)
@@ -8284,10 +8284,13 @@ configure networking."
 @end deffn
 
 @deffn {Scheme Procedure} ntp-service [#:ntp @var{ntp}] @
-  [#:servers @var{%ntp-servers}]
+  [#:servers @var{%ntp-servers}] @
+  [#:allow-large-adjustment? #f]
 Return a service that runs the daemon from @var{ntp}, the
 @uref{http://www.ntp.org, Network Time Protocol package}.  The daemon will
 keep the system clock synchronized with that of @var{servers}.
+@var{allow-large-adjustment?} determines whether @command{ntpd} is allowed to
+make an initial adjustment of more than 1,000 seconds.
 @end deffn
 
 @defvr {Scheme Variable} %ntp-servers
index 7495179..df609da 100644 (file)
@@ -265,11 +265,13 @@ Protocol (DHCP) client, on all the non-loopback network interfaces."
   ntp-configuration?
   (ntp      ntp-configuration-ntp
             (default ntp))
-  (servers  ntp-configuration-servers))
+  (servers  ntp-configuration-servers)
+  (allow-large-adjustment? ntp-allow-large-adjustment?
+                           (default #f)))
 
 (define ntp-shepherd-service
   (match-lambda
-    (($ <ntp-configuration> ntp servers)
+    (($ <ntp-configuration> ntp servers allow-large-adjustment?)
      (let ()
        ;; TODO: Add authentication support.
        (define config
@@ -296,7 +298,10 @@ restrict -6 ::1\n"))
               (requirement '(user-processes networking))
               (start #~(make-forkexec-constructor
                         (list (string-append #$ntp "/bin/ntpd") "-n"
-                              "-c" #$ntpd.conf "-u" "ntpd")))
+                              "-c" #$ntpd.conf "-u" "ntpd"
+                              #$@(if allow-large-adjustment?
+                                     '("-g")
+                                     '()))))
               (stop #~(make-kill-destructor))))))))
 
 (define %ntp-accounts
@@ -331,12 +336,18 @@ restrict -6 ::1\n"))
                                           ntp-service-activation)))))
 
 (define* (ntp-service #:key (ntp ntp)
-                      (servers %ntp-servers))
+                      (servers %ntp-servers)
+                      allow-large-adjustment?)
   "Return a service that runs the daemon from @var{ntp}, the
 @uref{http://www.ntp.org, Network Time Protocol package}.  The daemon will
-keep the system clock synchronized with that of @var{servers}."
+keep the system clock synchronized with that of @var{servers}.
+@var{allow-large-adjustment?} determines whether @command{ntpd} is allowed to
+make an initial adjustment of more than 1,000 seconds."
   (service ntp-service-type
-           (ntp-configuration (ntp ntp) (servers servers))))
+           (ntp-configuration (ntp ntp)
+                              (servers servers)
+                              (allow-large-adjustment?
+                               allow-large-adjustment?))))
 
 \f
 ;;;