1 /* $NetBSD: ntpd-opts.h,v 1.17 2022/10/09 21:41:03 christos Exp $ */ 2 3 /* 4 * EDIT THIS FILE WITH CAUTION (ntpd-opts.h) 5 * 6 * It has been AutoGen-ed June 23, 2020 at 02:20:04 AM by AutoGen 5.18.5 7 * From the definitions ntpd-opts.def 8 * and the template file options 9 * 10 * Generated from AutoOpts 41:1:16 templates. 11 * 12 * AutoOpts is a copyrighted work. This header file is not encumbered 13 * by AutoOpts licensing, but is provided under the licensing terms chosen 14 * by the ntpd author or copyright holder. AutoOpts is 15 * licensed under the terms of the LGPL. The redistributable library 16 * (``libopts'') is licensed under the terms of either the LGPL or, at the 17 * users discretion, the BSD license. See the AutoOpts and/or libopts sources 18 * for details. 19 * 20 * The ntpd program is copyrighted and licensed 21 * under the following terms: 22 * 23 * Copyright (C) 1992-2020 The University of Delaware and Network Time Foundation, all rights reserved. 24 * This is free software. It is licensed for use, modification and 25 * redistribution under the terms of the NTP License, copies of which 26 * can be seen at: 27 * <http://ntp.org/license> 28 * <http://opensource.org/licenses/ntp-license.php> 29 * 30 * Permission to use, copy, modify, and distribute this software and its 31 * documentation for any purpose with or without fee is hereby granted, 32 * provided that the above copyright notice appears in all copies and that 33 * both the copyright notice and this permission notice appear in 34 * supporting documentation, and that the name The University of Delaware not be used in 35 * advertising or publicity pertaining to distribution of the software 36 * without specific, written prior permission. The University of Delaware and Network Time Foundation makes no 37 * representations about the suitability this software for any purpose. It 38 * is provided "as is" without express or implied warranty. 39 */ 40 /** 41 * This file contains the programmatic interface to the Automated 42 * Options generated for the ntpd program. 43 * These macros are documented in the AutoGen info file in the 44 * "AutoOpts" chapter. Please refer to that doc for usage help. 45 */ 46 #ifndef AUTOOPTS_NTPD_OPTS_H_GUARD 47 #define AUTOOPTS_NTPD_OPTS_H_GUARD 1 48 #include "config.h" 49 #include <autoopts/options.h> 50 51 /** 52 * Ensure that the library used for compiling this generated header is at 53 * least as new as the version current when the header template was released 54 * (not counting patch version increments). Also ensure that the oldest 55 * tolerable version is at least as old as what was current when the header 56 * template was released. 57 */ 58 #define AO_TEMPLATE_VERSION 167937 59 #if (AO_TEMPLATE_VERSION < OPTIONS_MINIMUM_VERSION) \ 60 || (AO_TEMPLATE_VERSION > OPTIONS_STRUCT_VERSION) 61 # error option template version mismatches autoopts/options.h header 62 Choke Me. 63 #endif 64 65 /** 66 * Enumeration of each option type for ntpd 67 */ 68 typedef enum { 69 INDEX_OPT_IPV4 = 0, 70 INDEX_OPT_IPV6 = 1, 71 INDEX_OPT_AUTHREQ = 2, 72 INDEX_OPT_AUTHNOREQ = 3, 73 INDEX_OPT_BCASTSYNC = 4, 74 INDEX_OPT_CONFIGFILE = 5, 75 INDEX_OPT_DEBUG_LEVEL = 6, 76 INDEX_OPT_SET_DEBUG_LEVEL = 7, 77 INDEX_OPT_DRIFTFILE = 8, 78 INDEX_OPT_PANICGATE = 9, 79 INDEX_OPT_FORCE_STEP_ONCE = 10, 80 INDEX_OPT_JAILDIR = 11, 81 INDEX_OPT_INTERFACE = 12, 82 INDEX_OPT_KEYFILE = 13, 83 INDEX_OPT_LOGFILE = 14, 84 INDEX_OPT_NOVIRTUALIPS = 15, 85 INDEX_OPT_MODIFYMMTIMER = 16, 86 INDEX_OPT_NOFORK = 17, 87 INDEX_OPT_NICE = 18, 88 INDEX_OPT_PIDFILE = 19, 89 INDEX_OPT_PRIORITY = 20, 90 INDEX_OPT_QUIT = 21, 91 INDEX_OPT_PROPAGATIONDELAY = 22, 92 INDEX_OPT_SAVECONFIGQUIT = 23, 93 INDEX_OPT_STATSDIR = 24, 94 INDEX_OPT_TRUSTEDKEY = 25, 95 INDEX_OPT_USER = 26, 96 INDEX_OPT_UPDATEINTERVAL = 27, 97 INDEX_OPT_VAR = 28, 98 INDEX_OPT_DVAR = 29, 99 INDEX_OPT_WAIT_SYNC = 30, 100 INDEX_OPT_SLEW = 31, 101 INDEX_OPT_USEPCC = 32, 102 INDEX_OPT_PCCFREQ = 33, 103 INDEX_OPT_MDNS = 34, 104 INDEX_OPT_VERSION = 35, 105 INDEX_OPT_HELP = 36, 106 INDEX_OPT_MORE_HELP = 37 107 } teOptIndex; 108 /** count of all options for ntpd */ 109 #define OPTION_CT 38 110 /** ntpd version */ 111 #define NTPD_VERSION "4.2.8p15" 112 /** Full ntpd version text */ 113 #define NTPD_FULL_VERSION "ntpd 4.2.8p15" 114 115 /** 116 * Interface defines for all options. Replace "n" with the UPPER_CASED 117 * option name (as in the teOptIndex enumeration above). 118 * e.g. HAVE_OPT(IPV4) 119 */ 120 #define DESC(n) (ntpdOptions.pOptDesc[INDEX_OPT_## n]) 121 /** 'true' if an option has been specified in any way */ 122 #define HAVE_OPT(n) (! UNUSED_OPT(& DESC(n))) 123 /** The string argument to an option. The argument type must be \"string\". */ 124 #define OPT_ARG(n) (DESC(n).optArg.argString) 125 /** Mask the option state revealing how an option was specified. 126 * It will be one and only one of \a OPTST_SET, \a OPTST_PRESET, 127 * \a OPTST_DEFINED, \a OPTST_RESET or zero. 128 */ 129 #define STATE_OPT(n) (DESC(n).fOptState & OPTST_SET_MASK) 130 /** Count of option's occurrances *on the command line*. */ 131 #define COUNT_OPT(n) (DESC(n).optOccCt) 132 /** mask of \a OPTST_SET and \a OPTST_DEFINED. */ 133 #define ISSEL_OPT(n) (SELECTED_OPT(&DESC(n))) 134 /** 'true' if \a HAVE_OPT would yield 'false'. */ 135 #define ISUNUSED_OPT(n) (UNUSED_OPT(& DESC(n))) 136 /** 'true' if OPTST_DISABLED bit not set. */ 137 #define ENABLED_OPT(n) (! DISABLED_OPT(& DESC(n))) 138 /** number of stacked option arguments. 139 * Valid only for stacked option arguments. */ 140 #define STACKCT_OPT(n) (((tArgList*)(DESC(n).optCookie))->useCt) 141 /** stacked argument vector. 142 * Valid only for stacked option arguments. */ 143 #define STACKLST_OPT(n) (((tArgList*)(DESC(n).optCookie))->apzArgs) 144 /** Reset an option. */ 145 #define CLEAR_OPT(n) STMTS( \ 146 DESC(n).fOptState &= OPTST_PERSISTENT_MASK; \ 147 if ((DESC(n).fOptState & OPTST_INITENABLED) == 0) \ 148 DESC(n).fOptState |= OPTST_DISABLED; \ 149 DESC(n).optCookie = NULL ) 150 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 151 /** 152 * Enumeration of ntpd exit codes 153 */ 154 typedef enum { 155 NTPD_EXIT_SUCCESS = 0, 156 NTPD_EXIT_FAILURE = 1, 157 NTPD_EXIT_USAGE_ERROR = 64, 158 NTPD_EXIT_LIBOPTS_FAILURE = 70 159 } ntpd_exit_code_t; 160 /** @} */ 161 /** 162 * Make sure there are no #define name conflicts with the option names 163 */ 164 #ifndef NO_OPTION_NAME_WARNINGS 165 # ifdef IPV4 166 # warning undefining IPV4 due to option name conflict 167 # undef IPV4 168 # endif 169 # ifdef IPV6 170 # warning undefining IPV6 due to option name conflict 171 # undef IPV6 172 # endif 173 # ifdef AUTHREQ 174 # warning undefining AUTHREQ due to option name conflict 175 # undef AUTHREQ 176 # endif 177 # ifdef AUTHNOREQ 178 # warning undefining AUTHNOREQ due to option name conflict 179 # undef AUTHNOREQ 180 # endif 181 # ifdef BCASTSYNC 182 # warning undefining BCASTSYNC due to option name conflict 183 # undef BCASTSYNC 184 # endif 185 # ifdef CONFIGFILE 186 # warning undefining CONFIGFILE due to option name conflict 187 # undef CONFIGFILE 188 # endif 189 # ifdef DEBUG_LEVEL 190 # warning undefining DEBUG_LEVEL due to option name conflict 191 # undef DEBUG_LEVEL 192 # endif 193 # ifdef SET_DEBUG_LEVEL 194 # warning undefining SET_DEBUG_LEVEL due to option name conflict 195 # undef SET_DEBUG_LEVEL 196 # endif 197 # ifdef DRIFTFILE 198 # warning undefining DRIFTFILE due to option name conflict 199 # undef DRIFTFILE 200 # endif 201 # ifdef PANICGATE 202 # warning undefining PANICGATE due to option name conflict 203 # undef PANICGATE 204 # endif 205 # ifdef FORCE_STEP_ONCE 206 # warning undefining FORCE_STEP_ONCE due to option name conflict 207 # undef FORCE_STEP_ONCE 208 # endif 209 # ifdef JAILDIR 210 # warning undefining JAILDIR due to option name conflict 211 # undef JAILDIR 212 # endif 213 # ifdef INTERFACE 214 # warning undefining INTERFACE due to option name conflict 215 # undef INTERFACE 216 # endif 217 # ifdef KEYFILE 218 # warning undefining KEYFILE due to option name conflict 219 # undef KEYFILE 220 # endif 221 # ifdef LOGFILE 222 # warning undefining LOGFILE due to option name conflict 223 # undef LOGFILE 224 # endif 225 # ifdef NOVIRTUALIPS 226 # warning undefining NOVIRTUALIPS due to option name conflict 227 # undef NOVIRTUALIPS 228 # endif 229 # ifdef MODIFYMMTIMER 230 # warning undefining MODIFYMMTIMER due to option name conflict 231 # undef MODIFYMMTIMER 232 # endif 233 # ifdef NOFORK 234 # warning undefining NOFORK due to option name conflict 235 # undef NOFORK 236 # endif 237 # ifdef NICE 238 # warning undefining NICE due to option name conflict 239 # undef NICE 240 # endif 241 # ifdef PIDFILE 242 # warning undefining PIDFILE due to option name conflict 243 # undef PIDFILE 244 # endif 245 # ifdef PRIORITY 246 # warning undefining PRIORITY due to option name conflict 247 # undef PRIORITY 248 # endif 249 # ifdef QUIT 250 # warning undefining QUIT due to option name conflict 251 # undef QUIT 252 # endif 253 # ifdef PROPAGATIONDELAY 254 # warning undefining PROPAGATIONDELAY due to option name conflict 255 # undef PROPAGATIONDELAY 256 # endif 257 # ifdef SAVECONFIGQUIT 258 # warning undefining SAVECONFIGQUIT due to option name conflict 259 # undef SAVECONFIGQUIT 260 # endif 261 # ifdef STATSDIR 262 # warning undefining STATSDIR due to option name conflict 263 # undef STATSDIR 264 # endif 265 # ifdef TRUSTEDKEY 266 # warning undefining TRUSTEDKEY due to option name conflict 267 # undef TRUSTEDKEY 268 # endif 269 # ifdef USER 270 # warning undefining USER due to option name conflict 271 # undef USER 272 # endif 273 # ifdef UPDATEINTERVAL 274 # warning undefining UPDATEINTERVAL due to option name conflict 275 # undef UPDATEINTERVAL 276 # endif 277 # ifdef VAR 278 # warning undefining VAR due to option name conflict 279 # undef VAR 280 # endif 281 # ifdef DVAR 282 # warning undefining DVAR due to option name conflict 283 # undef DVAR 284 # endif 285 # ifdef WAIT_SYNC 286 # warning undefining WAIT_SYNC due to option name conflict 287 # undef WAIT_SYNC 288 # endif 289 # ifdef SLEW 290 # warning undefining SLEW due to option name conflict 291 # undef SLEW 292 # endif 293 294 # ifdef USEPCC 295 # warning undefining USEPCC due to option name conflict 296 # undef USEPCC 297 # endif 298 # ifdef PCCFREQ 299 # warning undefining PCCFREQ due to option name conflict 300 # undef PCCFREQ 301 # endif 302 # ifdef MDNS 303 # warning undefining MDNS due to option name conflict 304 # undef MDNS 305 # endif 306 #else /* NO_OPTION_NAME_WARNINGS */ 307 # undef IPV4 308 # undef IPV6 309 # undef AUTHREQ 310 # undef AUTHNOREQ 311 # undef BCASTSYNC 312 # undef CONFIGFILE 313 # undef DEBUG_LEVEL 314 # undef SET_DEBUG_LEVEL 315 # undef DRIFTFILE 316 # undef PANICGATE 317 # undef FORCE_STEP_ONCE 318 # undef JAILDIR 319 # undef INTERFACE 320 # undef KEYFILE 321 # undef LOGFILE 322 # undef NOVIRTUALIPS 323 # undef MODIFYMMTIMER 324 # undef NOFORK 325 # undef NICE 326 # undef PIDFILE 327 # undef PRIORITY 328 # undef QUIT 329 # undef PROPAGATIONDELAY 330 # undef SAVECONFIGQUIT 331 # undef STATSDIR 332 # undef TRUSTEDKEY 333 # undef USER 334 # undef UPDATEINTERVAL 335 # undef VAR 336 # undef DVAR 337 # undef WAIT_SYNC 338 # undef SLEW 339 # undef USEPCC 340 # undef PCCFREQ 341 # undef MDNS 342 #endif /* NO_OPTION_NAME_WARNINGS */ 343 344 /** 345 * Interface defines for specific options. 346 * @{ 347 */ 348 #define VALUE_OPT_IPV4 '4' 349 #define VALUE_OPT_IPV6 '6' 350 #define VALUE_OPT_AUTHREQ 'a' 351 #define VALUE_OPT_AUTHNOREQ 'A' 352 #define VALUE_OPT_BCASTSYNC 'b' 353 #define VALUE_OPT_CONFIGFILE 'c' 354 #define VALUE_OPT_DEBUG_LEVEL 'd' 355 #define VALUE_OPT_SET_DEBUG_LEVEL 'D' 356 357 #define OPT_VALUE_SET_DEBUG_LEVEL (DESC(SET_DEBUG_LEVEL).optArg.argInt) 358 #define VALUE_OPT_DRIFTFILE 'f' 359 #define VALUE_OPT_PANICGATE 'g' 360 #define VALUE_OPT_FORCE_STEP_ONCE 'G' 361 #define VALUE_OPT_JAILDIR 'i' 362 #define VALUE_OPT_INTERFACE 'I' 363 #define VALUE_OPT_KEYFILE 'k' 364 #define VALUE_OPT_LOGFILE 'l' 365 #define VALUE_OPT_NOVIRTUALIPS 'L' 366 #define VALUE_OPT_MODIFYMMTIMER 'M' 367 #define VALUE_OPT_NOFORK 'n' 368 #define VALUE_OPT_NICE 'N' 369 #define VALUE_OPT_PIDFILE 'p' 370 #define VALUE_OPT_PRIORITY 'P' 371 372 #define OPT_VALUE_PRIORITY (DESC(PRIORITY).optArg.argInt) 373 #define VALUE_OPT_QUIT 'q' 374 #define VALUE_OPT_PROPAGATIONDELAY 'r' 375 #define VALUE_OPT_SAVECONFIGQUIT 0x1001 376 #define VALUE_OPT_STATSDIR 's' 377 #define VALUE_OPT_TRUSTEDKEY 't' 378 #define VALUE_OPT_USER 'u' 379 #define VALUE_OPT_UPDATEINTERVAL 'U' 380 381 #define OPT_VALUE_UPDATEINTERVAL (DESC(UPDATEINTERVAL).optArg.argInt) 382 #define VALUE_OPT_VAR 0x1002 383 #define VALUE_OPT_DVAR 0x1003 384 #define VALUE_OPT_WAIT_SYNC 'w' 385 #ifdef HAVE_WORKING_FORK 386 #define OPT_VALUE_WAIT_SYNC (DESC(WAIT_SYNC).optArg.argInt) 387 #endif /* HAVE_WORKING_FORK */ 388 #define VALUE_OPT_SLEW 'x' 389 #define VALUE_OPT_USEPCC 0x1004 390 #define VALUE_OPT_PCCFREQ 0x1005 391 #define VALUE_OPT_MDNS 'm' 392 /** option flag (value) for help-value option */ 393 #define VALUE_OPT_HELP '?' 394 /** option flag (value) for more-help-value option */ 395 #define VALUE_OPT_MORE_HELP '!' 396 /** option flag (value) for version-value option */ 397 #define VALUE_OPT_VERSION 0x1006 398 /* 399 * Interface defines not associated with particular options 400 */ 401 #define ERRSKIP_OPTERR STMTS(ntpdOptions.fOptSet &= ~OPTPROC_ERRSTOP) 402 #define ERRSTOP_OPTERR STMTS(ntpdOptions.fOptSet |= OPTPROC_ERRSTOP) 403 #define RESTART_OPT(n) STMTS( \ 404 ntpdOptions.curOptIdx = (n); \ 405 ntpdOptions.pzCurOpt = NULL ) 406 #define START_OPT RESTART_OPT(1) 407 #define USAGE(c) (*ntpdOptions.pUsageProc)(&ntpdOptions, c) 408 409 #ifdef __cplusplus 410 extern "C" { 411 #endif 412 413 414 /* * * * * * 415 * 416 * Declare the ntpd option descriptor. 417 */ 418 extern tOptions ntpdOptions; 419 420 #if defined(ENABLE_NLS) 421 # ifndef _ 422 # include <stdio.h> 423 # ifndef HAVE_GETTEXT 424 extern char * gettext(char const *); 425 # else 426 # include <libintl.h> 427 # endif 428 429 # ifndef ATTRIBUTE_FORMAT_ARG 430 # define ATTRIBUTE_FORMAT_ARG(_a) 431 # endif 432 433 static inline char* aoGetsText(char const* pz) ATTRIBUTE_FORMAT_ARG(1); 434 static inline char* aoGetsText(char const* pz) { 435 if (pz == NULL) return NULL; 436 return (char*)gettext(pz); 437 } 438 # define _(s) aoGetsText(s) 439 # endif /* _() */ 440 441 # define OPT_NO_XLAT_CFG_NAMES STMTS(ntpdOptions.fOptSet |= \ 442 OPTPROC_NXLAT_OPT_CFG;) 443 # define OPT_NO_XLAT_OPT_NAMES STMTS(ntpdOptions.fOptSet |= \ 444 OPTPROC_NXLAT_OPT|OPTPROC_NXLAT_OPT_CFG;) 445 446 # define OPT_XLAT_CFG_NAMES STMTS(ntpdOptions.fOptSet &= \ 447 ~(OPTPROC_NXLAT_OPT|OPTPROC_NXLAT_OPT_CFG);) 448 # define OPT_XLAT_OPT_NAMES STMTS(ntpdOptions.fOptSet &= \ 449 ~OPTPROC_NXLAT_OPT;) 450 451 #else /* ENABLE_NLS */ 452 # define OPT_NO_XLAT_CFG_NAMES 453 # define OPT_NO_XLAT_OPT_NAMES 454 455 # define OPT_XLAT_CFG_NAMES 456 # define OPT_XLAT_OPT_NAMES 457 458 # ifndef _ 459 # define _(_s) _s 460 # endif 461 #endif /* ENABLE_NLS */ 462 463 #ifdef __cplusplus 464 } 465 #endif 466 #endif /* AUTOOPTS_NTPD_OPTS_H_GUARD */ 467 468 /* ntpd-opts.h ends here */ 469