-static struct cmd {
- char *cmd_name;
- int num_args;
- int (*cmd_func)();
-} cmds[] = {
- "-all", 0, noopt, /* Don't request/allow any options */
- "-ac", 0, noaccomp, /* Disable Address/Control compress */
- "-am", 0, noasyncmap, /* Disable asyncmap negotiation */
- "-as", 1, setasyncmap, /* set the desired async map */
- "-d", 0, setdebug, /* Increase debugging level */
- "-detach", 0, setnodetach, /* don't fork */
- "-ip", 0, noipaddr, /* Disable IP address negotiation */
- "-mn", 0, nomagicnumber, /* Disable magic number negotiation */
- "-mru", 0, nomru, /* Disable mru negotiation */
- "-p", 0, setpassive, /* Set passive mode */
- "-pc", 0, nopcomp, /* Disable protocol field compress */
- "+ua", 1, setupapfile, /* Get PAP user and password from file */
- "+pap", 0, reqpap, /* Require PAP auth from peer */
- "-pap", 0, nopap, /* Don't allow UPAP authentication with peer */
- "+chap", 0, reqchap, /* Require CHAP authentication from peer */
- "-chap", 0, nochap, /* Don't allow CHAP authentication with peer */
- "-vj", 0, setnovj, /* disable VJ compression */
- "asyncmap", 1, setasyncmap, /* set the desired async map */
- "escape", 1, setescape, /* set chars to escape on transmission */
- "connect", 1, setconnector, /* A program to set up a connection */
- "disconnect", 1, setdisconnector, /* program to disconnect serial dev. */
- "crtscts", 0, setcrtscts, /* set h/w flow control */
- "debug", 0, setdebug, /* Increase debugging level */
- "kdebug", 1, setkdebug, /* Enable kernel-level debugging */
- "domain", 1, setdomain, /* Add given domain name to hostname*/
- "mru", 1, setmru, /* Set MRU value for negotiation */
- "mtu", 1, setmtu, /* Set our MTU */
- "netmask", 1, setnetmask, /* set netmask */
- "passive", 0, setpassive, /* Set passive mode */
- "silent", 0, setsilent, /* Set silent mode */
- "modem", 0, setmodem, /* Use modem control lines */
- "local", 0, setlocal, /* Don't use modem control lines */
- "lock", 0, setlock, /* Lock serial device (with lock file) */
- "name", 1, setname, /* Set local name for authentication */
- "user", 1, setuser, /* Set username for PAP auth with peer */
- "usehostname", 0, setusehostname, /* Must use hostname for auth. */
- "remotename", 1, setremote, /* Set remote name for authentication */
- "auth", 0, setauth, /* Require authentication from peer */
- "file", 1, readfile, /* Take options from a file */
- "defaultroute", 0, setdefaultroute, /* Add default route */
- "proxyarp", 0, setproxyarp, /* Add proxy ARP entry */
- "persist", 0, setpersist, /* Keep on reopening connection after close */
- "login", 0, setdologin, /* Use system password database for UPAP */
- "noipdefault", 0, setnoipdflt, /* Don't use name for default IP adrs */
- "lcp-restart", 1, setlcptimeout, /* Set timeout for LCP */
- "lcp-max-terminate", 1, setlcpterm, /* Set max #xmits for term-reqs */
- "lcp-max-configure", 1, setlcpconf, /* Set max #xmits for conf-reqs */
- "lcp-max-failure", 1, setlcpfails, /* Set max #conf-naks for LCP */
- "ipcp-restart", 1, setipcptimeout, /* Set timeout for IPCP */
- "ipcp-max-terminate", 1, setipcpterm, /* Set max #xmits for term-reqs */
- "ipcp-max-configure", 1, setipcpconf, /* Set max #xmits for conf-reqs */
- "ipcp-max-failure", 1, setipcpfails, /* Set max #conf-naks for IPCP */
- "pap-restart", 1, setpaptimeout, /* Set timeout for UPAP */
- "pap-max-authreq", 1, setpapreqs, /* Set max #xmits for auth-reqs */
- "chap-restart", 1, setchaptimeout, /* Set timeout for CHAP */
- "chap-max-challenge", 1, setchapchal, /* Set max #xmits for challenge */
- "chap-interval", 1, setchapintv, /* Set interval for rechallenge */
- "ipcp-accept-local", 0, setipcpaccl, /* Accept peer's address for us */
- "ipcp-accept-remote", 0, setipcpaccr, /* Accept peer's address for it */
- NULL
+option_t general_options[] = {
+ { "debug", o_int, &debug,
+ "Increase debugging level", OPT_INC | OPT_NOARG | 1 },
+ { "-d", o_int, &debug,
+ "Increase debugging level",
+ OPT_ALIAS | OPT_INC | OPT_NOARG | 1 },
+
+ { "kdebug", o_int, &kdebugflag,
+ "Set kernel driver debug level", OPT_PRIO },
+
+ { "nodetach", o_bool, &nodetach,
+ "Don't detach from controlling tty", OPT_PRIO | 1 },
+ { "-detach", o_bool, &nodetach,
+ "Don't detach from controlling tty", OPT_ALIAS | OPT_PRIOSUB | 1 },
+ { "updetach", o_bool, &updetach,
+ "Detach from controlling tty once link is up",
+ OPT_PRIOSUB | OPT_A2CLR | 1, &nodetach },
+
+ { "holdoff", o_int, &holdoff,
+ "Set time in seconds before retrying connection", OPT_PRIO },
+
+ { "idle", o_int, &idle_time_limit,
+ "Set time in seconds before disconnecting idle link", OPT_PRIO },
+
+ { "maxconnect", o_int, &maxconnect,
+ "Set connection time limit",
+ OPT_PRIO | OPT_LLIMIT | OPT_NOINCR | OPT_ZEROINF },
+
+ { "domain", o_special, (void *)setdomain,
+ "Add given domain name to hostname",
+ OPT_PRIO | OPT_PRIV | OPT_A2STRVAL, &domain },
+
+ { "file", o_special, (void *)readfile,
+ "Take options from a file", OPT_NOPRINT },
+ { "call", o_special, (void *)callfile,
+ "Take options from a privileged file", OPT_NOPRINT },
+
+ { "persist", o_bool, &persist,
+ "Keep on reopening connection after close", OPT_PRIO | 1 },
+ { "nopersist", o_bool, &persist,
+ "Turn off persist option", OPT_PRIOSUB },
+
+ { "demand", o_bool, &demand,
+ "Dial on demand", OPT_INITONLY | 1, &persist },
+
+ { "--version", o_special_noarg, (void *)showversion,
+ "Show version number" },
+ { "--help", o_special_noarg, (void *)showhelp,
+ "Show brief listing of options" },
+ { "-h", o_special_noarg, (void *)showhelp,
+ "Show brief listing of options", OPT_ALIAS },
+
+ { "logfile", o_special, (void *)setlogfile,
+ "Append log messages to this file",
+ OPT_PRIO | OPT_A2STRVAL | OPT_STATIC, &logfile_name },
+ { "logfd", o_int, &log_to_fd,
+ "Send log messages to this file descriptor",
+ OPT_PRIOSUB | OPT_A2CLR, &log_default },
+ { "nolog", o_int, &log_to_fd,
+ "Don't send log messages to any file",
+ OPT_PRIOSUB | OPT_NOARG | OPT_VAL(-1) },
+ { "nologfd", o_int, &log_to_fd,
+ "Don't send log messages to any file descriptor",
+ OPT_PRIOSUB | OPT_ALIAS | OPT_NOARG | OPT_VAL(-1) },
+
+ { "linkname", o_string, linkname,
+ "Set logical name for link",
+ OPT_PRIO | OPT_PRIV | OPT_STATIC, NULL, MAXPATHLEN },
+
+ { "maxfail", o_int, &maxfail,
+ "Maximum number of unsuccessful connection attempts to allow",
+ OPT_PRIO },
+
+ { "ktune", o_bool, &tune_kernel,
+ "Alter kernel settings as necessary", OPT_PRIO | 1 },
+ { "noktune", o_bool, &tune_kernel,
+ "Don't alter kernel settings", OPT_PRIOSUB },
+
+ { "connect-delay", o_int, &connect_delay,
+ "Maximum time (in ms) to wait after connect script finishes",
+ OPT_PRIO },
+
+ { "unit", o_int, &req_unit,
+ "PPP interface unit number to use if possible",
+ OPT_PRIO | OPT_LLIMIT, 0, 0 },
+
+ { "dump", o_bool, &dump_options,
+ "Print out option values after parsing all options", 1 },
+ { "dryrun", o_bool, &dryrun,
+ "Stop after parsing, printing, and checking options", 1 },
+
+#ifdef HAVE_MULTILINK
+ { "multilink", o_bool, &multilink,
+ "Enable multilink operation", OPT_PRIO | 1 },
+ { "mp", o_bool, &multilink,
+ "Enable multilink operation", OPT_PRIOSUB | OPT_ALIAS | 1 },
+ { "nomultilink", o_bool, &multilink,
+ "Disable multilink operation", OPT_PRIOSUB | 0 },
+ { "nomp", o_bool, &multilink,
+ "Disable multilink operation", OPT_PRIOSUB | OPT_ALIAS | 0 },
+
+ { "bundle", o_string, &bundle_name,
+ "Bundle name for multilink", OPT_PRIO },
+#endif /* HAVE_MULTILINK */
+
+#ifdef PLUGIN
+ { "plugin", o_special, (void *)loadplugin,
+ "Load a plug-in module into pppd", OPT_PRIV | OPT_A2LIST },
+#endif
+
+#ifdef PPP_FILTER
+ { "pdebug", o_int, &dflag,
+ "libpcap debugging", OPT_PRIO },
+
+ { "pass-filter", 1, setpassfilter,
+ "set filter for packets to pass", OPT_PRIO },
+
+ { "active-filter", 1, setactivefilter,
+ "set filter for active pkts", OPT_PRIO },
+#endif
+
+#ifdef MAXOCTETS
+ { "maxoctets", o_int, &maxoctets,
+ "Set connection traffic limit",
+ OPT_PRIO | OPT_LLIMIT | OPT_NOINCR | OPT_ZEROINF },
+ { "mo", o_int, &maxoctets,
+ "Set connection traffic limit",
+ OPT_ALIAS | OPT_PRIO | OPT_LLIMIT | OPT_NOINCR | OPT_ZEROINF },
+ { "mo-direction", o_special, setmodir,
+ "Set direction for limit traffic (sum,in,out,max)" },
+ { "mo-timeout", o_int, &maxoctets_timeout,
+ "Check for traffic limit every N seconds", OPT_PRIO | OPT_LLIMIT | 1 },
+#endif
+
+ { NULL }