Annotation of embedaddon/ntp/ntpd/cmd_args.c, revision 1.1
1.1 ! misho 1: /*
! 2: * cmd_args.c = command-line argument processing
! 3: */
! 4: #ifdef HAVE_CONFIG_H
! 5: # include <config.h>
! 6: #endif
! 7:
! 8: #include "ntpd.h"
! 9: #include "ntp_stdlib.h"
! 10: #include "ntp_cmdargs.h"
! 11:
! 12: #include "ntpd-opts.h"
! 13:
! 14: /*
! 15: * Definitions of things either imported from or exported to outside
! 16: */
! 17: extern char const *progname;
! 18: extern const char *specific_interface;
! 19:
! 20: #ifdef HAVE_NETINFO
! 21: extern int check_netinfo;
! 22: #endif
! 23:
! 24:
! 25: /*
! 26: * getCmdOpts - get command line options
! 27: */
! 28: void
! 29: getCmdOpts(
! 30: int argc,
! 31: char *argv[]
! 32: )
! 33: {
! 34: extern const char *config_file;
! 35: int errflg;
! 36: tOptions *myOptions = &ntpdOptions;
! 37:
! 38: /*
! 39: * Initialize, initialize
! 40: */
! 41: errflg = 0;
! 42:
! 43: if (ipv4_works && ipv6_works) {
! 44: if (HAVE_OPT( IPV4 ))
! 45: ipv6_works = 0;
! 46: else if (HAVE_OPT( IPV6 ))
! 47: ipv4_works = 0;
! 48: } else if (!ipv4_works && !ipv6_works) {
! 49: msyslog(LOG_ERR, "Neither IPv4 nor IPv6 networking detected, fatal.");
! 50: exit(1);
! 51: } else if (HAVE_OPT( IPV4 ) && !ipv4_works)
! 52: msyslog(LOG_WARNING, "-4/--ipv4 ignored, IPv4 networking not found.");
! 53: else if (HAVE_OPT( IPV6 ) && !ipv6_works)
! 54: msyslog(LOG_WARNING, "-6/--ipv6 ignored, IPv6 networking not found.");
! 55:
! 56: if (HAVE_OPT( AUTHREQ ))
! 57: proto_config(PROTO_AUTHENTICATE, 1, 0., NULL);
! 58: else if (HAVE_OPT( AUTHNOREQ ))
! 59: proto_config(PROTO_AUTHENTICATE, 0, 0., NULL);
! 60:
! 61: if (HAVE_OPT( BCASTSYNC ))
! 62: proto_config(PROTO_BROADCLIENT, 1, 0., NULL);
! 63:
! 64: if (HAVE_OPT( CONFIGFILE )) {
! 65: config_file = OPT_ARG( CONFIGFILE );
! 66: #ifdef HAVE_NETINFO
! 67: check_netinfo = 0;
! 68: #endif
! 69: }
! 70:
! 71: if (HAVE_OPT( DRIFTFILE ))
! 72: stats_config(STATS_FREQ_FILE, OPT_ARG( DRIFTFILE ));
! 73:
! 74: if (HAVE_OPT( PANICGATE ))
! 75: allow_panic = TRUE;
! 76:
! 77: #ifdef HAVE_DROPROOT
! 78: if (HAVE_OPT( JAILDIR )) {
! 79: droproot = 1;
! 80: chrootdir = OPT_ARG( JAILDIR );
! 81: }
! 82: #endif
! 83:
! 84: if (HAVE_OPT( KEYFILE ))
! 85: getauthkeys(OPT_ARG( KEYFILE ));
! 86:
! 87: if (HAVE_OPT( PIDFILE ))
! 88: stats_config(STATS_PID_FILE, OPT_ARG( PIDFILE ));
! 89:
! 90: if (HAVE_OPT( QUIT ))
! 91: mode_ntpdate = TRUE;
! 92:
! 93: if (HAVE_OPT( PROPAGATIONDELAY ))
! 94: do {
! 95: double tmp;
! 96: const char *my_ntp_optarg = OPT_ARG( PROPAGATIONDELAY );
! 97:
! 98: if (sscanf(my_ntp_optarg, "%lf", &tmp) != 1) {
! 99: msyslog(LOG_ERR,
! 100: "command line broadcast delay value %s undecodable",
! 101: my_ntp_optarg);
! 102: } else {
! 103: proto_config(PROTO_BROADDELAY, 0, tmp, NULL);
! 104: }
! 105: } while (0);
! 106:
! 107: if (HAVE_OPT( STATSDIR ))
! 108: stats_config(STATS_STATSDIR, OPT_ARG( STATSDIR ));
! 109:
! 110: if (HAVE_OPT( TRUSTEDKEY )) {
! 111: int ct = STACKCT_OPT( TRUSTEDKEY );
! 112: const char** pp = STACKLST_OPT( TRUSTEDKEY );
! 113:
! 114: do {
! 115: u_long tkey;
! 116: const char* p = *pp++;
! 117:
! 118: tkey = (int)atol(p);
! 119: if (tkey == 0 || tkey > NTP_MAXKEY) {
! 120: msyslog(LOG_ERR,
! 121: "command line trusted key %s is invalid",
! 122: p);
! 123: } else {
! 124: authtrust(tkey, 1);
! 125: }
! 126: } while (--ct > 0);
! 127: }
! 128:
! 129: #ifdef HAVE_DROPROOT
! 130: if (HAVE_OPT( USER )) {
! 131: droproot = 1;
! 132: user = estrdup(OPT_ARG( USER ));
! 133: group = rindex(user, ':');
! 134: if (group)
! 135: *group++ = '\0'; /* get rid of the ':' */
! 136: }
! 137: #endif
! 138:
! 139: if (HAVE_OPT( VAR )) {
! 140: int ct = STACKCT_OPT( VAR );
! 141: const char** pp = STACKLST_OPT( VAR );
! 142:
! 143: do {
! 144: const char* my_ntp_optarg = *pp++;
! 145:
! 146: set_sys_var(my_ntp_optarg, strlen(my_ntp_optarg)+1,
! 147: (u_short) (RW));
! 148: } while (--ct > 0);
! 149: }
! 150:
! 151: if (HAVE_OPT( DVAR )) {
! 152: int ct = STACKCT_OPT( DVAR );
! 153: const char** pp = STACKLST_OPT( DVAR );
! 154:
! 155: do {
! 156: const char* my_ntp_optarg = *pp++;
! 157:
! 158: set_sys_var(my_ntp_optarg, strlen(my_ntp_optarg)+1,
! 159: (u_short) (RW | DEF));
! 160: } while (--ct > 0);
! 161: }
! 162:
! 163: if (HAVE_OPT( SLEW )) {
! 164: clock_max = 600;
! 165: kern_enable = 0;
! 166: }
! 167: if (HAVE_OPT( UPDATEINTERVAL )) {
! 168: long val = OPT_VALUE_UPDATEINTERVAL;
! 169:
! 170: if (val >= 0)
! 171: interface_interval = val;
! 172: else {
! 173: fprintf(stderr,
! 174: "command line interface update interval %ld must not be negative\n",
! 175: val);
! 176: msyslog(LOG_ERR,
! 177: "command line interface update interval %ld must not be negative",
! 178: val);
! 179: errflg++;
! 180: }
! 181: }
! 182: #ifdef SIM
! 183:
! 184: /* SK:
! 185: * The simulator no longer takes any command line arguments. Hence,
! 186: * all the code that was here has been removed.
! 187: */
! 188:
! 189: #endif /* SIM */
! 190:
! 191: if (errflg || argc) {
! 192: if (argc)
! 193: fprintf(stderr, "argc after processing is <%d>\n", argc);
! 194: optionUsage(myOptions, 2);
! 195: }
! 196: return;
! 197: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>