📄 options.c
字号:
/* * setchapfile - specifies CHAP info for authenticating with peer. */static intsetchapfile(argv)char *argv;{ FILE * ufile; ppp_if[ppp_unit]->lcp_allowoptions.neg_chap = 1; ppp_if[ppp_unit]->options->chap_file = (char *)stringdup(argv); /* open user info file */ if ((ufile = fopen(argv, "r")) == NULL) { syslog(LOG_ERR, "unable to open CHAP secrets file %s", argv); return 0; } if (!readable(fileno(ufile))) { syslog(LOG_ERR, "%s: access denied", argv); fclose(ufile); return 0; } check_access(ufile, argv); fclose(ufile); return (1);}/* * setnovj - disable vj compression */static intsetnovj(){ ppp_if[ppp_unit]->ipcp_wantoptions.neg_vj = 0; ppp_if[ppp_unit]->ipcp_allowoptions.neg_vj = 0; return (1);}/* * setnovjccomp - disable VJ connection-ID compression */static intsetnovjccomp(){ ppp_if[ppp_unit]->ipcp_wantoptions.cflag = 0; ppp_if[ppp_unit]->ipcp_allowoptions.cflag = 0; return (1);}/* * setvjslots - set maximum number of connection slots for VJ compression */static intsetvjslots(argv) char *argv;{ int value; if (!int_option(argv, &value)) return 0; if (value < 2 || value > 16) { syslog(LOG_ERR, "pppd: vj-max-slots value must be between 2 and 16"); return 0; } ppp_if[ppp_unit]->ipcp_wantoptions.maxslotindex = ppp_if[ppp_unit]->ipcp_allowoptions.maxslotindex = value - 1; return 1;}#ifdef notyet/* * setconnector - Set a program to connect to a serial line */static intsetconnector(argv) char *argv;{ ppp_if[ppp_unit]->connector = (char *)stringdup(argv); if (ppp_if[ppp_unit]->connector == NULL) novm("connector string"); return (1);}#endif /* notyet */#ifdef notyet/* * setdisconnector - Set a program to disconnect from the serial line */static intsetdisconnector(argv) char *argv;{ ppp_if[ppp_unit]->disconnector = (char *)stringdup(argv); if (ppp_if[ppp_unit]->disconnector == NULL) novm("disconnector string"); return (1);}#endif /* notyet */#ifdef notyet/* * setdomain - Set domain name to append to hostname */static intsetdomain(argv) char *argv;{ strncat(ppp_if[ppp_unit]->hostname, argv, MAXNAMELEN - strlen(ppp_if[ppp_unit]->hostname)); ppp_if[ppp_unit]->hostname[MAXNAMELEN-1] = 0; return (1);}#endif /* notyet *//* * setasyncmap - add bits to asyncmap (what we request peer to escape). */static intsetasyncmap(argv) char *argv;{ long asyncmap; if (!number_option(argv, &asyncmap, 16)) return 0; ppp_if[ppp_unit]->lcp_wantoptions.asyncmap |= asyncmap; ppp_if[ppp_unit]->lcp_wantoptions.neg_asyncmap = 1; return (1);}/* * setescape - add chars to the set we escape on transmission. */static intsetescape(argv) char *argv;{ int n, ret; char *p, *endp; p = argv; ret = 1; while (*p) { n = strtoul(p, &endp, 16); if (p == endp) { syslog(LOG_ERR, "invalid hex number: %s", p); return 0; } p = endp; if (n < 0 || (0x20 <= n && n <= 0x3F) || n == 0x5E || n > 0xFF) { syslog(LOG_ERR, "can't escape character 0x%x", n); ret = 0; } else ppp_if[ppp_unit]->xmit_accm[n >> 5] |= 1 << (n & 0x1F); while (*p == ',' || *p == ' ') ++p; } return ret;}/* * setspeed - Set the speed. */static intsetspeed(arg, is_string) int arg; int is_string;{ char *ptr; int spd; if (is_string) { spd = strtol((char *)arg, &ptr, 0); if (ptr == (char *)arg || *ptr != 0 || spd == 0) return 0; ppp_if[ppp_unit]->inspeed = spd; } else ppp_if[ppp_unit]->inspeed = arg; return 1;}/* * setdevname - Set the device name. */intsetdevname(cp) char *cp;{ (void) strncpy(ppp_if[ppp_unit]->devname, cp, MAXPATHLEN); ppp_if[ppp_unit]->devname[MAXPATHLEN-1] = 0; return 1;}/* * setipaddr - Set the IP address * * This function also accepts hostnames apart from ip address strings. * If hostnames are passed to this function, the hostnames should be * added to the system by making calls to hostAdd() prior to calling this * function. This requires the hostTblInit be called before hostGetByName * is called. */intsetipaddr(local_addr, remote_addr) char *local_addr; char *remote_addr;{ u_long local, remote; ipcp_options *wo = &ppp_if[ppp_unit]->ipcp_wantoptions; if ((local = hostGetByName (local_addr)) == ERROR) { if ((((local = inet_addr(local_addr)) == ERROR)) || (bad_ip_adrs(local))) { syslog(LOG_ERR, "bad local IP address: %s", ip_ntoa(local)); return 0; } } else { strncpy(ppp_if[ppp_unit]->our_name, local_addr, MAXNAMELEN); ppp_if[ppp_unit]->our_name[MAXNAMELEN-1] = 0; } if (local != 0) wo->ouraddr = local; if ((remote = hostGetByName (remote_addr)) == ERROR) { if ((((remote = inet_addr(remote_addr)) == ERROR)) || (bad_ip_adrs(remote))) { syslog(LOG_ERR, "bad remote IP address: %s", ip_ntoa(remote)); return 0; } } else { strncpy(ppp_if[ppp_unit]->remote_name, remote_addr, MAXNAMELEN); ppp_if[ppp_unit]->remote_name[MAXNAMELEN-1] = 0; } if (remote != 0) wo->hisaddr = remote; return 1;}#ifdef notyet/* * setnoipdflt - disable setipdefault() */static intsetnoipdflt(){ ppp_if[ppp_unit]->disable_defaultip = 1; return 1;}#endif /* notyet *//* * setipcpaccl - accept peer's idea of our address */static intsetipcpaccl(){ ppp_if[ppp_unit]->ipcp_wantoptions.accept_local = 1; return 1;}/* * setipcpaccr - accept peer's idea of its address */static intsetipcpaccr(){ ppp_if[ppp_unit]->ipcp_wantoptions.accept_remote = 1; return 1;}/* * setipdefault - default our local IP address based on our hostname. */voidsetipdefault(){ u_long local; ipcp_options *wo = &ppp_if[ppp_unit]->ipcp_wantoptions; /* * If local IP address already given, don't bother. */ if (wo->ouraddr != 0 || ppp_if[ppp_unit]->disable_defaultip) return; /* * Look up our hostname (possibly with domain name appended) * and take the first IP address as our local IP address. * If there isn't an IP address for our hostname, too bad. */ wo->accept_local = 1; /* don't insist on this default value */ if ((local = hostGetByName(ppp_if[ppp_unit]->hostname)) == ERROR) return; if (local != 0 && !bad_ip_adrs(local)) wo->ouraddr = local;}/* * setnetmask - set the netmask to be used on the interface. */static intsetnetmask(argv) char *argv;{ u_long mask; if ((mask = inet_addr(argv)) == ERROR || (ppp_if[ppp_unit]->netmask & ~mask) != 0) { syslog(LOG_ERR, "Invalid netmask %s\n", argv); return 0; } ppp_if[ppp_unit]->netmask = mask; return (1);}/* * Return user specified netmask. A value of zero means no netmask has * been set. *//* ARGSUSED */u_longGetMask(addr) u_long addr;{ return(ppp_if[ppp_unit]->netmask);}static intsetname(argv) char *argv;{ if (ppp_if[ppp_unit]->our_name[0] == 0) { strncpy(ppp_if[ppp_unit]->our_name, argv, MAXNAMELEN); ppp_if[ppp_unit]->our_name[MAXNAMELEN-1] = 0; } return 1;}static intsetuser(argv) char *argv;{ strncpy(ppp_if[ppp_unit]->user, argv, MAXNAMELEN); ppp_if[ppp_unit]->user[MAXNAMELEN-1] = 0; return 1;}static intsetpasswd(argv) char *argv;{ strncpy(ppp_if[ppp_unit]->passwd, argv, MAXSECRETLEN); ppp_if[ppp_unit]->passwd[MAXSECRETLEN-1] = 0; return 1;}static intsetremote(argv) char *argv;{ strncpy(ppp_if[ppp_unit]->remote_name, argv, MAXNAMELEN); ppp_if[ppp_unit]->remote_name[MAXNAMELEN-1] = 0; return 1;}#ifdef notyetstatic intsetauth(){ ppp_if[ppp_unit]->auth_required = 1; return 1;}#endif /* notyet */static intsetdefaultroute(){ ppp_if[ppp_unit]->ipcp_wantoptions.default_route = 1; return 1;}static intsetproxyarp(){ ppp_if[ppp_unit]->ipcp_wantoptions.proxy_arp = 1; return 1;}static intsetdologin(){ ppp_if[ppp_unit]->uselogin = 1; return 1;}/* * Functions to set the echo interval for modem-less monitors */static intsetlcpechointv(argv) char *argv;{ return int_option(argv, &ppp_if[ppp_unit]->lcp_echo_interval);}static intsetlcpechofails(argv) char *argv;{ return int_option(argv, &ppp_if[ppp_unit]->lcp_echo_fails);}/* * Functions to set timeouts, max transmits, etc. */static intsetlcptimeout(argv) char *argv;{ return int_option(argv, &ppp_if[ppp_unit]->lcp_fsm.timeouttime);}static int setlcpterm(argv) char *argv;{ return int_option(argv, &ppp_if[ppp_unit]->lcp_fsm.maxtermtransmits);}static int setlcpconf(argv) char *argv;{ return int_option(argv, &ppp_if[ppp_unit]->lcp_fsm.maxconfreqtransmits);}static int setlcpfails(argv) char *argv;{ return int_option(argv, &ppp_if[ppp_unit]->lcp_fsm.maxnakloops);}static int setipcptimeout(argv) char *argv;{ return int_option(argv, &ppp_if[ppp_unit]->ipcp_fsm.timeouttime);}static int setipcpterm(argv) char *argv;{ return int_option(argv, &ppp_if[ppp_unit]->ipcp_fsm.maxtermtransmits);}static int setipcpconf(argv) char *argv;{ return int_option(argv, &ppp_if[ppp_unit]->ipcp_fsm.maxconfreqtransmits);}static int setipcpfails(argv) char *argv;{ return int_option(argv, &ppp_if[ppp_unit]->ipcp_fsm.maxnakloops);}static int setpaptimeout(argv) char *argv;{ return int_option(argv, &ppp_if[ppp_unit]->upap.us_timeouttime);}static int setpapreqs(argv) char *argv;{ return int_option(argv, &ppp_if[ppp_unit]->upap.us_maxtransmits);}static int setchaptimeout(argv) char *argv;{ return int_option(argv, &ppp_if[ppp_unit]->chap.timeouttime);}static int setchapchal(argv) char *argv;{ return int_option(argv, &ppp_if[ppp_unit]->chap.max_transmits);}static int setchapintv(argv) char *argv;{ return int_option(argv, &ppp_if[ppp_unit]->chap.chal_interval);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -