diff options
author | brian <brian@cvs.openbsd.org> | 1998-04-27 02:13:59 +0000 |
---|---|---|
committer | brian <brian@cvs.openbsd.org> | 1998-04-27 02:13:59 +0000 |
commit | 1dceb475fd889e141352fb0d4e6e57baf47f25dc (patch) | |
tree | ace2b0588ef7c9e5124dda98d6235066ad59e6f3 | |
parent | 5ecbdb4ab5d8453a2a3599c15c7fdebee9cb4159 (diff) |
Remove mention of libalias and dlopen/dlsym.
-rw-r--r-- | usr.sbin/ppp/alias_cmd.c | 195 | ||||
-rw-r--r-- | usr.sbin/ppp/loadalias.c | 174 |
2 files changed, 0 insertions, 369 deletions
diff --git a/usr.sbin/ppp/alias_cmd.c b/usr.sbin/ppp/alias_cmd.c deleted file mode 100644 index 393f19a2e4e..00000000000 --- a/usr.sbin/ppp/alias_cmd.c +++ /dev/null @@ -1,195 +0,0 @@ -/*- - * The code in this file was written by Eivind Eklund <perhaps@yes.no>, - * who places it in the public domain without restriction. - * - * $Id: alias_cmd.c,v 1.5 1998/01/21 02:13:28 brian Exp $ - */ - -#include <sys/param.h> -#include <netinet/in.h> -#include <arpa/inet.h> -#include <netdb.h> - -#include <limits.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include "defs.h" -#include "command.h" -#include "mbuf.h" -#include "log.h" -#include "loadalias.h" -#include "vars.h" -#include "alias_cmd.h" - - -static int StrToAddr(const char *, struct in_addr *); -static int StrToPort(const char *, u_short *, const char *); -static int StrToAddrAndPort(const char *, struct in_addr *, u_short *, const char *); - - -int -AliasRedirectPort(struct cmdargs const *arg) -{ - if (!(mode & MODE_ALIAS)) { - if (VarTerm) - fprintf(VarTerm, "Alias not enabled\n"); - return 1; - } else if (arg->argc == 3) { - char proto_constant; - const char *proto; - u_short local_port; - u_short alias_port; - int error; - struct in_addr local_addr; - struct in_addr null_addr; - struct alias_link *link; - - proto = arg->argv[0]; - if (strcmp(proto, "tcp") == 0) { - proto_constant = IPPROTO_TCP; - } else if (strcmp(proto, "udp") == 0) { - proto_constant = IPPROTO_UDP; - } else { - if (VarTerm) { - fprintf(VarTerm, "port redirect: protocol must be tcp or udp\n"); - fprintf(VarTerm, "Usage: alias %s %s\n", arg->cmd->name, - arg->cmd->syntax); - } - return 1; - } - - error = StrToAddrAndPort(arg->argv[1], &local_addr, &local_port, proto); - if (error) { - if (VarTerm) { - fprintf(VarTerm, "port redirect: error reading local addr:port\n"); - fprintf(VarTerm, "Usage: alias %s %s\n", arg->cmd->name, arg->cmd->syntax); - } - return 1; - } - error = StrToPort(arg->argv[2], &alias_port, proto); - if (error) { - if (VarTerm) { - fprintf(VarTerm, "port redirect: error reading alias port\n"); - fprintf(VarTerm, "Usage: alias %s %s\n", arg->cmd->name, arg->cmd->syntax); - } - return 1; - } - null_addr.s_addr = 0; - - link = VarPacketAliasRedirectPort(local_addr, local_port, - null_addr, 0, - null_addr, alias_port, - proto_constant); - - if (link == NULL && VarTerm) - fprintf(VarTerm, "port redirect: error returned by packed" - " aliasing engine (code=%d)\n", error); - } else - return -1; - - return 0; -} - - -int -AliasRedirectAddr(struct cmdargs const *arg) -{ - if (!(mode & MODE_ALIAS)) { - if (VarTerm) - fprintf(VarTerm, "alias not enabled\n"); - return 1; - } else if (arg->argc == 2) { - int error; - struct in_addr local_addr; - struct in_addr alias_addr; - struct alias_link *link; - - error = StrToAddr(arg->argv[0], &local_addr); - if (error) { - if (VarTerm) - fprintf(VarTerm, "address redirect: invalid local address\n"); - return 1; - } - error = StrToAddr(arg->argv[1], &alias_addr); - if (error) { - if (VarTerm) { - fprintf(VarTerm, "address redirect: invalid alias address\n"); - fprintf(VarTerm, "Usage: alias %s %s\n", arg->cmd->name, arg->cmd->syntax); - } - return 1; - } - link = VarPacketAliasRedirectAddr(local_addr, alias_addr); - if (link == NULL && VarTerm) { - fprintf(VarTerm, "address redirect: packet aliasing engine error\n"); - fprintf(VarTerm, "Usage: alias %s %s\n", arg->cmd->name, arg->cmd->syntax); - } - } else - return -1; - - return 0; -} - - -static int -StrToAddr(const char *str, struct in_addr *addr) -{ - struct hostent *hp; - - if (inet_aton(str, addr)) - return 0; - - hp = gethostbyname(str); - if (!hp) { - LogPrintf(LogWARN, "StrToAddr: Unknown host %s.\n", str); - return -1; - } - *addr = *((struct in_addr *) hp->h_addr); - return 0; -} - - -static int -StrToPort(const char *str, u_short *port, const char *proto) -{ - int iport; - struct servent *sp; - char *end; - - iport = strtol(str, &end, 10); - if (end != str) { - *port = htons(iport); - return 0; - } - sp = getservbyname(str, proto); - if (!sp) { - LogPrintf(LogWARN, "StrToAddr: Unknown port or service %s/%s.\n", - str, proto); - return -1; - } - *port = sp->s_port; - return 0; -} - - -static int -StrToAddrAndPort(const char *str, struct in_addr *addr, u_short *port, const char *proto) -{ - char *colon; - int res; - - colon = strchr(str, ':'); - if (!colon) { - LogPrintf(LogWARN, "StrToAddrAndPort: %s is missing port number.\n", str); - return -1; - } - - *colon = '\0'; /* Cheat the const-ness ! */ - res = StrToAddr(str, addr); - *colon = ':'; /* Cheat the const-ness ! */ - if (res != 0) - return -1; - - return StrToPort(colon+1, port, proto); -} diff --git a/usr.sbin/ppp/loadalias.c b/usr.sbin/ppp/loadalias.c deleted file mode 100644 index ed7727b01df..00000000000 --- a/usr.sbin/ppp/loadalias.c +++ /dev/null @@ -1,174 +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. - * - * $Id: loadalias.c,v 1.6 1998/04/25 09:23:22 brian Exp $ - */ - -#include <sys/param.h> -#include <netinet/in.h> - -#include <dirent.h> -#include <dlfcn.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <sys/socket.h> -#include <unistd.h> - -#include "command.h" -#include "mbuf.h" -#include "log.h" -#include "systems.h" -#include "id.h" -#include "loadalias.h" -#include "defs.h" -#include "vars.h" - -#define _PATH_ALIAS_PREFIX "/usr/lib/libalias.so.2." - -#define off(item) ((int)&(((struct aliasHandlers *)0)->item)) -#if !(defined(__mips) || defined(__powerpc)) /* Any arch that is elf */ -#define entry(a) { off(a), #a } -#else -#define entry(a) { off(a), "_" #a } -#endif - -#ifndef RTLD_NOW -#define RTLD_NOW 1 /* really RTLD_LAZY */ -#endif - -static struct { - int offset; - const char *name; -} map[] = { - entry(PacketAliasGetFragment), - entry(PacketAliasInit), - entry(PacketAliasIn), - entry(PacketAliasOut), - entry(PacketAliasRedirectAddr), - entry(PacketAliasRedirectPort), - entry(PacketAliasSaveFragment), - entry(PacketAliasSetAddress), - entry(PacketAliasSetMode), - entry(PacketAliasFragmentIn), - { 0, 0 } -}; - -static void *dl; - -int -loadAliasHandlers(struct aliasHandlers * h) -{ - const char *path; - const char *env; - int i; - - path = _PATH_ALIAS_PREFIX; - env = getenv("_PATH_ALIAS_PREFIX"); - if (env) { - if (ID0realuid() == 0) - path = env; - else - LogPrintf(LogALERT, "Ignoring environment _PATH_ALIAS_PREFIX" - " value (%s)\n", env); - } - - dl = dlopen(path, RTLD_NOW); - if (dl == (void *) 0) { - /* Look for _PATH_ALIAS_PREFIX with any number appended */ - int plen; - - plen = strlen(path); - if (plen && plen < MAXPATHLEN - 1 && path[plen-1] == '.') { - DIR *d; - char p[MAXPATHLEN], *fix; - char *file, *dir; - - strcpy(p, path); - if ((file = strrchr(p, '/')) != NULL) { - fix = file; - *file++ = '\0'; - dir = p; - } else { - fix = NULL; - file = p; - dir = "."; - } - if ((d = opendir(dir))) { - struct dirent *entry; - int flen; - char *end; - long maxver, ver; - - if (fix) - *fix = '/'; - maxver = -1; - flen = strlen(file); - while ((entry = readdir(d))) - if (entry->d_namlen > flen && !strncmp(entry->d_name, file, flen)) { - ver = strtol(entry->d_name + flen, &end, 10); - strcpy(p + plen, entry->d_name + flen); - if (ver >= 0 && *end == '\0' && ver > maxver && - access(p, R_OK) == 0) - maxver = ver; - } - closedir(d); - - if (maxver > -1) { - sprintf(p + plen, "%ld", maxver); - dl = dlopen(p, RTLD_NOW); - } - } - } - if (dl == (void *) 0) { - LogPrintf(LogWARN, "_PATH_ALIAS_PREFIX (%s*): Invalid lib: %s\n", - path, dlerror()); - return -1; - } - } - for (i = 0; map[i].name; i++) { - *(void **) ((char *) h + map[i].offset) = dlsym(dl, map[i].name); - if (*(void **) ((char *) h + map[i].offset) == (void *) 0) { - LogPrintf(LogWARN, "_PATH_ALIAS (%s*): %s: %s\n", path, - map[i].name, dlerror()); - (void) dlclose(dl); - dl = (void *) 0; - return -1; - } - } - - VarPacketAliasInit(); - - return 0; -} - -void -unloadAliasHandlers() -{ - if (dl) { - dlclose(dl); - dl = (void *) 0; - } -} |