From 9666634a89fa23b0d1202c243cdc1224aa43c2e9 Mon Sep 17 00:00:00 2001 From: brian Date: Sat, 27 Jun 1998 14:17:28 +0000 Subject: [PATCH] Don't dlopen()/dlsym() libalias, use it in the same way as the rest of the world uses libraries. --- usr.sbin/ppp/Makefile | 15 ++++++++++----- usr.sbin/ppp/alias_cmd.c | 38 +++++++++++++++++++++++++++++--------- usr.sbin/ppp/bundle.c | 14 +++++++++----- usr.sbin/ppp/bundle.h | 3 ++- usr.sbin/ppp/command.c | 20 +++++++++----------- usr.sbin/ppp/ip.c | 12 ++++++------ usr.sbin/ppp/ipcp.c | 9 ++++++--- usr.sbin/ppp/main.c | 17 ++++++++++------- usr.sbin/ppp/nat_cmd.c | 38 +++++++++++++++++++++++++++++--------- 9 files changed, 110 insertions(+), 56 deletions(-) diff --git a/usr.sbin/ppp/Makefile b/usr.sbin/ppp/Makefile index 2a8322e047bd..b33fd79093d1 100644 --- a/usr.sbin/ppp/Makefile +++ b/usr.sbin/ppp/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.42 1998/06/24 19:33:30 brian Exp $ +# $Id: Makefile,v 1.43 1998/06/26 18:50:29 brian Exp $ PROG= ppp SRCS= arp.c async.c auth.c bundle.c ccp.c chap.c chat.c command.c \ @@ -26,10 +26,14 @@ DPADD+= ${LIBMD} ${LIBCRYPT} CFLAGS+=-DRELEASE_CRUNCH .endif -.if defined(NOALIAS) || defined(RELEASE_CRUNCH) +.if defined(NOALIAS) CFLAGS+=-DNOALIAS .else -SRCS+= alias_cmd.c loadalias.c +.if !defined(RELEASE_CRUNCH) +SRCS+= alias_cmd.c +LDADD+= -lalias +DPADD+= ${LIBALIAS} +.endif .endif .if exists(${.CURDIR}/../../secure) && !defined(NOCRYPT) && !defined(NOSECURE) && !defined(RELEASE_CRUNCH) @@ -43,8 +47,9 @@ DPADD+= ${LIBDES} .if defined(RELEASE_CRUNCH) # We must create these objects because the crunchgen will link them, # and we don't want any unused symbols to spoil the final link. -SRCS+= alias_cmd.c loadalias.c chap_ms.c -chap_ms.o alias_cmd.o loadalias.o: +CFLAGS+=-DNOALIAS +SRCS+= alias_cmd.c chap_ms.c +chap_ms.o alias_cmd.o: >null_${.PREFIX}.c cc -c -o ${.TARGET} null_${.PREFIX}.c .endif diff --git a/usr.sbin/ppp/alias_cmd.c b/usr.sbin/ppp/alias_cmd.c index eb9d15f16e0f..9be19fa5b841 100644 --- a/usr.sbin/ppp/alias_cmd.c +++ b/usr.sbin/ppp/alias_cmd.c @@ -2,14 +2,20 @@ * The code in this file was written by Eivind Eklund , * who places it in the public domain without restriction. * - * $Id: alias_cmd.c,v 1.13 1998/05/21 21:43:42 brian Exp $ + * $Id: alias_cmd.c,v 1.14 1998/06/15 19:05:59 brian Exp $ */ #include #include #include #include +#include +#include +#include +#include +#include +#include #include #include #include @@ -18,10 +24,24 @@ #include "defs.h" #include "command.h" #include "log.h" -#include "loadalias.h" #include "alias_cmd.h" #include "descriptor.h" #include "prompt.h" +#include "timer.h" +#include "fsm.h" +#include "slcompress.h" +#include "throughput.h" +#include "iplist.h" +#include "ipcp.h" +#include "lqr.h" +#include "hdlc.h" +#include "mbuf.h" +#include "lcp.h" +#include "ccp.h" +#include "link.h" +#include "mp.h" +#include "filter.h" +#include "bundle.h" static int StrToAddr(const char *, struct in_addr *); @@ -32,7 +52,7 @@ static int StrToAddrAndPort(const char *, struct in_addr *, u_short *, const cha int alias_RedirectPort(struct cmdargs const *arg) { - if (!alias_IsEnabled()) { + if (!arg->bundle->AliasEnabled) { prompt_Printf(arg->prompt, "Alias not enabled\n"); return 1; } else if (arg->argc == arg->argn+3) { @@ -76,10 +96,10 @@ alias_RedirectPort(struct cmdargs const *arg) } null_addr.s_addr = INADDR_ANY; - link = (*PacketAlias.RedirectPort)(local_addr, local_port, - null_addr, 0, - null_addr, alias_port, - proto_constant); + link = PacketAliasRedirectPort(local_addr, local_port, + null_addr, 0, + null_addr, alias_port, + proto_constant); if (link == NULL) prompt_Printf(arg->prompt, "port redirect: error returned by packed" @@ -94,7 +114,7 @@ alias_RedirectPort(struct cmdargs const *arg) int alias_RedirectAddr(struct cmdargs const *arg) { - if (!alias_IsEnabled()) { + if (!arg->bundle->AliasEnabled) { prompt_Printf(arg->prompt, "alias not enabled\n"); return 1; } else if (arg->argc == arg->argn+2) { @@ -115,7 +135,7 @@ alias_RedirectAddr(struct cmdargs const *arg) arg->cmd->syntax); return 1; } - link = (*PacketAlias.RedirectAddr)(local_addr, alias_addr); + link = PacketAliasRedirectAddr(local_addr, alias_addr); if (link == NULL) { prompt_Printf(arg->prompt, "address redirect: packet aliasing" " engine error\n"); diff --git a/usr.sbin/ppp/bundle.c b/usr.sbin/ppp/bundle.c index 620426babe5a..d9532c3f9bc8 100644 --- a/usr.sbin/ppp/bundle.c +++ b/usr.sbin/ppp/bundle.c @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: bundle.c,v 1.24 1998/06/27 12:03:35 brian Exp $ + * $Id: bundle.c,v 1.25 1998/06/27 12:03:46 brian Exp $ */ #include @@ -37,6 +37,9 @@ #include #include +#ifndef NOALIAS +#include +#endif #include #include #include @@ -627,8 +630,8 @@ bundle_DescriptorRead(struct descriptor *d, struct bundle *bundle, struct mbuf *bp; #ifndef NOALIAS - if (alias_IsEnabled()) { - (*PacketAlias.In)(tun.data, sizeof tun.data); + if (bundle->AliasEnabled) { + PacketAliasIn(tun.data, sizeof tun.data); n = ntohs(((struct ip *)tun.data)->ip_len); } #endif @@ -668,8 +671,8 @@ bundle_DescriptorRead(struct descriptor *d, struct bundle *bundle, pri = PacketCheck(bundle, tun.data, n, &bundle->filter.out); if (pri >= 0) { #ifndef NOALIAS - if (alias_IsEnabled()) { - (*PacketAlias.Out)(tun.data, sizeof tun.data); + if (bundle->AliasEnabled) { + PacketAliasOut(tun.data, sizeof tun.data); n = ntohs(((struct ip *)tun.data)->ip_len); } #endif @@ -815,6 +818,7 @@ bundle_Create(const char *prefix, int type, const char **argv) bundle.routing_seq = 0; bundle.phase = PHASE_DEAD; bundle.CleaningUp = 0; + bundle.AliasEnabled = 0; bundle.fsm.LayerStart = bundle_LayerStart; bundle.fsm.LayerUp = bundle_LayerUp; diff --git a/usr.sbin/ppp/bundle.h b/usr.sbin/ppp/bundle.h index b8fc3709735c..a7c8d7091d29 100644 --- a/usr.sbin/ppp/bundle.h +++ b/usr.sbin/ppp/bundle.h @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: bundle.h,v 1.7 1998/06/12 17:45:04 brian Exp $ + * $Id: bundle.h,v 1.8 1998/06/16 19:40:25 brian Exp $ */ #define PHASE_DEAD 0 /* Link is dead */ @@ -77,6 +77,7 @@ struct bundle { } phys_type; unsigned CleaningUp : 1; /* Going to exit.... */ + unsigned AliasEnabled : 1; /* Are we using libalias ? */ struct fsm_parent fsm; /* Our callback functions */ struct datalink *links; /* Our data links */ diff --git a/usr.sbin/ppp/command.c b/usr.sbin/ppp/command.c index 702b4c8456ca..15c50fbcf5e9 100644 --- a/usr.sbin/ppp/command.c +++ b/usr.sbin/ppp/command.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: command.c,v 1.148 1998/06/20 00:19:33 brian Exp $ + * $Id: command.c,v 1.149 1998/06/25 22:33:15 brian Exp $ * */ #include @@ -124,7 +124,7 @@ #define NEG_DNS 50 const char Version[] = "2.0-beta"; -const char VersionDate[] = "$Date: 1998/06/20 00:19:33 $"; +const char VersionDate[] = "$Date: 1998/06/25 22:33:15 $"; static int ShowCommand(struct cmdargs const *); static int TerminalCommand(struct cmdargs const *); @@ -1695,12 +1695,10 @@ AliasEnable(struct cmdargs const *arg) { if (arg->argc == arg->argn+1) { if (strcasecmp(arg->argv[arg->argn], "yes") == 0) { - if (alias_Load() == 0) - return 0; - log_Printf(LogWARN, "Cannot load alias library\n"); - return 1; + arg->bundle->AliasEnabled = 1; + return 0; } else if (strcasecmp(arg->argv[arg->argn], "no") == 0) { - alias_Unload(); + arg->bundle->AliasEnabled = 0; return 0; } } @@ -1715,14 +1713,14 @@ AliasOption(struct cmdargs const *arg) unsigned param = (unsigned)arg->cmd->args; if (arg->argc == arg->argn+1) { if (strcasecmp(arg->argv[arg->argn], "yes") == 0) { - if (alias_IsEnabled()) { - (*PacketAlias.SetMode)(param, param); + if (arg->bundle->AliasEnabled) { + PacketAliasSetMode(param, param); return 0; } log_Printf(LogWARN, "alias not enabled\n"); } else if (strcmp(arg->argv[arg->argn], "no") == 0) { - if (alias_IsEnabled()) { - (*PacketAlias.SetMode)(0, param); + if (arg->bundle->AliasEnabled) { + PacketAliasSetMode(0, param); return 0; } log_Printf(LogWARN, "alias not enabled\n"); diff --git a/usr.sbin/ppp/ip.c b/usr.sbin/ppp/ip.c index 9ed21ac79420..ef3fab29e488 100644 --- a/usr.sbin/ppp/ip.c +++ b/usr.sbin/ppp/ip.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: ip.c,v 1.44 1998/06/16 19:40:37 brian Exp $ + * $Id: ip.c,v 1.45 1998/06/27 12:03:36 brian Exp $ * * TODO: * o Return ICMP message for filterd packet @@ -398,13 +398,13 @@ ip_Input(struct bundle *bundle, struct mbuf * bp) } #ifndef NOALIAS - if (alias_IsEnabled() && pip->ip_p != IPPROTO_IGMP && + if (bundle->AliasEnabled && pip->ip_p != IPPROTO_IGMP && (pip->ip_p != IPPROTO_IPIP || !IN_CLASSD(ntohl(piip->ip_dst.s_addr)))) { struct tun_data *frag; int iresult; char *fptr; - iresult = (*PacketAlias.In)(tun.data, sizeof tun.data); + iresult = PacketAliasIn(tun.data, sizeof tun.data); nb = ntohs(((struct ip *) tun.data)->ip_len); if (nb > MAX_MRU) { @@ -436,8 +436,8 @@ ip_Input(struct bundle *bundle, struct mbuf * bp) } if (iresult == PKT_ALIAS_FOUND_HEADER_FRAGMENT) { - while ((fptr = (*PacketAlias.GetFragment)(tun.data)) != NULL) { - (*PacketAlias.FragmentIn)(tun.data, fptr); + while ((fptr = PacketAliasGetFragment(tun.data)) != NULL) { + PacketAliasFragmentIn(tun.data, fptr); nb = ntohs(((struct ip *) fptr)->ip_len); frag = (struct tun_data *) ((char *)fptr - sizeof tun + sizeof tun.data); @@ -462,7 +462,7 @@ ip_Input(struct bundle *bundle, struct mbuf * bp) else { tun_fill_header(*frag, AF_INET); memcpy(frag->data, tun.data, nb - sizeof tun + sizeof tun.data); - (*PacketAlias.SaveFragment)(frag->data); + PacketAliasSaveFragment(frag->data); } } } else diff --git a/usr.sbin/ppp/ipcp.c b/usr.sbin/ppp/ipcp.c index 3310b81c7016..e01b34a16520 100644 --- a/usr.sbin/ppp/ipcp.c +++ b/usr.sbin/ppp/ipcp.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: ipcp.c,v 1.57 1998/06/16 19:40:38 brian Exp $ + * $Id: ipcp.c,v 1.58 1998/06/25 22:33:25 brian Exp $ * * TODO: * o More RFC1772 backward compatibility @@ -33,6 +33,9 @@ #include #include +#ifndef NOALIAS +#include +#endif #include #include #include @@ -706,8 +709,8 @@ ipcp_InterfaceUp(struct ipcp *ipcp) } #ifndef NOALIAS - if (alias_IsEnabled()) - (*PacketAlias.SetAddress)(ipcp->my_ip); + if (ipcp->fsm.bundle->AliasEnabled) + PacketAliasSetAddress(ipcp->my_ip); #endif return 1; diff --git a/usr.sbin/ppp/main.c b/usr.sbin/ppp/main.c index 570daef9c400..86eceb7262b5 100644 --- a/usr.sbin/ppp/main.c +++ b/usr.sbin/ppp/main.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: main.c,v 1.136 1998/06/24 19:33:32 brian Exp $ + * $Id: main.c,v 1.137 1998/06/27 12:03:37 brian Exp $ * * TODO: */ @@ -180,23 +180,25 @@ Usage(void) } static char * -ProcessArgs(int argc, char **argv, int *mode) +ProcessArgs(int argc, char **argv, int *mode, int *alias) { int optc, labelrequired, newmode; char *cp; optc = labelrequired = 0; *mode = PHYS_INTERACTIVE; + *alias = 0; while (argc > 0 && **argv == '-') { cp = *argv + 1; newmode = Nam2mode(cp); switch (newmode) { case PHYS_NONE: if (strcmp(cp, "alias") == 0) { -#ifndef NOALIAS - if (alias_Load() != 0) +#ifdef NOALIAS + log_Printf(LogWARN, "Cannot load alias library\n"); +#else + *alias = 1; #endif - log_Printf(LogWARN, "Cannot load alias library\n"); optc--; /* this option isn't exclusive */ } else Usage(); @@ -243,7 +245,7 @@ int main(int argc, char **argv) { char *name, *label; - int nfds, mode; + int nfds, mode, alias; struct bundle *bundle; struct prompt *prompt; @@ -260,7 +262,7 @@ main(int argc, char **argv) name = strrchr(argv[0], '/'); log_Open(name ? name + 1 : argv[0]); - label = ProcessArgs(argc - 1, argv + 1, &mode); + label = ProcessArgs(argc - 1, argv + 1, &mode, &alias); #ifdef __FreeBSD__ /* @@ -324,6 +326,7 @@ main(int argc, char **argv) prompt_Printf(prompt, "Using interface: %s\n", bundle->ifp.Name); } SignalBundle = bundle; + bundle->AliasEnabled = alias; if (system_Select(bundle, "default", CONFFILE, prompt, NULL) < 0) prompt_Printf(prompt, "Warning: No default entry found in config file.\n"); diff --git a/usr.sbin/ppp/nat_cmd.c b/usr.sbin/ppp/nat_cmd.c index eb9d15f16e0f..9be19fa5b841 100644 --- a/usr.sbin/ppp/nat_cmd.c +++ b/usr.sbin/ppp/nat_cmd.c @@ -2,14 +2,20 @@ * The code in this file was written by Eivind Eklund , * who places it in the public domain without restriction. * - * $Id: alias_cmd.c,v 1.13 1998/05/21 21:43:42 brian Exp $ + * $Id: alias_cmd.c,v 1.14 1998/06/15 19:05:59 brian Exp $ */ #include #include #include #include +#include +#include +#include +#include +#include +#include #include #include #include @@ -18,10 +24,24 @@ #include "defs.h" #include "command.h" #include "log.h" -#include "loadalias.h" #include "alias_cmd.h" #include "descriptor.h" #include "prompt.h" +#include "timer.h" +#include "fsm.h" +#include "slcompress.h" +#include "throughput.h" +#include "iplist.h" +#include "ipcp.h" +#include "lqr.h" +#include "hdlc.h" +#include "mbuf.h" +#include "lcp.h" +#include "ccp.h" +#include "link.h" +#include "mp.h" +#include "filter.h" +#include "bundle.h" static int StrToAddr(const char *, struct in_addr *); @@ -32,7 +52,7 @@ static int StrToAddrAndPort(const char *, struct in_addr *, u_short *, const cha int alias_RedirectPort(struct cmdargs const *arg) { - if (!alias_IsEnabled()) { + if (!arg->bundle->AliasEnabled) { prompt_Printf(arg->prompt, "Alias not enabled\n"); return 1; } else if (arg->argc == arg->argn+3) { @@ -76,10 +96,10 @@ alias_RedirectPort(struct cmdargs const *arg) } null_addr.s_addr = INADDR_ANY; - link = (*PacketAlias.RedirectPort)(local_addr, local_port, - null_addr, 0, - null_addr, alias_port, - proto_constant); + link = PacketAliasRedirectPort(local_addr, local_port, + null_addr, 0, + null_addr, alias_port, + proto_constant); if (link == NULL) prompt_Printf(arg->prompt, "port redirect: error returned by packed" @@ -94,7 +114,7 @@ alias_RedirectPort(struct cmdargs const *arg) int alias_RedirectAddr(struct cmdargs const *arg) { - if (!alias_IsEnabled()) { + if (!arg->bundle->AliasEnabled) { prompt_Printf(arg->prompt, "alias not enabled\n"); return 1; } else if (arg->argc == arg->argn+2) { @@ -115,7 +135,7 @@ alias_RedirectAddr(struct cmdargs const *arg) arg->cmd->syntax); return 1; } - link = (*PacketAlias.RedirectAddr)(local_addr, alias_addr); + link = PacketAliasRedirectAddr(local_addr, alias_addr); if (link == NULL) { prompt_Printf(arg->prompt, "address redirect: packet aliasing" " engine error\n");