]> git.ipfire.org Git - thirdparty/ntp.git/commitdiff
[Bug 2788] New flag -G (force_step_once)
authorMartin Burnicki <burnicki@ntp.org>
Mon, 30 Mar 2015 09:23:48 +0000 (11:23 +0200)
committerMartin Burnicki <burnicki@ntp.org>
Mon, 30 Mar 2015 09:23:48 +0000 (11:23 +0200)
bk: 55191624tL5B1PXfZT_S6hi9M9LeAg

ChangeLog
include/ntpd.h
ntpd/cmd_args.c
ntpd/ntp_loopfilter.c
ntpd/ntpd-opts.c
ntpd/ntpd-opts.h
ntpd/ntpdbase-opts.def

index c8b116987df3abff305fc6328cf40f7e098d58d6..93f75d0108787bcf6e12239864ca1a988adca795 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
 ---
 
+* [Bug 2788] New flag -G (force_step_once).
 * [Bug 2592] Account for PPS sources which can provide an accurate
   absolute time stamp, and status information.
   Fixed indention and removed trailing whitespace.
index 9f07e4ef726105580b55439ebb52478a35191e97..445ae919290c18b2dfe1ae48875e4fc631d37379 100644 (file)
@@ -404,8 +404,9 @@ extern int  kern_enable;            /* kernel support enabled */
 extern int     hardpps_enable;         /* kernel PPS discipline enabled */
 extern int     ext_enable;             /* external clock enabled */
 extern int     cal_enable;             /* refclock calibrate enable */
-extern int     allow_panic;            /* allow panic correction */
-extern int     mode_ntpdate;           /* exit on first clock set */
+extern int     allow_panic;            /* allow panic correction (-g) */
+extern int     force_step_once;        /* always step time once at startup (-G) */
+extern int     mode_ntpdate;           /* exit on first clock set (-q) */
 extern int     peer_ntpdate;           /* count of ntpdate peers */
 
 /*
@@ -519,7 +520,7 @@ extern u_int32              conf_file_sum;  /* Simple sum of characters */
 
 /* ntp_signd.c */
 #ifdef HAVE_NTP_SIGND
-extern void send_via_ntp_signd(struct recvbuf *, int, keyid_t, int, 
+extern void send_via_ntp_signd(struct recvbuf *, int, keyid_t, int,
                               struct pkt *);
 #endif
 
index 045c0a98e23381c9b3a72ceeeed2f9490c935a7d..14e86f7e87ca194427cc9faa9952965281c90764 100644 (file)
@@ -76,6 +76,9 @@ getCmdOpts(
        if (HAVE_OPT( PANICGATE ))
                allow_panic = TRUE;
 
+       if (HAVE_OPT( FORCE_STEP_ONCE ))
+               force_step_once = TRUE;
+
 #ifdef HAVE_DROPROOT
        if (HAVE_OPT( JAILDIR )) {
                droproot = 1;
@@ -175,14 +178,14 @@ getCmdOpts(
 
        if (HAVE_OPT( UPDATEINTERVAL )) {
                long val = OPT_VALUE_UPDATEINTERVAL;
-                         
+
                if (val >= 0)
                        interface_interval = val;
                else {
-                       fprintf(stderr, 
+                       fprintf(stderr,
                                "command line interface update interval %ld must not be negative\n",
                                val);
-                       msyslog(LOG_ERR, 
+                       msyslog(LOG_ERR,
                                "command line interface update interval %ld must not be negative",
                                val);
                        errflg++;
index 35a997187a77de496e3fb9f24b361fc085ef130a..94ef6db6d3f6628dba040596f4969dbad729684b 100644 (file)
@@ -46,7 +46,7 @@
 #define CLOCK_LIMIT    30      /* poll-adjust threshold */
 #define CLOCK_PGATE    4.      /* poll-adjust gate */
 #define PPS_MAXAGE     120     /* kernel pps signal timeout (s) */
-#define        FREQTOD(x)      ((x) / 65536e6) /* NTP to double */ 
+#define        FREQTOD(x)      ((x) / 65536e6) /* NTP to double */
 #define        DTOFREQ(x)      ((int32)((x) * 65536e6)) /* double to NTP */
 
 /*
@@ -154,8 +154,9 @@ int hardpps_enable;         /* kernel PPS discipline enabled */
 int    ext_enable;             /* external clock enabled */
 int    pps_stratum;            /* pps stratum */
 int    kernel_status;          /* from ntp_adjtime */
-int    allow_panic = FALSE;    /* allow panic correction */
-int    mode_ntpdate = FALSE;   /* exit on first clock set */
+int    allow_panic = FALSE;    /* allow panic correction (-g) */
+int    force_step_once = FALSE; /* always step time once at startup (-G) */
+int    mode_ntpdate = FALSE;   /* exit on first clock set (-q) */
 int    freq_cnt;               /* initial frequency clamp */
 int    freq_set;               /* initial set frequency switch */
 
@@ -455,10 +456,10 @@ local_clock(
         * threshold (128 ms) and when it does not. Under certain
         * conditions updates are suspended until the stepout theshold
         * (900 s) is exceeded. See the documentation on how these
-        * thresholds interact with commands and command line options. 
+        * thresholds interact with commands and command line options.
         *
         * Note the kernel is disabled if step is disabled or greater
-        * than 0.5 s or in ntpdate mode. 
+        * than 0.5 s or in ntpdate mode.
         */
        osys_poll = sys_poll;
        if (sys_poll < peer->minpoll)
@@ -469,7 +470,13 @@ local_clock(
        clock_frequency = drift_comp;
        rval = 1;
        if (  ( fp_offset > clock_max_fwd  && clock_max_fwd  > 0)
-          || (-fp_offset > clock_max_back && clock_max_back > 0)) {
+          || (-fp_offset > clock_max_back && clock_max_back > 0)
+          || force_step_once ) {
+               if (force_step_once) {
+                       force_step_once = FALSE;  /* we want this only once after startup */
+                       msyslog(LOG_NOTICE, "Doing intital time step" );
+               }
+
                switch (state) {
 
                /*
@@ -529,7 +536,7 @@ local_clock(
                 * threshold. Note that a single spike greater than the
                 * step threshold is always suppressed, even with a
                 * long time constant.
-                */ 
+                */
                default:
                        snprintf(tbuf, sizeof(tbuf), "%+.6f s",
                            fp_offset);
@@ -547,7 +554,6 @@ local_clock(
                }
                rstclock(EVNT_SYNC, 0);
        } else {
-
                /*
                 * The offset is less than the step threshold. Calculate
                 * the jitter as the exponentially weighted offset
@@ -609,9 +615,9 @@ local_clock(
                                /*
                                 * The PLL frequency gain (numerator) depends on
                                 * the minimum of the update interval and Allan
-                                * intercept. This reduces the PLL gain when the 
+                                * intercept. This reduces the PLL gain when the
                                 * FLL becomes effective.
-                                */ 
+                                */
                                etemp = min(ULOGTOD(allan_xpt), mu);
                                dtemp = 4 * CLOCK_PLL * ULOGTOD(sys_poll);
                                clock_frequency += fp_offset * etemp / (dtemp *
@@ -897,7 +903,7 @@ adj_host_clock(
        clock_offset -= offset_adj;
        /*
         * Windows port adj_systime() must be called each second,
-        * even if the argument is zero, to ease emulation of 
+        * even if the argument is zero, to ease emulation of
         * adjtime() using Windows' slew API which controls the rate
         * but does not automatically stop slewing when an offset
         * has decayed to zero.
@@ -926,7 +932,7 @@ rstclock(
                report_event(trans, NULL, NULL);
        state = trans;
        last_offset = clock_offset = offset;
-       clock_epoch = current_time; 
+       clock_epoch = current_time;
 }
 
 
@@ -1199,12 +1205,12 @@ loop_config(
        case LOOP_CODEC:        /* audio codec frequency (codec) */
                clock_codec = freq / 1e6;
                break;
-       
+
        case LOOP_PHI:          /* dispersion threshold (dispersion) */
                clock_phi = freq / 1e6;
                break;
 
-       case LOOP_FREQ:         /* initial frequency (freq) */  
+       case LOOP_FREQ:         /* initial frequency (freq) */
                init_drift_comp = freq;
                freq_set++;
                break;
@@ -1253,7 +1259,7 @@ loop_config(
                if (freq < CLOCK_MINSTEP)
                        clock_minstep = CLOCK_MINSTEP;
                else
-                       clock_minstep = freq; 
+                       clock_minstep = freq;
                break;
 
        case LOOP_TICK:         /* tick increment (tick) */
index 953f39750de684663fbb864df00f21e04b2ef801..d8d7c6412bf22484adee190cee6a53221cfeb85c 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *  EDIT THIS FILE WITH CAUTION  (ntpd-opts.c)
  *
- *  It has been AutoGen-ed  February  4, 2015 at 02:39:17 AM by AutoGen 5.18.5pre4
+ *  It has been AutoGen-ed  March 30, 2015 at 10:48:01 AM by AutoGen 5.18.4
  *  From the definitions    ntpd-opts.def
  *  and the template file   options
  *
@@ -74,7 +74,7 @@ extern FILE * option_usage_fp;
 /**
  *  static const strings for ntpd options
  */
-static char const ntpd_opt_strs[3061] =
+static char const ntpd_opt_strs[3130] =
 /*     0 */ "ntpd 4.2.8p1\n"
             "Copyright (C) 1992-2015 The University of Delaware and Network Time Foundation, all rights reserved.\n"
             "This is free software. It is licensed for use, modification and\n"
@@ -122,92 +122,95 @@ static char const ntpd_opt_strs[3061] =
 /*  1460 */ "Allow the first adjustment to be Big\0"
 /*  1497 */ "PANICGATE\0"
 /*  1507 */ "panicgate\0"
-/*  1517 */ "Jail directory\0"
-/*  1532 */ "JAILDIR\0"
-/*  1540 */ "jaildir\0"
-/*  1548 */ "built without --enable-clockctl or --enable-linuxcaps or --enable-solarisprivs\0"
-/*  1627 */ "Listen on an interface name or address\0"
-/*  1666 */ "INTERFACE\0"
-/*  1676 */ "interface\0"
-/*  1686 */ "path to symmetric keys\0"
-/*  1709 */ "KEYFILE\0"
-/*  1717 */ "keyfile\0"
-/*  1725 */ "path to the log file\0"
-/*  1746 */ "LOGFILE\0"
-/*  1754 */ "logfile\0"
-/*  1762 */ "Do not listen to virtual interfaces\0"
-/*  1798 */ "NOVIRTUALIPS\0"
-/*  1811 */ "novirtualips\0"
-/*  1824 */ "Modify Multimedia Timer (Windows only)\0"
-/*  1863 */ "MODIFYMMTIMER\0"
-/*  1877 */ "modifymmtimer\0"
-/*  1891 */ "Do not fork\0"
-/*  1903 */ "NOFORK\0"
-/*  1910 */ "nofork\0"
-/*  1917 */ "Run at high priority\0"
-/*  1938 */ "NICE\0"
-/*  1943 */ "nice\0"
-/*  1948 */ "path to the PID file\0"
-/*  1969 */ "PIDFILE\0"
-/*  1977 */ "pidfile\0"
-/*  1985 */ "Process priority\0"
-/*  2002 */ "PRIORITY\0"
-/*  2011 */ "priority\0"
-/*  2020 */ "Set the time and quit\0"
-/*  2042 */ "QUIT\0"
-/*  2047 */ "quit\0"
-/*  2052 */ "Broadcast/propagation delay\0"
-/*  2080 */ "PROPAGATIONDELAY\0"
-/*  2097 */ "propagationdelay\0"
-/*  2114 */ "Save parsed configuration and quit\0"
-/*  2149 */ "SAVECONFIGQUIT\0"
-/*  2164 */ "saveconfigquit\0"
-/*  2179 */ "Statistics file location\0"
-/*  2204 */ "STATSDIR\0"
-/*  2213 */ "statsdir\0"
-/*  2222 */ "Trusted key number\0"
-/*  2241 */ "TRUSTEDKEY\0"
-/*  2252 */ "trustedkey\0"
-/*  2263 */ "Run as userid (or userid:groupid)\0"
-/*  2297 */ "USER\0"
-/*  2302 */ "user\0"
-/*  2307 */ "interval in seconds between scans for new or dropped interfaces\0"
-/*  2371 */ "UPDATEINTERVAL\0"
-/*  2386 */ "updateinterval\0"
-/*  2401 */ "make ARG an ntp variable (RW)\0"
-/*  2431 */ "VAR\0"
-/*  2435 */ "var\0"
-/*  2439 */ "make ARG an ntp variable (RW|DEF)\0"
-/*  2473 */ "DVAR\0"
-/*  2478 */ "dvar\0"
-/*  2483 */ "Seconds to wait for first clock sync\0"
-/*  2520 */ "WAIT_SYNC\0"
-/*  2530 */ "wait-sync\0"
-/*  2540 */ "Slew up to 600 seconds\0"
-/*  2563 */ "SLEW\0"
-/*  2568 */ "slew\0"
-/*  2573 */ "Use CPU cycle counter (Windows only)\0"
-/*  2610 */ "USEPCC\0"
-/*  2617 */ "usepcc\0"
-/*  2624 */ "Force CPU cycle counter use (Windows only)\0"
-/*  2667 */ "PCCFREQ\0"
-/*  2675 */ "pccfreq\0"
-/*  2683 */ "Register with mDNS as a NTP server\0"
-/*  2718 */ "MDNS\0"
-/*  2723 */ "mdns\0"
-/*  2728 */ "display extended usage information and exit\0"
-/*  2772 */ "help\0"
-/*  2777 */ "extended usage information passed thru pager\0"
-/*  2822 */ "more-help\0"
-/*  2832 */ "output version information and exit\0"
-/*  2868 */ "version\0"
-/*  2876 */ "NTPD\0"
-/*  2881 */ "ntpd - NTP daemon program - Ver. 4.2.8p1\n"
+/*  1517 */ "Always step the time once at startup\0"
+/*  1554 */ "FORCE_STEP_ONCE\0"
+/*  1570 */ "force-step-once\0"
+/*  1586 */ "Jail directory\0"
+/*  1601 */ "JAILDIR\0"
+/*  1609 */ "jaildir\0"
+/*  1617 */ "built without --enable-clockctl or --enable-linuxcaps or --enable-solarisprivs\0"
+/*  1696 */ "Listen on an interface name or address\0"
+/*  1735 */ "INTERFACE\0"
+/*  1745 */ "interface\0"
+/*  1755 */ "path to symmetric keys\0"
+/*  1778 */ "KEYFILE\0"
+/*  1786 */ "keyfile\0"
+/*  1794 */ "path to the log file\0"
+/*  1815 */ "LOGFILE\0"
+/*  1823 */ "logfile\0"
+/*  1831 */ "Do not listen to virtual interfaces\0"
+/*  1867 */ "NOVIRTUALIPS\0"
+/*  1880 */ "novirtualips\0"
+/*  1893 */ "Modify Multimedia Timer (Windows only)\0"
+/*  1932 */ "MODIFYMMTIMER\0"
+/*  1946 */ "modifymmtimer\0"
+/*  1960 */ "Do not fork\0"
+/*  1972 */ "NOFORK\0"
+/*  1979 */ "nofork\0"
+/*  1986 */ "Run at high priority\0"
+/*  2007 */ "NICE\0"
+/*  2012 */ "nice\0"
+/*  2017 */ "path to the PID file\0"
+/*  2038 */ "PIDFILE\0"
+/*  2046 */ "pidfile\0"
+/*  2054 */ "Process priority\0"
+/*  2071 */ "PRIORITY\0"
+/*  2080 */ "priority\0"
+/*  2089 */ "Set the time and quit\0"
+/*  2111 */ "QUIT\0"
+/*  2116 */ "quit\0"
+/*  2121 */ "Broadcast/propagation delay\0"
+/*  2149 */ "PROPAGATIONDELAY\0"
+/*  2166 */ "propagationdelay\0"
+/*  2183 */ "Save parsed configuration and quit\0"
+/*  2218 */ "SAVECONFIGQUIT\0"
+/*  2233 */ "saveconfigquit\0"
+/*  2248 */ "Statistics file location\0"
+/*  2273 */ "STATSDIR\0"
+/*  2282 */ "statsdir\0"
+/*  2291 */ "Trusted key number\0"
+/*  2310 */ "TRUSTEDKEY\0"
+/*  2321 */ "trustedkey\0"
+/*  2332 */ "Run as userid (or userid:groupid)\0"
+/*  2366 */ "USER\0"
+/*  2371 */ "user\0"
+/*  2376 */ "interval in seconds between scans for new or dropped interfaces\0"
+/*  2440 */ "UPDATEINTERVAL\0"
+/*  2455 */ "updateinterval\0"
+/*  2470 */ "make ARG an ntp variable (RW)\0"
+/*  2500 */ "VAR\0"
+/*  2504 */ "var\0"
+/*  2508 */ "make ARG an ntp variable (RW|DEF)\0"
+/*  2542 */ "DVAR\0"
+/*  2547 */ "dvar\0"
+/*  2552 */ "Seconds to wait for first clock sync\0"
+/*  2589 */ "WAIT_SYNC\0"
+/*  2599 */ "wait-sync\0"
+/*  2609 */ "Slew up to 600 seconds\0"
+/*  2632 */ "SLEW\0"
+/*  2637 */ "slew\0"
+/*  2642 */ "Use CPU cycle counter (Windows only)\0"
+/*  2679 */ "USEPCC\0"
+/*  2686 */ "usepcc\0"
+/*  2693 */ "Force CPU cycle counter use (Windows only)\0"
+/*  2736 */ "PCCFREQ\0"
+/*  2744 */ "pccfreq\0"
+/*  2752 */ "Register with mDNS as a NTP server\0"
+/*  2787 */ "MDNS\0"
+/*  2792 */ "mdns\0"
+/*  2797 */ "display extended usage information and exit\0"
+/*  2841 */ "help\0"
+/*  2846 */ "extended usage information passed thru pager\0"
+/*  2891 */ "more-help\0"
+/*  2901 */ "output version information and exit\0"
+/*  2937 */ "version\0"
+/*  2945 */ "NTPD\0"
+/*  2950 */ "ntpd - NTP daemon program - Ver. 4.2.8p1\n"
             "Usage:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \\\n"
             "\t\t[ <server1> ... <serverN> ]\n\0"
-/*  3012 */ "http://bugs.ntp.org, bugs@ntp.org\0"
-/*  3046 */ "\n\0"
-/*  3048 */ "ntpd 4.2.8p1";
+/*  3081 */ "http://bugs.ntp.org, bugs@ntp.org\0"
+/*  3115 */ "\n\0"
+/*  3117 */ "ntpd 4.2.8p1";
 
 /**
  *  ipv4 option description with
@@ -348,16 +351,28 @@ static int const aAuthnoreqCantList[] = {
 /** Compiled in flag settings for the panicgate option */
 #define PANICGATE_FLAGS     (OPTST_DISABLED)
 
+/**
+ *  force_step_once option description:
+ */
+/** Descriptive text for the force_step_once option */
+#define FORCE_STEP_ONCE_DESC      (ntpd_opt_strs+1517)
+/** Upper-cased name for the force_step_once option */
+#define FORCE_STEP_ONCE_NAME      (ntpd_opt_strs+1554)
+/** Name string for the force_step_once option */
+#define FORCE_STEP_ONCE_name      (ntpd_opt_strs+1570)
+/** Compiled in flag settings for the force_step_once option */
+#define FORCE_STEP_ONCE_FLAGS     (OPTST_DISABLED)
+
 /**
  *  jaildir option description:
  */
 #ifdef HAVE_DROPROOT
 /** Descriptive text for the jaildir option */
-#define JAILDIR_DESC      (ntpd_opt_strs+1517)
+#define JAILDIR_DESC      (ntpd_opt_strs+1586)
 /** Upper-cased name for the jaildir option */
-#define JAILDIR_NAME      (ntpd_opt_strs+1532)
+#define JAILDIR_NAME      (ntpd_opt_strs+1601)
 /** Name string for the jaildir option */
-#define JAILDIR_name      (ntpd_opt_strs+1540)
+#define JAILDIR_name      (ntpd_opt_strs+1609)
 /** Compiled in flag settings for the jaildir option */
 #define JAILDIR_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
@@ -366,19 +381,19 @@ static int const aAuthnoreqCantList[] = {
 #define JAILDIR_FLAGS     (OPTST_OMITTED | OPTST_NO_INIT)
 #define JAILDIR_NAME      NULL
 /** Descriptive text for the jaildir option */
-#define JAILDIR_DESC      (ntpd_opt_strs+1548)
-#define JAILDIR_name      (ntpd_opt_strs+1540)
+#define JAILDIR_DESC      (ntpd_opt_strs+1617)
+#define JAILDIR_name      (ntpd_opt_strs+1609)
 #endif  /* HAVE_DROPROOT */
 
 /**
  *  interface option description:
  */
 /** Descriptive text for the interface option */
-#define INTERFACE_DESC      (ntpd_opt_strs+1627)
+#define INTERFACE_DESC      (ntpd_opt_strs+1696)
 /** Upper-cased name for the interface option */
-#define INTERFACE_NAME      (ntpd_opt_strs+1666)
+#define INTERFACE_NAME      (ntpd_opt_strs+1735)
 /** Name string for the interface option */
-#define INTERFACE_name      (ntpd_opt_strs+1676)
+#define INTERFACE_name      (ntpd_opt_strs+1745)
 /** Compiled in flag settings for the interface option */
 #define INTERFACE_FLAGS     (OPTST_DISABLED | OPTST_STACKED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
@@ -387,11 +402,11 @@ static int const aAuthnoreqCantList[] = {
  *  keyfile option description:
  */
 /** Descriptive text for the keyfile option */
-#define KEYFILE_DESC      (ntpd_opt_strs+1686)
+#define KEYFILE_DESC      (ntpd_opt_strs+1755)
 /** Upper-cased name for the keyfile option */
-#define KEYFILE_NAME      (ntpd_opt_strs+1709)
+#define KEYFILE_NAME      (ntpd_opt_strs+1778)
 /** Name string for the keyfile option */
-#define KEYFILE_name      (ntpd_opt_strs+1717)
+#define KEYFILE_name      (ntpd_opt_strs+1786)
 /** Compiled in flag settings for the keyfile option */
 #define KEYFILE_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
@@ -400,11 +415,11 @@ static int const aAuthnoreqCantList[] = {
  *  logfile option description:
  */
 /** Descriptive text for the logfile option */
-#define LOGFILE_DESC      (ntpd_opt_strs+1725)
+#define LOGFILE_DESC      (ntpd_opt_strs+1794)
 /** Upper-cased name for the logfile option */
-#define LOGFILE_NAME      (ntpd_opt_strs+1746)
+#define LOGFILE_NAME      (ntpd_opt_strs+1815)
 /** Name string for the logfile option */
-#define LOGFILE_name      (ntpd_opt_strs+1754)
+#define LOGFILE_name      (ntpd_opt_strs+1823)
 /** Compiled in flag settings for the logfile option */
 #define LOGFILE_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
@@ -413,11 +428,11 @@ static int const aAuthnoreqCantList[] = {
  *  novirtualips option description:
  */
 /** Descriptive text for the novirtualips option */
-#define NOVIRTUALIPS_DESC      (ntpd_opt_strs+1762)
+#define NOVIRTUALIPS_DESC      (ntpd_opt_strs+1831)
 /** Upper-cased name for the novirtualips option */
-#define NOVIRTUALIPS_NAME      (ntpd_opt_strs+1798)
+#define NOVIRTUALIPS_NAME      (ntpd_opt_strs+1867)
 /** Name string for the novirtualips option */
-#define NOVIRTUALIPS_name      (ntpd_opt_strs+1811)
+#define NOVIRTUALIPS_name      (ntpd_opt_strs+1880)
 /** Compiled in flag settings for the novirtualips option */
 #define NOVIRTUALIPS_FLAGS     (OPTST_DISABLED)
 
@@ -426,11 +441,11 @@ static int const aAuthnoreqCantList[] = {
  */
 #ifdef SYS_WINNT
 /** Descriptive text for the modifymmtimer option */
-#define MODIFYMMTIMER_DESC      (ntpd_opt_strs+1824)
+#define MODIFYMMTIMER_DESC      (ntpd_opt_strs+1893)
 /** Upper-cased name for the modifymmtimer option */
-#define MODIFYMMTIMER_NAME      (ntpd_opt_strs+1863)
+#define MODIFYMMTIMER_NAME      (ntpd_opt_strs+1932)
 /** Name string for the modifymmtimer option */
-#define MODIFYMMTIMER_name      (ntpd_opt_strs+1877)
+#define MODIFYMMTIMER_name      (ntpd_opt_strs+1946)
 /** Compiled in flag settings for the modifymmtimer option */
 #define MODIFYMMTIMER_FLAGS     (OPTST_DISABLED)
 
@@ -446,11 +461,11 @@ static int const aAuthnoreqCantList[] = {
  *  "Must also have options" and "Incompatible options":
  */
 /** Descriptive text for the nofork option */
-#define NOFORK_DESC      (ntpd_opt_strs+1891)
+#define NOFORK_DESC      (ntpd_opt_strs+1960)
 /** Upper-cased name for the nofork option */
-#define NOFORK_NAME      (ntpd_opt_strs+1903)
+#define NOFORK_NAME      (ntpd_opt_strs+1972)
 /** Name string for the nofork option */
-#define NOFORK_name      (ntpd_opt_strs+1910)
+#define NOFORK_name      (ntpd_opt_strs+1979)
 /** Other options that appear in conjunction with the nofork option */
 static int const aNoforkCantList[] = {
     INDEX_OPT_WAIT_SYNC, NO_EQUIVALENT };
@@ -461,11 +476,11 @@ static int const aNoforkCantList[] = {
  *  nice option description:
  */
 /** Descriptive text for the nice option */
-#define NICE_DESC      (ntpd_opt_strs+1917)
+#define NICE_DESC      (ntpd_opt_strs+1986)
 /** Upper-cased name for the nice option */
-#define NICE_NAME      (ntpd_opt_strs+1938)
+#define NICE_NAME      (ntpd_opt_strs+2007)
 /** Name string for the nice option */
-#define NICE_name      (ntpd_opt_strs+1943)
+#define NICE_name      (ntpd_opt_strs+2012)
 /** Compiled in flag settings for the nice option */
 #define NICE_FLAGS     (OPTST_DISABLED)
 
@@ -473,11 +488,11 @@ static int const aNoforkCantList[] = {
  *  pidfile option description:
  */
 /** Descriptive text for the pidfile option */
-#define PIDFILE_DESC      (ntpd_opt_strs+1948)
+#define PIDFILE_DESC      (ntpd_opt_strs+2017)
 /** Upper-cased name for the pidfile option */
-#define PIDFILE_NAME      (ntpd_opt_strs+1969)
+#define PIDFILE_NAME      (ntpd_opt_strs+2038)
 /** Name string for the pidfile option */
-#define PIDFILE_name      (ntpd_opt_strs+1977)
+#define PIDFILE_name      (ntpd_opt_strs+2046)
 /** Compiled in flag settings for the pidfile option */
 #define PIDFILE_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
@@ -486,11 +501,11 @@ static int const aNoforkCantList[] = {
  *  priority option description:
  */
 /** Descriptive text for the priority option */
-#define PRIORITY_DESC      (ntpd_opt_strs+1985)
+#define PRIORITY_DESC      (ntpd_opt_strs+2054)
 /** Upper-cased name for the priority option */
-#define PRIORITY_NAME      (ntpd_opt_strs+2002)
+#define PRIORITY_NAME      (ntpd_opt_strs+2071)
 /** Name string for the priority option */
-#define PRIORITY_name      (ntpd_opt_strs+2011)
+#define PRIORITY_name      (ntpd_opt_strs+2080)
 /** Compiled in flag settings for the priority option */
 #define PRIORITY_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
@@ -500,11 +515,11 @@ static int const aNoforkCantList[] = {
  *  "Must also have options" and "Incompatible options":
  */
 /** Descriptive text for the quit option */
-#define QUIT_DESC      (ntpd_opt_strs+2020)
+#define QUIT_DESC      (ntpd_opt_strs+2089)
 /** Upper-cased name for the quit option */
-#define QUIT_NAME      (ntpd_opt_strs+2042)
+#define QUIT_NAME      (ntpd_opt_strs+2111)
 /** Name string for the quit option */
-#define QUIT_name      (ntpd_opt_strs+2047)
+#define QUIT_name      (ntpd_opt_strs+2116)
 /** Other options that appear in conjunction with the quit option */
 static int const aQuitCantList[] = {
     INDEX_OPT_SAVECONFIGQUIT,
@@ -516,11 +531,11 @@ static int const aQuitCantList[] = {
  *  propagationdelay option description:
  */
 /** Descriptive text for the propagationdelay option */
-#define PROPAGATIONDELAY_DESC      (ntpd_opt_strs+2052)
+#define PROPAGATIONDELAY_DESC      (ntpd_opt_strs+2121)
 /** Upper-cased name for the propagationdelay option */
-#define PROPAGATIONDELAY_NAME      (ntpd_opt_strs+2080)
+#define PROPAGATIONDELAY_NAME      (ntpd_opt_strs+2149)
 /** Name string for the propagationdelay option */
-#define PROPAGATIONDELAY_name      (ntpd_opt_strs+2097)
+#define PROPAGATIONDELAY_name      (ntpd_opt_strs+2166)
 /** Compiled in flag settings for the propagationdelay option */
 #define PROPAGATIONDELAY_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
@@ -531,11 +546,11 @@ static int const aQuitCantList[] = {
  */
 #ifdef SAVECONFIG
 /** Descriptive text for the saveconfigquit option */
-#define SAVECONFIGQUIT_DESC      (ntpd_opt_strs+2114)
+#define SAVECONFIGQUIT_DESC      (ntpd_opt_strs+2183)
 /** Upper-cased name for the saveconfigquit option */
-#define SAVECONFIGQUIT_NAME      (ntpd_opt_strs+2149)
+#define SAVECONFIGQUIT_NAME      (ntpd_opt_strs+2218)
 /** Name string for the saveconfigquit option */
-#define SAVECONFIGQUIT_name      (ntpd_opt_strs+2164)
+#define SAVECONFIGQUIT_name      (ntpd_opt_strs+2233)
 /** Other options that appear in conjunction with the saveconfigquit option */
 static int const aSaveconfigquitCantList[] = {
     INDEX_OPT_QUIT,
@@ -556,11 +571,11 @@ static int const aSaveconfigquitCantList[] = {
  *  statsdir option description:
  */
 /** Descriptive text for the statsdir option */
-#define STATSDIR_DESC      (ntpd_opt_strs+2179)
+#define STATSDIR_DESC      (ntpd_opt_strs+2248)
 /** Upper-cased name for the statsdir option */
-#define STATSDIR_NAME      (ntpd_opt_strs+2204)
+#define STATSDIR_NAME      (ntpd_opt_strs+2273)
 /** Name string for the statsdir option */
-#define STATSDIR_name      (ntpd_opt_strs+2213)
+#define STATSDIR_name      (ntpd_opt_strs+2282)
 /** Compiled in flag settings for the statsdir option */
 #define STATSDIR_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
@@ -569,11 +584,11 @@ static int const aSaveconfigquitCantList[] = {
  *  trustedkey option description:
  */
 /** Descriptive text for the trustedkey option */
-#define TRUSTEDKEY_DESC      (ntpd_opt_strs+2222)
+#define TRUSTEDKEY_DESC      (ntpd_opt_strs+2291)
 /** Upper-cased name for the trustedkey option */
-#define TRUSTEDKEY_NAME      (ntpd_opt_strs+2241)
+#define TRUSTEDKEY_NAME      (ntpd_opt_strs+2310)
 /** Name string for the trustedkey option */
-#define TRUSTEDKEY_name      (ntpd_opt_strs+2252)
+#define TRUSTEDKEY_name      (ntpd_opt_strs+2321)
 /** Compiled in flag settings for the trustedkey option */
 #define TRUSTEDKEY_FLAGS     (OPTST_DISABLED | OPTST_STACKED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
@@ -583,11 +598,11 @@ static int const aSaveconfigquitCantList[] = {
  */
 #ifdef HAVE_DROPROOT
 /** Descriptive text for the user option */
-#define USER_DESC      (ntpd_opt_strs+2263)
+#define USER_DESC      (ntpd_opt_strs+2332)
 /** Upper-cased name for the user option */
-#define USER_NAME      (ntpd_opt_strs+2297)
+#define USER_NAME      (ntpd_opt_strs+2366)
 /** Name string for the user option */
-#define USER_name      (ntpd_opt_strs+2302)
+#define USER_name      (ntpd_opt_strs+2371)
 /** Compiled in flag settings for the user option */
 #define USER_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
@@ -596,19 +611,19 @@ static int const aSaveconfigquitCantList[] = {
 #define USER_FLAGS     (OPTST_OMITTED | OPTST_NO_INIT)
 #define USER_NAME      NULL
 /** Descriptive text for the user option */
-#define USER_DESC      (ntpd_opt_strs+1548)
-#define USER_name      (ntpd_opt_strs+2302)
+#define USER_DESC      (ntpd_opt_strs+1617)
+#define USER_name      (ntpd_opt_strs+2371)
 #endif  /* HAVE_DROPROOT */
 
 /**
  *  updateinterval option description:
  */
 /** Descriptive text for the updateinterval option */
-#define UPDATEINTERVAL_DESC      (ntpd_opt_strs+2307)
+#define UPDATEINTERVAL_DESC      (ntpd_opt_strs+2376)
 /** Upper-cased name for the updateinterval option */
-#define UPDATEINTERVAL_NAME      (ntpd_opt_strs+2371)
+#define UPDATEINTERVAL_NAME      (ntpd_opt_strs+2440)
 /** Name string for the updateinterval option */
-#define UPDATEINTERVAL_name      (ntpd_opt_strs+2386)
+#define UPDATEINTERVAL_name      (ntpd_opt_strs+2455)
 /** Compiled in flag settings for the updateinterval option */
 #define UPDATEINTERVAL_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
@@ -617,11 +632,11 @@ static int const aSaveconfigquitCantList[] = {
  *  var option description:
  */
 /** Descriptive text for the var option */
-#define VAR_DESC      (ntpd_opt_strs+2401)
+#define VAR_DESC      (ntpd_opt_strs+2470)
 /** Upper-cased name for the var option */
-#define VAR_NAME      (ntpd_opt_strs+2431)
+#define VAR_NAME      (ntpd_opt_strs+2500)
 /** Name string for the var option */
-#define VAR_name      (ntpd_opt_strs+2435)
+#define VAR_name      (ntpd_opt_strs+2504)
 /** Compiled in flag settings for the var option */
 #define VAR_FLAGS     (OPTST_DISABLED | OPTST_STACKED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
@@ -630,11 +645,11 @@ static int const aSaveconfigquitCantList[] = {
  *  dvar option description:
  */
 /** Descriptive text for the dvar option */
-#define DVAR_DESC      (ntpd_opt_strs+2439)
+#define DVAR_DESC      (ntpd_opt_strs+2508)
 /** Upper-cased name for the dvar option */
-#define DVAR_NAME      (ntpd_opt_strs+2473)
+#define DVAR_NAME      (ntpd_opt_strs+2542)
 /** Name string for the dvar option */
-#define DVAR_name      (ntpd_opt_strs+2478)
+#define DVAR_name      (ntpd_opt_strs+2547)
 /** Compiled in flag settings for the dvar option */
 #define DVAR_FLAGS     (OPTST_DISABLED | OPTST_STACKED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
@@ -645,11 +660,11 @@ static int const aSaveconfigquitCantList[] = {
  */
 #ifdef HAVE_WORKING_FORK
 /** Descriptive text for the wait-sync option */
-#define WAIT_SYNC_DESC      (ntpd_opt_strs+2483)
+#define WAIT_SYNC_DESC      (ntpd_opt_strs+2552)
 /** Upper-cased name for the wait-sync option */
-#define WAIT_SYNC_NAME      (ntpd_opt_strs+2520)
+#define WAIT_SYNC_NAME      (ntpd_opt_strs+2589)
 /** Name string for the wait-sync option */
-#define WAIT_SYNC_name      (ntpd_opt_strs+2530)
+#define WAIT_SYNC_name      (ntpd_opt_strs+2599)
 /** Other options that appear in conjunction with the wait-sync option */
 static int const aWait_SyncCantList[] = {
     INDEX_OPT_NOFORK,
@@ -671,11 +686,11 @@ static int const aWait_SyncCantList[] = {
  *  slew option description:
  */
 /** Descriptive text for the slew option */
-#define SLEW_DESC      (ntpd_opt_strs+2540)
+#define SLEW_DESC      (ntpd_opt_strs+2609)
 /** Upper-cased name for the slew option */
-#define SLEW_NAME      (ntpd_opt_strs+2563)
+#define SLEW_NAME      (ntpd_opt_strs+2632)
 /** Name string for the slew option */
-#define SLEW_name      (ntpd_opt_strs+2568)
+#define SLEW_name      (ntpd_opt_strs+2637)
 /** Compiled in flag settings for the slew option */
 #define SLEW_FLAGS     (OPTST_DISABLED)
 
@@ -684,11 +699,11 @@ static int const aWait_SyncCantList[] = {
  */
 #ifdef SYS_WINNT
 /** Descriptive text for the usepcc option */
-#define USEPCC_DESC      (ntpd_opt_strs+2573)
+#define USEPCC_DESC      (ntpd_opt_strs+2642)
 /** Upper-cased name for the usepcc option */
-#define USEPCC_NAME      (ntpd_opt_strs+2610)
+#define USEPCC_NAME      (ntpd_opt_strs+2679)
 /** Name string for the usepcc option */
-#define USEPCC_name      (ntpd_opt_strs+2617)
+#define USEPCC_name      (ntpd_opt_strs+2686)
 /** Compiled in flag settings for the usepcc option */
 #define USEPCC_FLAGS     (OPTST_DISABLED)
 
@@ -704,11 +719,11 @@ static int const aWait_SyncCantList[] = {
  */
 #ifdef SYS_WINNT
 /** Descriptive text for the pccfreq option */
-#define PCCFREQ_DESC      (ntpd_opt_strs+2624)
+#define PCCFREQ_DESC      (ntpd_opt_strs+2693)
 /** Upper-cased name for the pccfreq option */
-#define PCCFREQ_NAME      (ntpd_opt_strs+2667)
+#define PCCFREQ_NAME      (ntpd_opt_strs+2736)
 /** Name string for the pccfreq option */
-#define PCCFREQ_name      (ntpd_opt_strs+2675)
+#define PCCFREQ_name      (ntpd_opt_strs+2744)
 /** Compiled in flag settings for the pccfreq option */
 #define PCCFREQ_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
@@ -725,11 +740,11 @@ static int const aWait_SyncCantList[] = {
  */
 #ifdef HAVE_DNSREGISTRATION
 /** Descriptive text for the mdns option */
-#define MDNS_DESC      (ntpd_opt_strs+2683)
+#define MDNS_DESC      (ntpd_opt_strs+2752)
 /** Upper-cased name for the mdns option */
-#define MDNS_NAME      (ntpd_opt_strs+2718)
+#define MDNS_NAME      (ntpd_opt_strs+2787)
 /** Name string for the mdns option */
-#define MDNS_name      (ntpd_opt_strs+2723)
+#define MDNS_name      (ntpd_opt_strs+2792)
 /** Compiled in flag settings for the mdns option */
 #define MDNS_FLAGS     (OPTST_DISABLED)
 
@@ -743,11 +758,11 @@ static int const aWait_SyncCantList[] = {
 /*
  *  Help/More_Help/Version option descriptions:
  */
-#define HELP_DESC       (ntpd_opt_strs+2728)
-#define HELP_name       (ntpd_opt_strs+2772)
+#define HELP_DESC       (ntpd_opt_strs+2797)
+#define HELP_name       (ntpd_opt_strs+2841)
 #ifdef HAVE_WORKING_FORK
-#define MORE_HELP_DESC  (ntpd_opt_strs+2777)
-#define MORE_HELP_name  (ntpd_opt_strs+2822)
+#define MORE_HELP_DESC  (ntpd_opt_strs+2846)
+#define MORE_HELP_name  (ntpd_opt_strs+2891)
 #define MORE_HELP_FLAGS (OPTST_IMM | OPTST_NO_INIT)
 #else
 #define MORE_HELP_DESC  HELP_DESC
@@ -760,8 +775,8 @@ static int const aWait_SyncCantList[] = {
 #  define VER_FLAGS     (OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \
                          OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT)
 #endif
-#define VER_DESC        (ntpd_opt_strs+2832)
-#define VER_name        (ntpd_opt_strs+2868)
+#define VER_DESC        (ntpd_opt_strs+2901)
+#define VER_name        (ntpd_opt_strs+2937)
 /**
  *  Declare option callback procedures
  */
@@ -901,8 +916,20 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ PANICGATE_DESC, PANICGATE_NAME, PANICGATE_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 10, VALUE_OPT_JAILDIR,
-     /* equiv idx, value */ 10, VALUE_OPT_JAILDIR,
+  {  /* entry idx, value */ 10, VALUE_OPT_FORCE_STEP_ONCE,
+     /* equiv idx, value */ 10, VALUE_OPT_FORCE_STEP_ONCE,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ FORCE_STEP_ONCE_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --force_step_once */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ FORCE_STEP_ONCE_DESC, FORCE_STEP_ONCE_NAME, FORCE_STEP_ONCE_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 11, VALUE_OPT_JAILDIR,
+     /* equiv idx, value */ 11, VALUE_OPT_JAILDIR,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ JAILDIR_FLAGS, 0,
@@ -913,8 +940,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ JAILDIR_DESC, JAILDIR_NAME, JAILDIR_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 11, VALUE_OPT_INTERFACE,
-     /* equiv idx, value */ 11, VALUE_OPT_INTERFACE,
+  {  /* entry idx, value */ 12, VALUE_OPT_INTERFACE,
+     /* equiv idx, value */ 12, VALUE_OPT_INTERFACE,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, NOLIMIT, 0,
      /* opt state flags  */ INTERFACE_FLAGS, 0,
@@ -925,8 +952,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ INTERFACE_DESC, INTERFACE_NAME, INTERFACE_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 12, VALUE_OPT_KEYFILE,
-     /* equiv idx, value */ 12, VALUE_OPT_KEYFILE,
+  {  /* entry idx, value */ 13, VALUE_OPT_KEYFILE,
+     /* equiv idx, value */ 13, VALUE_OPT_KEYFILE,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ KEYFILE_FLAGS, 0,
@@ -937,8 +964,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ KEYFILE_DESC, KEYFILE_NAME, KEYFILE_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 13, VALUE_OPT_LOGFILE,
-     /* equiv idx, value */ 13, VALUE_OPT_LOGFILE,
+  {  /* entry idx, value */ 14, VALUE_OPT_LOGFILE,
+     /* equiv idx, value */ 14, VALUE_OPT_LOGFILE,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ LOGFILE_FLAGS, 0,
@@ -949,8 +976,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ LOGFILE_DESC, LOGFILE_NAME, LOGFILE_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 14, VALUE_OPT_NOVIRTUALIPS,
-     /* equiv idx, value */ 14, VALUE_OPT_NOVIRTUALIPS,
+  {  /* entry idx, value */ 15, VALUE_OPT_NOVIRTUALIPS,
+     /* equiv idx, value */ 15, VALUE_OPT_NOVIRTUALIPS,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ NOVIRTUALIPS_FLAGS, 0,
@@ -961,8 +988,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ NOVIRTUALIPS_DESC, NOVIRTUALIPS_NAME, NOVIRTUALIPS_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 15, VALUE_OPT_MODIFYMMTIMER,
-     /* equiv idx, value */ 15, VALUE_OPT_MODIFYMMTIMER,
+  {  /* entry idx, value */ 16, VALUE_OPT_MODIFYMMTIMER,
+     /* equiv idx, value */ 16, VALUE_OPT_MODIFYMMTIMER,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ MODIFYMMTIMER_FLAGS, 0,
@@ -973,8 +1000,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ MODIFYMMTIMER_DESC, MODIFYMMTIMER_NAME, MODIFYMMTIMER_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 16, VALUE_OPT_NOFORK,
-     /* equiv idx, value */ 16, VALUE_OPT_NOFORK,
+  {  /* entry idx, value */ 17, VALUE_OPT_NOFORK,
+     /* equiv idx, value */ 17, VALUE_OPT_NOFORK,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ NOFORK_FLAGS, 0,
@@ -985,8 +1012,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ NOFORK_DESC, NOFORK_NAME, NOFORK_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 17, VALUE_OPT_NICE,
-     /* equiv idx, value */ 17, VALUE_OPT_NICE,
+  {  /* entry idx, value */ 18, VALUE_OPT_NICE,
+     /* equiv idx, value */ 18, VALUE_OPT_NICE,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ NICE_FLAGS, 0,
@@ -997,8 +1024,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ NICE_DESC, NICE_NAME, NICE_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 18, VALUE_OPT_PIDFILE,
-     /* equiv idx, value */ 18, VALUE_OPT_PIDFILE,
+  {  /* entry idx, value */ 19, VALUE_OPT_PIDFILE,
+     /* equiv idx, value */ 19, VALUE_OPT_PIDFILE,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ PIDFILE_FLAGS, 0,
@@ -1009,8 +1036,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ PIDFILE_DESC, PIDFILE_NAME, PIDFILE_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 19, VALUE_OPT_PRIORITY,
-     /* equiv idx, value */ 19, VALUE_OPT_PRIORITY,
+  {  /* entry idx, value */ 20, VALUE_OPT_PRIORITY,
+     /* equiv idx, value */ 20, VALUE_OPT_PRIORITY,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ PRIORITY_FLAGS, 0,
@@ -1021,8 +1048,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ PRIORITY_DESC, PRIORITY_NAME, PRIORITY_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 20, VALUE_OPT_QUIT,
-     /* equiv idx, value */ 20, VALUE_OPT_QUIT,
+  {  /* entry idx, value */ 21, VALUE_OPT_QUIT,
+     /* equiv idx, value */ 21, VALUE_OPT_QUIT,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ QUIT_FLAGS, 0,
@@ -1033,8 +1060,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ QUIT_DESC, QUIT_NAME, QUIT_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 21, VALUE_OPT_PROPAGATIONDELAY,
-     /* equiv idx, value */ 21, VALUE_OPT_PROPAGATIONDELAY,
+  {  /* entry idx, value */ 22, VALUE_OPT_PROPAGATIONDELAY,
+     /* equiv idx, value */ 22, VALUE_OPT_PROPAGATIONDELAY,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ PROPAGATIONDELAY_FLAGS, 0,
@@ -1045,8 +1072,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ PROPAGATIONDELAY_DESC, PROPAGATIONDELAY_NAME, PROPAGATIONDELAY_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 22, VALUE_OPT_SAVECONFIGQUIT,
-     /* equiv idx, value */ 22, VALUE_OPT_SAVECONFIGQUIT,
+  {  /* entry idx, value */ 23, VALUE_OPT_SAVECONFIGQUIT,
+     /* equiv idx, value */ 23, VALUE_OPT_SAVECONFIGQUIT,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ SAVECONFIGQUIT_FLAGS, 0,
@@ -1057,8 +1084,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ SAVECONFIGQUIT_DESC, SAVECONFIGQUIT_NAME, SAVECONFIGQUIT_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 23, VALUE_OPT_STATSDIR,
-     /* equiv idx, value */ 23, VALUE_OPT_STATSDIR,
+  {  /* entry idx, value */ 24, VALUE_OPT_STATSDIR,
+     /* equiv idx, value */ 24, VALUE_OPT_STATSDIR,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ STATSDIR_FLAGS, 0,
@@ -1069,8 +1096,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ STATSDIR_DESC, STATSDIR_NAME, STATSDIR_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 24, VALUE_OPT_TRUSTEDKEY,
-     /* equiv idx, value */ 24, VALUE_OPT_TRUSTEDKEY,
+  {  /* entry idx, value */ 25, VALUE_OPT_TRUSTEDKEY,
+     /* equiv idx, value */ 25, VALUE_OPT_TRUSTEDKEY,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, NOLIMIT, 0,
      /* opt state flags  */ TRUSTEDKEY_FLAGS, 0,
@@ -1081,8 +1108,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ TRUSTEDKEY_DESC, TRUSTEDKEY_NAME, TRUSTEDKEY_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 25, VALUE_OPT_USER,
-     /* equiv idx, value */ 25, VALUE_OPT_USER,
+  {  /* entry idx, value */ 26, VALUE_OPT_USER,
+     /* equiv idx, value */ 26, VALUE_OPT_USER,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ USER_FLAGS, 0,
@@ -1093,8 +1120,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ USER_DESC, USER_NAME, USER_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 26, VALUE_OPT_UPDATEINTERVAL,
-     /* equiv idx, value */ 26, VALUE_OPT_UPDATEINTERVAL,
+  {  /* entry idx, value */ 27, VALUE_OPT_UPDATEINTERVAL,
+     /* equiv idx, value */ 27, VALUE_OPT_UPDATEINTERVAL,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ UPDATEINTERVAL_FLAGS, 0,
@@ -1105,8 +1132,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ UPDATEINTERVAL_DESC, UPDATEINTERVAL_NAME, UPDATEINTERVAL_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 27, VALUE_OPT_VAR,
-     /* equiv idx, value */ 27, VALUE_OPT_VAR,
+  {  /* entry idx, value */ 28, VALUE_OPT_VAR,
+     /* equiv idx, value */ 28, VALUE_OPT_VAR,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, NOLIMIT, 0,
      /* opt state flags  */ VAR_FLAGS, 0,
@@ -1117,8 +1144,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ VAR_DESC, VAR_NAME, VAR_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 28, VALUE_OPT_DVAR,
-     /* equiv idx, value */ 28, VALUE_OPT_DVAR,
+  {  /* entry idx, value */ 29, VALUE_OPT_DVAR,
+     /* equiv idx, value */ 29, VALUE_OPT_DVAR,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, NOLIMIT, 0,
      /* opt state flags  */ DVAR_FLAGS, 0,
@@ -1129,8 +1156,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ DVAR_DESC, DVAR_NAME, DVAR_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 29, VALUE_OPT_WAIT_SYNC,
-     /* equiv idx, value */ 29, VALUE_OPT_WAIT_SYNC,
+  {  /* entry idx, value */ 30, VALUE_OPT_WAIT_SYNC,
+     /* equiv idx, value */ 30, VALUE_OPT_WAIT_SYNC,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ WAIT_SYNC_FLAGS, 0,
@@ -1141,8 +1168,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ WAIT_SYNC_DESC, WAIT_SYNC_NAME, WAIT_SYNC_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 30, VALUE_OPT_SLEW,
-     /* equiv idx, value */ 30, VALUE_OPT_SLEW,
+  {  /* entry idx, value */ 31, VALUE_OPT_SLEW,
+     /* equiv idx, value */ 31, VALUE_OPT_SLEW,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ SLEW_FLAGS, 0,
@@ -1153,8 +1180,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ SLEW_DESC, SLEW_NAME, SLEW_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 31, VALUE_OPT_USEPCC,
-     /* equiv idx, value */ 31, VALUE_OPT_USEPCC,
+  {  /* entry idx, value */ 32, VALUE_OPT_USEPCC,
+     /* equiv idx, value */ 32, VALUE_OPT_USEPCC,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ USEPCC_FLAGS, 0,
@@ -1165,8 +1192,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ USEPCC_DESC, USEPCC_NAME, USEPCC_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 32, VALUE_OPT_PCCFREQ,
-     /* equiv idx, value */ 32, VALUE_OPT_PCCFREQ,
+  {  /* entry idx, value */ 33, VALUE_OPT_PCCFREQ,
+     /* equiv idx, value */ 33, VALUE_OPT_PCCFREQ,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ PCCFREQ_FLAGS, 0,
@@ -1177,8 +1204,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ PCCFREQ_DESC, PCCFREQ_NAME, PCCFREQ_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 33, VALUE_OPT_MDNS,
-     /* equiv idx, value */ 33, VALUE_OPT_MDNS,
+  {  /* entry idx, value */ 34, VALUE_OPT_MDNS,
+     /* equiv idx, value */ 34, VALUE_OPT_MDNS,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ MDNS_FLAGS, 0,
@@ -1231,21 +1258,21 @@ static tOptDesc optDesc[OPTION_CT] = {
 
 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 /** Reference to the upper cased version of ntpd. */
-#define zPROGNAME       (ntpd_opt_strs+2876)
+#define zPROGNAME       (ntpd_opt_strs+2945)
 /** Reference to the title line for ntpd usage. */
-#define zUsageTitle     (ntpd_opt_strs+2881)
+#define zUsageTitle     (ntpd_opt_strs+2950)
 /** There is no ntpd configuration file. */
 #define zRcName         NULL
 /** There are no directories to search for ntpd config files. */
 #define apzHomeList     NULL
 /** The ntpd program bug email address. */
-#define zBugsAddr       (ntpd_opt_strs+3012)
+#define zBugsAddr       (ntpd_opt_strs+3081)
 /** Clarification/explanation of what ntpd does. */
-#define zExplain        (ntpd_opt_strs+3046)
+#define zExplain        (ntpd_opt_strs+3115)
 /** Extra detail explaining what ntpd does. */
 #define zDetail         (NULL)
 /** The full version string for ntpd. */
-#define zFullVersion    (ntpd_opt_strs+3048)
+#define zFullVersion    (ntpd_opt_strs+3117)
 /* extracted from optcode.tlib near line 364 */
 
 #if defined(ENABLE_NLS)
@@ -1367,7 +1394,7 @@ tOptions ntpdOptions = {
       NO_EQUIVALENT, /* '-#' option index */
       NO_EQUIVALENT /* index of default opt */
     },
-    37 /* full option count */, 34 /* user option count */,
+    38 /* full option count */, 35 /* user option count */,
     ntpd_full_usage, ntpd_short_usage,
     NULL, NULL,
     PKGDATADIR, ntpd_packager_info
@@ -1552,6 +1579,9 @@ implied warranty.\n"));
   /* referenced via ntpdOptions.pOptDesc->pzText */
   puts(_("Allow the first adjustment to be Big"));
 
+  /* referenced via ntpdOptions.pOptDesc->pzText */
+  puts(_("Always step the time once at startup"));
+
   /* referenced via ntpdOptions.pOptDesc->pzText */
   puts(_("Jail directory"));
 
@@ -1662,14 +1692,14 @@ Usage:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \\\n\
   puts(_("allocation of %d bytes failed\n"));
 #line 53 "../init.c"
   puts(_("AutoOpts function called without option descriptor\n"));
-#line 86 "../init.c"
+#line 90 "../init.c"
   puts(_("\tThis exceeds the compiled library version:  "));
-#line 84 "../init.c"
+#line 88 "../init.c"
   puts(_("Automated Options Processing Error!\n"
        "\t%s called AutoOpts function with structure version %d:%d:%d.\n"));
 #line 80 "../autoopts.c"
   puts(_("realloc of %d bytes at 0x%p failed\n"));
-#line 88 "../init.c"
+#line 92 "../init.c"
   puts(_("\tThis is less than the minimum library version:  "));
 #line 121 "../version.c"
   puts(_("Automated Options version %s\n"
index f4eb47b8e355b4b8cf0c760a0fe39cb82a9507a9..a040cb3ee77297d7fa2580078d541deaf6ab54e3 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *  EDIT THIS FILE WITH CAUTION  (ntpd-opts.h)
  *
- *  It has been AutoGen-ed  February  4, 2015 at 02:39:16 AM by AutoGen 5.18.5pre4
+ *  It has been AutoGen-ed  March 30, 2015 at 10:48:00 AM by AutoGen 5.18.4
  *  From the definitions    ntpd-opts.def
  *  and the template file   options
  *
@@ -74,36 +74,37 @@ typedef enum {
     INDEX_OPT_SET_DEBUG_LEVEL   =  7,
     INDEX_OPT_DRIFTFILE         =  8,
     INDEX_OPT_PANICGATE         =  9,
-    INDEX_OPT_JAILDIR           = 10,
-    INDEX_OPT_INTERFACE         = 11,
-    INDEX_OPT_KEYFILE           = 12,
-    INDEX_OPT_LOGFILE           = 13,
-    INDEX_OPT_NOVIRTUALIPS      = 14,
-    INDEX_OPT_MODIFYMMTIMER     = 15,
-    INDEX_OPT_NOFORK            = 16,
-    INDEX_OPT_NICE              = 17,
-    INDEX_OPT_PIDFILE           = 18,
-    INDEX_OPT_PRIORITY          = 19,
-    INDEX_OPT_QUIT              = 20,
-    INDEX_OPT_PROPAGATIONDELAY  = 21,
-    INDEX_OPT_SAVECONFIGQUIT    = 22,
-    INDEX_OPT_STATSDIR          = 23,
-    INDEX_OPT_TRUSTEDKEY        = 24,
-    INDEX_OPT_USER              = 25,
-    INDEX_OPT_UPDATEINTERVAL    = 26,
-    INDEX_OPT_VAR               = 27,
-    INDEX_OPT_DVAR              = 28,
-    INDEX_OPT_WAIT_SYNC         = 29,
-    INDEX_OPT_SLEW              = 30,
-    INDEX_OPT_USEPCC            = 31,
-    INDEX_OPT_PCCFREQ           = 32,
-    INDEX_OPT_MDNS              = 33,
-    INDEX_OPT_VERSION           = 34,
-    INDEX_OPT_HELP              = 35,
-    INDEX_OPT_MORE_HELP         = 36
+    INDEX_OPT_FORCE_STEP_ONCE   = 10,
+    INDEX_OPT_JAILDIR           = 11,
+    INDEX_OPT_INTERFACE         = 12,
+    INDEX_OPT_KEYFILE           = 13,
+    INDEX_OPT_LOGFILE           = 14,
+    INDEX_OPT_NOVIRTUALIPS      = 15,
+    INDEX_OPT_MODIFYMMTIMER     = 16,
+    INDEX_OPT_NOFORK            = 17,
+    INDEX_OPT_NICE              = 18,
+    INDEX_OPT_PIDFILE           = 19,
+    INDEX_OPT_PRIORITY          = 20,
+    INDEX_OPT_QUIT              = 21,
+    INDEX_OPT_PROPAGATIONDELAY  = 22,
+    INDEX_OPT_SAVECONFIGQUIT    = 23,
+    INDEX_OPT_STATSDIR          = 24,
+    INDEX_OPT_TRUSTEDKEY        = 25,
+    INDEX_OPT_USER              = 26,
+    INDEX_OPT_UPDATEINTERVAL    = 27,
+    INDEX_OPT_VAR               = 28,
+    INDEX_OPT_DVAR              = 29,
+    INDEX_OPT_WAIT_SYNC         = 30,
+    INDEX_OPT_SLEW              = 31,
+    INDEX_OPT_USEPCC            = 32,
+    INDEX_OPT_PCCFREQ           = 33,
+    INDEX_OPT_MDNS              = 34,
+    INDEX_OPT_VERSION           = 35,
+    INDEX_OPT_HELP              = 36,
+    INDEX_OPT_MORE_HELP         = 37
 } teOptIndex;
 /** count of all options for ntpd */
-#define OPTION_CT    37
+#define OPTION_CT    38
 /** ntpd version */
 #define NTPD_VERSION       "4.2.8p1"
 /** Full ntpd version text */
@@ -199,6 +200,10 @@ typedef enum {
 #  warning undefining PANICGATE due to option name conflict
 #  undef   PANICGATE
 # endif
+# ifdef    FORCE_STEP_ONCE
+#  warning undefining FORCE_STEP_ONCE due to option name conflict
+#  undef   FORCE_STEP_ONCE
+# endif
 # ifdef    JAILDIR
 #  warning undefining JAILDIR due to option name conflict
 #  undef   JAILDIR
@@ -306,6 +311,7 @@ typedef enum {
 # undef SET_DEBUG_LEVEL
 # undef DRIFTFILE
 # undef PANICGATE
+# undef FORCE_STEP_ONCE
 # undef JAILDIR
 # undef INTERFACE
 # undef KEYFILE
@@ -348,6 +354,7 @@ typedef enum {
 #define OPT_VALUE_SET_DEBUG_LEVEL (DESC(SET_DEBUG_LEVEL).optArg.argInt)
 #define VALUE_OPT_DRIFTFILE      'f'
 #define VALUE_OPT_PANICGATE      'g'
+#define VALUE_OPT_FORCE_STEP_ONCE 'G'
 #define VALUE_OPT_JAILDIR        'i'
 #define VALUE_OPT_INTERFACE      'I'
 #define VALUE_OPT_KEYFILE        'k'
index 110504e5c07665bc34ab7a276c48610a559089ed..140273cb55e66a8bd15194c8db37d9215c14d683 100644 (file)
@@ -87,7 +87,7 @@ flag = {
        by default.
        This is the same operation as the
        @code{driftfile} @kbd{driftfile}
-       configuration specification in the 
+       configuration specification in the
        @file{/etc/ntp.conf}
        file.
        _EndOfDoc_;
@@ -114,6 +114,21 @@ flag = {
        _EndOfDoc_;
 };
 
+flag = {
+    name      = force_step_once;
+    value     = G;
+    descrip   = "Always step the time once at startup";
+    doc = <<-  _EndOfDoc_
+       Normally,
+       @code{ntpd}
+       steps the time if the time offset exceeds the step threshold, which is 128 ms by default, and otherwise always slews the time. This option allows the time to be stepped always once at startup, so the highest time accuracy can be achieved quickly. However, this may also cause the time to be stepped back, so care must be taken if sensitive applications are used. Using this option also implies
+       @code{-g}.
+       See the
+       @code{tinker}
+       configuration file directive for other options.
+       _EndOfDoc_;
+};
+
 flag = {
     ifdef     = HAVE_DROPROOT;
     name      = jaildir;
@@ -150,7 +165,7 @@ flag = {
        given interface name.  This option may appear multiple times.  This option
        also implies not opening other addresses, except wildcard and localhost.
        This option is deprecated. Please consider using the configuration file
-       @code{interface} command, which is more versatile. 
+       @code{interface} command, which is more versatile.
        _EndOfDoc_;
 };