X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=pppd%2Foptions.c;h=cea09e39f05a4ef28032fffe1394f8818aa96b96;hb=76016e1b948b7d9675b4e0750d1f943d96d9523b;hp=177488ca681392c3971e432642c7e97a0638a894;hpb=12fc6939987bc20feff22aadd82dff1a623d892b;p=ppp.git diff --git a/pppd/options.c b/pppd/options.c index 177488c..cea09e3 100644 --- a/pppd/options.c +++ b/pppd/options.c @@ -40,9 +40,12 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -#define RCSID "$Id: options.c,v 1.102 2008/06/15 06:53:06 paulus Exp $" +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif #include +#include #include #include #include @@ -51,11 +54,13 @@ #include #include #include -#ifdef PLUGIN +#include +#include +#ifdef PPP_WITH_PLUGINS #include #endif -#ifdef PPP_FILTER +#ifdef PPP_WITH_FILTER #include /* * There have been 3 or 4 different names for this in libpcap CVS, but @@ -70,16 +75,15 @@ #define DLT_PPP_PPPD DLT_PPP #endif #endif -#endif /* PPP_FILTER */ +#endif /* PPP_WITH_FILTER */ #include "pppd.h" #include "pathnames.h" #if defined(ultrix) || defined(NeXT) -char *strdup __P((char *)); +char *strdup(char *); #endif -static const char rcsid[] = RCSID; struct option_value { struct option_value *next; @@ -97,6 +101,9 @@ char devnam[MAXPATHLEN]; /* Device name */ bool nodetach = 0; /* Don't detach from controlling tty */ bool updetach = 0; /* Detach once link is up */ bool master_detach; /* Detach when we're (only) multilink master */ +#ifdef SYSTEMD +bool up_sdnotify = 0; /* Notify systemd once link is up */ +#endif int maxconnect = 0; /* Maximum connect time */ char user[MAXNAMELEN]; /* Username for PAP */ char passwd[MAXSECRETLEN]; /* Password for PAP */ @@ -114,27 +121,33 @@ char linkname[MAXPATHLEN]; /* logical name for link */ bool tune_kernel; /* may alter kernel settings */ int connect_delay = 1000; /* wait this many ms after connect script */ int req_unit = -1; /* requested interface unit */ -char req_ifname[MAXIFNAMELEN]; /* requested interface name */ +char path_ipup[MAXPATHLEN]; /* pathname of ip-up script */ +char path_ipdown[MAXPATHLEN];/* pathname of ip-down script */ +char req_ifname[IFNAMSIZ]; /* requested interface name */ bool multilink = 0; /* Enable multilink operation */ char *bundle_name = NULL; /* bundle name for multilink */ bool dump_options; /* print out option values */ +bool show_options; /* print all supported options and exit */ bool dryrun; /* print out option values and exit */ char *domain; /* domain name set by domain option */ int child_wait = 5; /* # seconds to wait for children at exit */ struct userenv *userenv_list; /* user environment variables */ int dfl_route_metric = -1; /* metric of the default route to set over the PPP link */ -#ifdef MAXOCTETS +#ifdef PPP_WITH_IPV6CP +char path_ipv6up[MAXPATHLEN]; /* pathname of ipv6-up script */ +char path_ipv6down[MAXPATHLEN]; /* pathname of ipv6-down script */ +#endif + unsigned int maxoctets = 0; /* default - no limit */ int maxoctets_dir = 0; /* default - sum of traffic */ int maxoctets_timeout = 1; /* default 1 second */ -#endif extern option_t auth_options[]; extern struct stat devstat; -#ifdef PPP_FILTER +#ifdef PPP_WITH_FILTER struct bpf_program pass_filter;/* Filter program for packets to pass */ struct bpf_program active_filter; /* Filter program for link-active pkts */ #endif @@ -149,38 +162,38 @@ bool devnam_fixed; /* can no longer change device name */ static int logfile_fd = -1; /* fd opened for log file */ static char logfile_name[MAXPATHLEN]; /* name of log file */ +static bool noipx_opt; /* dummy for noipx option */ + /* * Prototypes */ -static int setdomain __P((char **)); -static int readfile __P((char **)); -static int callfile __P((char **)); -static int showversion __P((char **)); -static int showhelp __P((char **)); -static void usage __P((void)); -static int setlogfile __P((char **)); -#ifdef PLUGIN -static int loadplugin __P((char **)); +static int setdomain(char **); +static int readfile(char **); +static int callfile(char **); +static int showversion(char **); +static int showhelp(char **); +static void usage(void); +static int setlogfile(char **); +#ifdef PPP_WITH_PLUGINS +static int loadplugin(char **); #endif -#ifdef PPP_FILTER -static int setpassfilter __P((char **)); -static int setactivefilter __P((char **)); +#ifdef PPP_WITH_FILTER +static int setpassfilter(char **); +static int setactivefilter(char **); #endif -#ifdef MAXOCTETS -static int setmodir __P((char **)); -#endif +static int setmodir(char **); -static int user_setenv __P((char **)); -static void user_setprint __P((option_t *, printer_func, void *)); -static int user_unsetenv __P((char **)); -static void user_unsetprint __P((option_t *, printer_func, void *)); +static int user_setenv(char **); +static void user_setprint(option_t *, printer_func, void *); +static int user_unsetenv(char **); +static void user_unsetprint(option_t *, printer_func, void *); -static option_t *find_option __P((const char *name)); -static int process_option __P((option_t *, char *, char **)); -static int n_arguments __P((option_t *)); -static int number_option __P((char *, u_int32_t *, int)); +static option_t *find_option(char *name); +static int process_option(option_t *, char *, char **); +static int n_arguments(option_t *); +static int number_option(char *, u_int32_t *, int); /* * Structure to store extra lists of options. @@ -209,6 +222,11 @@ option_t general_options[] = { "Don't detach from controlling tty", OPT_PRIO | 1 }, { "-detach", o_bool, &nodetach, "Don't detach from controlling tty", OPT_ALIAS | OPT_PRIOSUB | 1 }, +#ifdef SYSTEMD + { "up_sdnotify", o_bool, &up_sdnotify, + "Notify systemd once link is up (implies nodetach)", + OPT_PRIOSUB | OPT_A2COPY | 1, &nodetach }, +#endif { "updetach", o_bool, &updetach, "Detach from controlling tty once link is up", OPT_PRIOSUB | OPT_A2CLR | 1, &nodetach }, @@ -246,6 +264,10 @@ option_t general_options[] = { { "--version", o_special_noarg, (void *)showversion, "Show version number" }, + { "-v", o_special_noarg, (void *)showversion, + "Show version number" }, + { "show-options", o_bool, &show_options, + "Show all options and exit", 1 }, { "--help", o_special_noarg, (void *)showhelp, "Show brief listing of options" }, { "-h", o_special_noarg, (void *)showhelp, @@ -287,7 +309,7 @@ option_t general_options[] = { { "ifname", o_string, req_ifname, "Set PPP interface name", - OPT_PRIO | OPT_PRIV | OPT_STATIC, NULL, MAXIFNAMELEN }, + OPT_PRIO | OPT_PRIV | OPT_STATIC, NULL, IFNAMSIZ }, { "dump", o_bool, &dump_options, "Print out option values after parsing all options", 1 }, @@ -309,7 +331,23 @@ option_t general_options[] = { "Metric to use for the default route (Linux only; -1 for default behavior)", OPT_PRIV|OPT_LLIMIT|OPT_INITONLY, NULL, 0, -1 }, -#ifdef HAVE_MULTILINK + { "ip-up-script", o_string, path_ipup, + "Set pathname of ip-up script", + OPT_PRIV|OPT_STATIC, NULL, MAXPATHLEN }, + { "ip-down-script", o_string, path_ipdown, + "Set pathname of ip-down script", + OPT_PRIV|OPT_STATIC, NULL, MAXPATHLEN }, + +#ifdef PPP_WITH_IPV6CP + { "ipv6-up-script", o_string, path_ipv6up, + "Set pathname of ipv6-up script", + OPT_PRIV|OPT_STATIC, NULL, MAXPATHLEN }, + { "ipv6-down-script", o_string, path_ipv6down, + "Set pathname of ipv6-down script", + OPT_PRIV|OPT_STATIC, NULL, MAXPATHLEN }, +#endif + +#ifdef PPP_WITH_MULTILINK { "multilink", o_bool, &multilink, "Enable multilink operation", OPT_PRIO | 1 }, { "mp", o_bool, &multilink, @@ -321,14 +359,14 @@ option_t general_options[] = { { "bundle", o_string, &bundle_name, "Bundle name for multilink", OPT_PRIO }, -#endif /* HAVE_MULTILINK */ +#endif /* PPP_WITH_MULTILINK */ -#ifdef PLUGIN +#ifdef PPP_WITH_PLUGINS { "plugin", o_special, (void *)loadplugin, "Load a plug-in module into pppd", OPT_PRIV | OPT_A2LIST }, #endif -#ifdef PPP_FILTER +#ifdef PPP_WITH_FILTER { "pass-filter", o_special, setpassfilter, "set filter for packets to pass", OPT_PRIO }, @@ -336,7 +374,6 @@ option_t general_options[] = { "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 }, @@ -347,7 +384,9 @@ option_t general_options[] = { "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 + + /* Dummy option, does nothing */ + { "noipx", o_bool, &noipx_opt, NULL, OPT_NOPRINT | 1 }, { NULL } }; @@ -356,31 +395,12 @@ option_t general_options[] = { #define IMPLEMENTATION "" #endif -static char *usage_string = "\ -pppd version %s\n\ -Usage: %s [ options ], where options are:\n\ - Communicate over the named device\n\ - Set the baud rate to \n\ - : Set the local and/or remote interface IP\n\ - addresses. Either one may be omitted.\n\ - asyncmap Set the desired async map to hex \n\ - auth Require authentication from peer\n\ - connect

Invoke shell command

to set up the serial line\n\ - crtscts Use hardware RTS/CTS flow control\n\ - defaultroute Add default route through interface\n\ - file Take options from file \n\ - modem Use modem control lines\n\ - mru Set MRU value to for negotiation\n\ -See pppd(8) for more options.\n\ -"; /* * parse_args - parse a string of arguments from the command line. */ int -parse_args(argc, argv) - int argc; - char **argv; +parse_args(int argc, char **argv) { char *arg; option_t *opt; @@ -416,11 +436,7 @@ parse_args(argc, argv) * and interpret them. */ int -options_from_file(filename, must_exist, check_prot, priv) - char *filename; - int must_exist; - int check_prot; - int priv; +options_from_file(char *filename, int must_exist, int check_prot, int priv) { FILE *f; int i, newline, ret, err; @@ -493,7 +509,7 @@ err: * and if so, interpret options from it. */ int -options_from_user() +options_from_user(void) { char *user, *path, *file; int ret; @@ -503,7 +519,7 @@ options_from_user() pw = getpwuid(getuid()); if (pw == NULL || (user = pw->pw_dir) == NULL || user[0] == 0) return 1; - file = _PATH_USEROPT; + file = PPP_PATH_USEROPT; pl = strlen(user) + strlen(file) + 2; path = malloc(pl); if (path == NULL) @@ -524,7 +540,7 @@ options_from_user() * files a lower priority than the command line. */ int -options_for_tty() +options_for_tty(void) { char *dev, *path, *p; int ret; @@ -535,13 +551,13 @@ options_for_tty() dev = p + 5; if (dev[0] == 0 || strcmp(dev, "tty") == 0) return 1; /* don't look for /etc/ppp/options.tty */ - pl = strlen(_PATH_TTYOPT) + strlen(dev) + 1; + pl = strlen(PPP_PATH_TTYOPT) + strlen(dev) + 1; path = malloc(pl); if (path == NULL) novm("tty init file name"); - slprintf(path, pl, "%s%s", _PATH_TTYOPT, dev); + slprintf(path, pl, "%s%s", PPP_PATH_TTYOPT, dev); /* Turn slashes into dots, for Solaris case (e.g. /dev/term/a) */ - for (p = path + strlen(_PATH_TTYOPT); *p != 0; ++p) + for (p = path + strlen(PPP_PATH_TTYOPT); *p != 0; ++p) if (*p == '/') *p = '.'; option_priority = OPRIO_CFGFILE; @@ -554,9 +570,7 @@ options_for_tty() * options_from_list - process a string of options in a wordlist. */ int -options_from_list(w, priv) - struct wordlist *w; - int priv; +options_from_list(struct wordlist *w, int priv) { char *argv[MAXARGS]; option_t *opt; @@ -600,18 +614,15 @@ err: * match_option - see if this option matches an option_t structure. */ static int -match_option(name, opt, dowild) - char *name; - option_t *opt; - int dowild; +match_option(char *name, option_t *opt, int dowild) { - int (*match) __P((char *, char **, int)); + int (*match)(char *, char **, int); if (dowild != (opt->type == o_wild)) return 0; if (!dowild) return strcmp(name, opt->name) == 0; - match = (int (*) __P((char *, char **, int))) opt->addr; + match = (int (*)(char *, char **, int)) opt->addr; return (*match)(name, NULL, 0); } @@ -621,8 +632,7 @@ match_option(name, opt, dowild) * This could be optimized by using a hash table. */ static option_t * -find_option(name) - const char *name; +find_option(char *name) { option_t *opt; struct option_list *list; @@ -655,16 +665,13 @@ find_option(name) * process_option - process one new-style option. */ static int -process_option(opt, cmd, argv) - option_t *opt; - char *cmd; - char **argv; +process_option(option_t *opt, char *cmd, char **argv) { u_int32_t v; int iv, a; char *sv; - int (*parser) __P((char **)); - int (*wildp) __P((char *, char **, int)); + int (*parser)(char **); + int (*wildp)(char *, char **, int); char *optopt = (opt->type == o_wild)? "": " option"; int prio = option_priority; option_t *mainopt = opt; @@ -794,11 +801,16 @@ process_option(opt, cmd, argv) free(*optptr); *optptr = sv; } + /* obfuscate original argument for things like password */ + if (opt->flags & OPT_HIDE) { + memset(*argv, '?', strlen(*argv)); + *argv = "********"; + } break; case o_special_noarg: case o_special: - parser = (int (*) __P((char **))) opt->addr; + parser = (int (*)(char **)) opt->addr; curopt = opt; if (!(*parser)(argv)) return 0; @@ -822,7 +834,7 @@ process_option(opt, cmd, argv) break; case o_wild: - wildp = (int (*) __P((char *, char **, int))) opt->addr; + wildp = (int (*)(char *, char **, int)) opt->addr; if (!(*wildp)(cmd, argv, 1)) return 0; break; @@ -849,10 +861,7 @@ process_option(opt, cmd, argv) * and source of the option value. Otherwise returns 0. */ int -override_value(option, priority, source) - const char *option; - int priority; - const char *source; +override_value(char *option, int priority, const char *source) { option_t *opt; @@ -873,8 +882,7 @@ override_value(option, priority, source) * n_arguments - tell how many arguments an option takes */ static int -n_arguments(opt) - option_t *opt; +n_arguments(option_t *opt) { return (opt->type == o_bool || opt->type == o_special_noarg || (opt->flags & OPT_NOARG))? 0: 1; @@ -884,8 +892,7 @@ n_arguments(opt) * add_options - add a list of options to the set we grok. */ void -add_options(opt) - option_t *opt; +add_options(option_t *opt) { struct option_list *list; @@ -901,7 +908,7 @@ add_options(opt) * check_options - check that options are valid and consistent. */ void -check_options() +check_options(void) { if (logfile_fd >= 0 && logfile_fd != log_to_fd) close(logfile_fd); @@ -911,10 +918,7 @@ check_options() * print_option - print out an option and its value */ static void -print_option(opt, mainopt, printer, arg) - option_t *opt, *mainopt; - printer_func printer; - void *arg; +print_option(option_t *opt, option_t *mainopt, printer_func printer, void *arg) { int i, v; char *p; @@ -976,15 +980,15 @@ print_option(opt, mainopt, printer, arg) printer(arg, " "); } if (opt->flags & OPT_A2PRINTER) { - void (*oprt) __P((option_t *, printer_func, void *)); - oprt = (void (*) __P((option_t *, printer_func, - void *)))opt->addr2; + void (*oprt)(option_t *, printer_func, void *); + oprt = (void (*)(option_t *, printer_func, void *)) + opt->addr2; (*oprt)(opt, printer, arg); } else if (opt->flags & OPT_A2STRVAL) { p = (char *) opt->addr2; if ((opt->flags & OPT_STATIC) == 0) p = *(char **)p; - printer("%q", p); + printer(arg, "%q", p); } else if (opt->flags & OPT_A2LIST) { struct option_value *ovp; @@ -1013,10 +1017,7 @@ print_option(opt, mainopt, printer, arg) * array of options. */ static void -print_option_list(opt, printer, arg) - option_t *opt; - printer_func printer; - void *arg; +print_option_list(option_t *opt, printer_func printer, void *arg) { while (opt->name != NULL) { if (opt->priority != OPRIO_DEFAULT @@ -1032,9 +1033,7 @@ print_option_list(opt, printer, arg) * print_options - print out what options are in effect. */ void -print_options(printer, arg) - printer_func printer; - void *arg; +print_options(printer_func printer, void *arg) { struct option_list *list; int i; @@ -1053,18 +1052,42 @@ print_options(printer, arg) * usage - print out a message telling how to use the program. */ static void -usage() +usage(void) { - if (phase == PHASE_INITIALIZE) - fprintf(stderr, usage_string, VERSION, progname); + FILE *fp = stderr; + if (phase == PHASE_INITIALIZE) { + fprintf(fp, "%s v%s\n", PACKAGE_NAME, PACKAGE_VERSION); + fprintf(fp, "Copyright (C) 1999-2022 Paul Mackerras, and others. All rights reserved.\n\n"); + + + fprintf(fp, "License BSD: The 3 clause BSD license \n"); + fprintf(fp, "This is free software: you are free to change and redistribute it.\n"); + fprintf(fp, "There is NO WARRANTY, to the extent permitted by law.\n\n"); + + fprintf(fp, "Report Bugs:\n %s\n\n", PACKAGE_BUGREPORT); + fprintf(fp, "Usage: %s [ options ], where options are:\n", progname); + fprintf(fp, " Communicate over the named device\n"); + fprintf(fp, " Set the baud rate to \n"); + fprintf(fp, " : Set the local and/or remote interface IP\n"); + fprintf(fp, " addresses. Either one may be omitted.\n"); + fprintf(fp, " asyncmap Set the desired async map to hex \n"); + fprintf(fp, " auth Require authentication from peer\n"); + fprintf(fp, " connect

Invoke shell command

to set up the serial line\n"); + fprintf(fp, " crtscts Use hardware RTS/CTS flow control\n"); + fprintf(fp, " defaultroute Add default route through interface\n"); + fprintf(fp, " file Take options from file \n"); + fprintf(fp, " modem Use modem control lines\n"); + fprintf(fp, " mru Set MRU value to for negotiation\n"); + fprintf(fp, " show-options Display an extended list of options\n"); + fprintf(fp, "See pppd(8) for more options.\n"); + } } /* * showhelp - print out usage message and exit. */ static int -showhelp(argv) - char **argv; +showhelp(char **argv) { if (phase == PHASE_INITIALIZE) { usage(); @@ -1077,34 +1100,82 @@ showhelp(argv) * showversion - print out the version number and exit. */ static int -showversion(argv) - char **argv; +showversion(char **argv) { if (phase == PHASE_INITIALIZE) { - fprintf(stderr, "pppd version %s\n", VERSION); + fprintf(stdout, "pppd version %s\n", VERSION); exit(0); } return 0; } +/* + * Print a set of options including the name of the group of options + */ +static void +showopts_list(FILE *fp, const char *title, option_t *list, ...) +{ + option_t *opt = list; + va_list varg; + + if (opt && opt->name) { + va_start(varg, list); + vfprintf(fp, title, varg); + fprintf(fp, ":\n"); + va_end(varg); + + do { + fprintf(fp, " %-22s %s\n", opt->name, opt->description?:""); + opt++; + } while (opt && opt->name); + + fprintf(fp, "\n"); + } +} + +/* + * Dumps the list of available options + */ +void +showopts(void) +{ + struct option_list *list; + FILE *fp = stderr; + int i = 0; + + showopts_list(fp, "General Options", + general_options); + + showopts_list(fp, "Authentication Options", + auth_options); + + for (list = extra_options; list != NULL; list = list->next) + showopts_list(fp, "Extra Options", list->options); + + showopts_list(fp, "Channel Options", + the_channel->options); + + for (i = 0; protocols[i] != NULL; ++i) { + if (protocols[i]->options != NULL) { + showopts_list(fp, "%s Options", + protocols[i]->options, + protocols[i]->name); + } + } +} + /* * option_error - print a message about an error in an option. * The message is logged, and also sent to * stderr if phase == PHASE_INITIALIZE. */ void -option_error __V((char *fmt, ...)) +option_error(char *fmt, ...) { va_list args; char buf[1024]; -#if defined(__STDC__) va_start(args, fmt); -#else - char *fmt; - va_start(args); - fmt = va_arg(args, char *); -#endif vslprintf(buf, sizeof(buf), fmt, args); va_end(args); if (phase == PHASE_INITIALIZE) @@ -1117,8 +1188,7 @@ option_error __V((char *fmt, ...)) * readable - check if a file is readable by the real user. */ int -readable(fd) - int fd; +readable(int fd) { uid_t uid; int i; @@ -1147,11 +1217,7 @@ readable(fd) * \ is ignored. */ int -getword(f, word, newlinep, filename) - FILE *f; - char *word; - int *newlinep; - char *filename; +getword(FILE *f, char *word, int *newlinep, char *filename) { int c, len, escape; int quoted, comment; @@ -1350,6 +1416,7 @@ getword(f, word, newlinep, filename) c = getc(f); } + word[MAXWORDLEN-1] = 0; /* make sure word is null-terminated */ /* * End of the word: check for errors. @@ -1392,10 +1459,7 @@ getword(f, word, newlinep, filename) * number_option - parse an unsigned numeric parameter for an option. */ static int -number_option(str, valp, base) - char *str; - u_int32_t *valp; - int base; +number_option(char *str, u_int32_t *valp, int base) { char *ptr; @@ -1415,9 +1479,7 @@ number_option(str, valp, base) * if there is an error. */ int -int_option(str, valp) - char *str; - int *valp; +int_option(char *str, int *valp) { u_int32_t v; @@ -1436,8 +1498,7 @@ int_option(str, valp) * readfile - take commands from a file. */ static int -readfile(argv) - char **argv; +readfile(char **argv) { return options_from_file(*argv, 1, 1, privileged_option); } @@ -1447,8 +1508,7 @@ readfile(argv) * Name may not contain /../, start with / or ../, or end in /.. */ static int -callfile(argv) - char **argv; +callfile(char **argv) { char *fname, *arg, *p; int l, ok; @@ -1474,10 +1534,11 @@ callfile(argv) return 0; } - l = strlen(arg) + strlen(_PATH_PEERFILES) + 1; + l = strlen(arg) + strlen(PPP_PATH_PEERFILES) + 1; if ((fname = (char *) malloc(l)) == NULL) novm("call file name"); - slprintf(fname, l, "%s%s", _PATH_PEERFILES, arg); + slprintf(fname, l, "%s%s", PPP_PATH_PEERFILES, arg); + script_setenv("CALL_FILE", arg, 0); ok = options_from_file(fname, 1, 1, 1); @@ -1485,13 +1546,12 @@ callfile(argv) return ok; } -#ifdef PPP_FILTER +#ifdef PPP_WITH_FILTER /* * setpassfilter - Set the pass filter for packets */ static int -setpassfilter(argv) - char **argv; +setpassfilter(char **argv) { pcap_t *pc; int ret = 1; @@ -1511,8 +1571,7 @@ setpassfilter(argv) * setactivefilter - Set the active filter for packets */ static int -setactivefilter(argv) - char **argv; +setactivefilter(char **argv) { pcap_t *pc; int ret = 1; @@ -1533,8 +1592,7 @@ setactivefilter(argv) * setdomain - Set domain name to append to hostname */ static int -setdomain(argv) - char **argv; +setdomain(char **argv) { gethostname(hostname, MAXNAMELEN); if (**argv != 0) { @@ -1548,8 +1606,7 @@ setdomain(argv) } static int -setlogfile(argv) - char **argv; +setlogfile(char **argv) { int fd, err; uid_t euid; @@ -1579,10 +1636,8 @@ setlogfile(argv) return 1; } -#ifdef MAXOCTETS static int -setmodir(argv) - char **argv; +setmodir(char **argv) { if(*argv == NULL) return 0; @@ -1597,22 +1652,20 @@ setmodir(argv) } return 1; } -#endif -#ifdef PLUGIN +#ifdef PPP_WITH_PLUGINS static int -loadplugin(argv) - char **argv; +loadplugin(char **argv) { char *arg = *argv; void *handle; const char *err; - void (*init) __P((void)); + void (*init)(void); char *path = arg; const char *vers; if (strchr(arg, '/') == 0) { - const char *base = _PATH_PLUGIN; + const char *base = PPP_PATH_PLUGIN; int l = strlen(base) + strlen(arg) + 2; path = malloc(l); if (path == 0) @@ -1653,14 +1706,13 @@ loadplugin(argv) free(path); return 0; } -#endif /* PLUGIN */ +#endif /* PPP_WITH_PLUGINS */ /* * Set an environment variable specified by the user. */ static int -user_setenv(argv) - char **argv; +user_setenv(char **argv) { char *arg = argv[0]; char *eqp; @@ -1712,10 +1764,7 @@ user_setenv(argv) } static void -user_setprint(opt, printer, arg) - option_t *opt; - printer_func printer; - void *arg; +user_setprint(option_t *opt, printer_func printer, void *arg) { struct userenv *uep, *uepnext; @@ -1735,8 +1784,7 @@ user_setprint(opt, printer, arg) } static int -user_unsetenv(argv) - char **argv; +user_unsetenv(char **argv) { struct userenv *uep, **insp; char *arg = argv[0]; @@ -1745,7 +1793,7 @@ user_unsetenv(argv) option_error("unexpected = in name: %s", arg); return 0; } - if (arg == '\0') { + if (*arg == '\0') { option_error("missing variable name for unset"); return 0; } @@ -1784,10 +1832,7 @@ user_unsetenv(argv) } static void -user_unsetprint(opt, printer, arg) - option_t *opt; - printer_func printer; - void *arg; +user_unsetprint(option_t *opt, printer_func printer, void *arg) { struct userenv *uep, *uepnext;