diff options
Diffstat (limited to 'usr.sbin/ppp/defs.c')
-rw-r--r-- | usr.sbin/ppp/defs.c | 450 |
1 files changed, 0 insertions, 450 deletions
diff --git a/usr.sbin/ppp/defs.c b/usr.sbin/ppp/defs.c deleted file mode 100644 index dcd9e47..0000000 --- a/usr.sbin/ppp/defs.c +++ /dev/null @@ -1,450 +0,0 @@ -/*- - * Copyright (c) 1997 Brian Somers <brian@Awfulhak.org> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - - -#include <sys/param.h> -#include <netdb.h> -#include <netinet/in.h> -#include <arpa/inet.h> -#include <sys/socket.h> - -#include <ctype.h> -#include <errno.h> -#include <stdarg.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#if defined(__FreeBSD__) && !defined(NOKLDLOAD) -#include <sys/module.h> -#endif -#include <termios.h> -#if !defined(__FreeBSD__) || __FreeBSD__ < 3 -#include <time.h> -#endif -#include <unistd.h> - -#if defined(__FreeBSD__) && !defined(NOKLDLOAD) -#include "id.h" -#include "log.h" -#endif -#include "defs.h" - -#define issep(c) ((c) == '\t' || (c) == ' ') - -#if defined(__NetBSD__) || __FreeBSD__ < 3 -void -randinit() -{ -#if defined(__FreeBSD__) - static int initdone; /* srandomdev() call is only required once */ - - if (!initdone) { - initdone = 1; - srandomdev(); - } -#else - srandom((time(NULL)^getpid())+random()); -#endif -} -#endif - -ssize_t -fullread(int fd, void *v, size_t n) -{ - size_t got, total; - - for (total = 0; total < n; total += got) - switch ((got = read(fd, (char *)v + total, n - total))) { - case 0: - return total; - case -1: - if (errno == EINTR) - got = 0; - else - return -1; - } - return total; -} - -static struct { - int mode; - const char *name; -} modes[] = { - { PHYS_INTERACTIVE, "interactive" }, - { PHYS_AUTO, "auto" }, - { PHYS_DIRECT, "direct" }, - { PHYS_DEDICATED, "dedicated" }, - { PHYS_DDIAL, "ddial" }, - { PHYS_BACKGROUND, "background" }, - { PHYS_FOREGROUND, "foreground" }, - { PHYS_ALL, "*" }, - { 0, 0 } -}; - -const char * -mode2Nam(int mode) -{ - int m; - - for (m = 0; modes[m].mode; m++) - if (modes[m].mode == mode) - return modes[m].name; - - return "unknown"; -} - -int -Nam2mode(const char *name) -{ - int m, got, len; - - len = strlen(name); - got = -1; - for (m = 0; modes[m].mode; m++) - if (!strncasecmp(name, modes[m].name, len)) { - if (modes[m].name[len] == '\0') - return modes[m].mode; - if (got != -1) - return 0; - got = m; - } - - return got == -1 ? 0 : modes[got].mode; -} - -struct in_addr -GetIpAddr(const char *cp) -{ - struct in_addr ipaddr; - - if (!strcasecmp(cp, "default")) - ipaddr.s_addr = INADDR_ANY; - else if (inet_aton(cp, &ipaddr) == 0) { - const char *ptr; - - /* Any illegal characters ? */ - for (ptr = cp; *ptr != '\0'; ptr++) - if (!isalnum(*ptr) && strchr("-.", *ptr) == NULL) - break; - - if (*ptr == '\0') { - struct hostent *hp; - - hp = gethostbyname(cp); - if (hp && hp->h_addrtype == AF_INET) - memcpy(&ipaddr, hp->h_addr, hp->h_length); - else - ipaddr.s_addr = INADDR_NONE; - } else - ipaddr.s_addr = INADDR_NONE; - } - - return ipaddr; -} - -static const struct speeds { - unsigned nspeed; - speed_t speed; -} speeds[] = { -#ifdef B50 - { 50, B50, }, -#endif -#ifdef B75 - { 75, B75, }, -#endif -#ifdef B110 - { 110, B110, }, -#endif -#ifdef B134 - { 134, B134, }, -#endif -#ifdef B150 - { 150, B150, }, -#endif -#ifdef B200 - { 200, B200, }, -#endif -#ifdef B300 - { 300, B300, }, -#endif -#ifdef B600 - { 600, B600, }, -#endif -#ifdef B1200 - { 1200, B1200, }, -#endif -#ifdef B1800 - { 1800, B1800, }, -#endif -#ifdef B2400 - { 2400, B2400, }, -#endif -#ifdef B4800 - { 4800, B4800, }, -#endif -#ifdef B9600 - { 9600, B9600, }, -#endif -#ifdef B19200 - { 19200, B19200, }, -#endif -#ifdef B38400 - { 38400, B38400, }, -#endif -#ifndef _POSIX_SOURCE -#ifdef B7200 - { 7200, B7200, }, -#endif -#ifdef B14400 - { 14400, B14400, }, -#endif -#ifdef B28800 - { 28800, B28800, }, -#endif -#ifdef B57600 - { 57600, B57600, }, -#endif -#ifdef B76800 - { 76800, B76800, }, -#endif -#ifdef B115200 - { 115200, B115200, }, -#endif -#ifdef B230400 - { 230400, B230400, }, -#endif -#ifdef B460800 - { 460800, B460800, }, -#endif -#ifdef B921600 - { 921600, B921600, }, -#endif -#ifdef EXTA - { 19200, EXTA, }, -#endif -#ifdef EXTB - { 38400, EXTB, }, -#endif -#endif /* _POSIX_SOURCE */ - { 0, 0 } -}; - -unsigned -SpeedToUnsigned(speed_t speed) -{ - const struct speeds *sp; - - for (sp = speeds; sp->nspeed; sp++) { - if (sp->speed == speed) { - return sp->nspeed; - } - } - return 0; -} - -speed_t -UnsignedToSpeed(unsigned nspeed) -{ - const struct speeds *sp; - - for (sp = speeds; sp->nspeed; sp++) { - if (sp->nspeed == nspeed) { - return sp->speed; - } - } - return B0; -} - -char * -findblank(char *p, int flags) -{ - int instring; - - instring = 0; - while (*p) { - if (*p == '\\') { - if (flags & PARSE_REDUCE) { - memmove(p, p + 1, strlen(p)); - if (!*p) - break; - } else - p++; - } else if (*p == '"') { - memmove(p, p + 1, strlen(p)); - instring = !instring; - continue; - } else if (!instring && (issep(*p) || - (*p == '#' && !(flags & PARSE_NOHASH)))) - return p; - p++; - } - - return instring ? NULL : p; -} - -int -MakeArgs(char *script, char **pvect, int maxargs, int flags) -{ - int nargs; - - nargs = 0; - while (*script) { - script += strspn(script, " \t"); - if (*script == '#' && !(flags & PARSE_NOHASH)) { - *script = '\0'; - break; - } - if (*script) { - if (nargs >= maxargs - 1) - break; - *pvect++ = script; - nargs++; - script = findblank(script, flags); - if (script == NULL) - return -1; - else if (!(flags & PARSE_NOHASH) && *script == '#') - *script = '\0'; - else if (*script) - *script++ = '\0'; - } - } - *pvect = NULL; - return nargs; -} - -const char * -NumStr(long val, char *buf, size_t sz) -{ - static char result[23]; /* handles 64 bit numbers */ - - if (buf == NULL || sz == 0) { - buf = result; - sz = sizeof result; - } - snprintf(buf, sz, "<%ld>", val); - return buf; -} - -const char * -HexStr(long val, char *buf, size_t sz) -{ - static char result[21]; /* handles 64 bit numbers */ - - if (buf == NULL || sz == 0) { - buf = result; - sz = sizeof result; - } - snprintf(buf, sz, "<0x%lx>", val); - return buf; -} - -const char * -ex_desc(int ex) -{ - static char num[12]; /* Used immediately if returned */ - static const char * const desc[] = { - "normal", "start", "sock", "modem", "dial", "dead", "done", - "reboot", "errdead", "hangup", "term", "nodial", "nologin", - "redial", "reconnect" - }; - - if (ex >= 0 && ex < (int)(sizeof desc / sizeof *desc)) - return desc[ex]; - snprintf(num, sizeof num, "%d", ex); - return num; -} - -void -SetTitle(const char *title) -{ - if (title == NULL) - setproctitle(NULL); - else if (title[0] == '-' && title[1] != '\0') - setproctitle("-%s", title + 1); - else - setproctitle("%s", title); -} - -fd_set * -mkfdset() -{ - return (fd_set *)malloc(howmany(getdtablesize(), NFDBITS) * sizeof (fd_mask)); -} - -void -zerofdset(fd_set *s) -{ - memset(s, '\0', howmany(getdtablesize(), NFDBITS) * sizeof (fd_mask)); -} - -void -Concatinate(char *buf, size_t sz, int argc, const char *const *argv) -{ - int i, n; - unsigned pos; - - *buf = '\0'; - for (pos = i = 0; i < argc; i++) { - n = snprintf(buf + pos, sz - pos, "%s%s", i ? " " : "", argv[i]); - if (n < 0) { - buf[pos] = '\0'; - break; - } - if ((pos += n) >= sz) - break; - } -} - -#if defined(__FreeBSD__) && !defined(NOKLDLOAD) -int -loadmodules(int how, const char *module, ...) -{ - int loaded = 0; - va_list ap; - - va_start(ap, module); - while (module != NULL) { - if (modfind(module) == -1) { - if (ID0kldload(module) == -1) { - if (how == LOAD_VERBOSLY) - log_Printf(LogWARN, "%s: Cannot load module\n", module); - } else - loaded++; - } - module = va_arg(ap, const char *); - } - va_end(ap); - return loaded; -} -#else -int -loadmodules(int how __unused, const char *module __unused, ...) -{ - return 0; -} -#endif |