]> git.ipfire.org Git - thirdparty/chrony.git/commitdiff
reference: add UpdateOnce and PrintOnce modes
authorMiroslav Lichvar <mlichvar@redhat.com>
Wed, 9 Apr 2014 10:11:21 +0000 (12:11 +0200)
committerMiroslav Lichvar <mlichvar@redhat.com>
Wed, 9 Apr 2014 10:14:47 +0000 (12:14 +0200)
reference.c
reference.h

index f757f173c80acc506fab4cfe232c17f3618ca292..6a71706da13a9f773e2b3497a61e6cd21bb01cca 100644 (file)
@@ -732,6 +732,25 @@ special_mode_sync(int valid, double offset)
 
       end_ref_mode(1);
 
+      break;
+    case REF_ModeUpdateOnce:
+    case REF_ModePrintOnce:
+      if (!valid) {
+        LOG(LOGS_WARN, LOGF_Reference, "No suitable source for synchronisation");
+        end_ref_mode(0);
+        break;
+      }
+
+      step = mode == REF_ModeUpdateOnce;
+
+      LOG(LOGS_INFO, LOGF_Reference, "System clock wrong by %.6f seconds (%s)",
+          -offset, step ? "step" : "ignored");
+
+      if (step)
+        LCL_ApplyStepOffset(offset);
+
+      end_ref_mode(1);
+
       break;
     case REF_ModeIgnore:
       /* Do nothing until the mode is changed */
index babbd6ad486be9cdfe5d20efccdbae3c23805d7c..413659c258cc10e076372b27b082e804099f281d 100644 (file)
@@ -43,6 +43,8 @@ extern void REF_Finalise(void);
 typedef enum {
   REF_ModeNormal,
   REF_ModeInitStepSlew,
+  REF_ModeUpdateOnce,
+  REF_ModePrintOnce,
   REF_ModeIgnore,
 } REF_Mode;