summaryrefslogtreecommitdiffstats
path: root/usr.sbin
diff options
context:
space:
mode:
authorbrian <brian@FreeBSD.org>1999-09-08 07:34:52 +0000
committerbrian <brian@FreeBSD.org>1999-09-08 07:34:52 +0000
commit7775aefb574911c7dc6b1d669d8af9c6b3762bf0 (patch)
treeba76c136d692c72fbaed9ec7185781c16d131f47 /usr.sbin
parent4b01b2d6fc969207b87b3c5489505bcec0c314bb (diff)
downloadFreeBSD-src-7775aefb574911c7dc6b1d669d8af9c6b3762bf0.zip
FreeBSD-src-7775aefb574911c7dc6b1d669d8af9c6b3762bf0.tar.gz
Cosmetic:
alias_cmd -> nat_cmd after a repo-copy
Diffstat (limited to 'usr.sbin')
-rw-r--r--usr.sbin/ppp/Makefile6
-rw-r--r--usr.sbin/ppp/alias_cmd.c434
-rw-r--r--usr.sbin/ppp/alias_cmd.h15
-rw-r--r--usr.sbin/ppp/command.c2
-rw-r--r--usr.sbin/ppp/mp.c2
-rw-r--r--usr.sbin/ppp/nat_cmd.c2
-rw-r--r--usr.sbin/ppp/physical.c2
7 files changed, 7 insertions, 456 deletions
diff --git a/usr.sbin/ppp/Makefile b/usr.sbin/ppp/Makefile
index c5ddd1f..aeef933 100644
--- a/usr.sbin/ppp/Makefile
+++ b/usr.sbin/ppp/Makefile
@@ -25,7 +25,7 @@ CFLAGS+=-DRELEASE_CRUNCH
CFLAGS+=-DNONAT
.else
.if !defined(RELEASE_CRUNCH)
-SRCS+= alias_cmd.c
+SRCS+= nat_cmd.c
LDADD+= -lalias
DPADD+= ${LIBALIAS}
.endif
@@ -59,8 +59,8 @@ SRCS+= i4b.c
# We must create these objects because crunchgen will link them,
# and we don't want any unused symbols to spoil the final link.
CFLAGS+=-DNONAT -DNORADIUS -DNOI4B
-OBJS+= alias_cmd.o chap_ms.o radius.o
-chap_ms.o alias_cmd.o radius.o:
+OBJS+= nat_cmd.o chap_ms.o radius.o
+chap_ms.o nat_cmd.o radius.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
deleted file mode 100644
index 0439042..0000000
--- a/usr.sbin/ppp/alias_cmd.c
+++ /dev/null
@@ -1,434 +0,0 @@
-/*-
- * The code in this file was written by Eivind Eklund <perhaps@yes.no>,
- * who places it in the public domain without restriction.
- *
- * $FreeBSD$
- */
-
-#include <sys/param.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <netinet/in_systm.h>
-#include <netinet/in.h>
-#include <netinet/ip.h>
-#include <sys/un.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <termios.h>
-
-#ifdef __FreeBSD__
-#include <alias.h>
-#else
-#include "alias.h"
-#endif
-#include "layer.h"
-#include "proto.h"
-#include "defs.h"
-#include "command.h"
-#include "log.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 "mbuf.h"
-#include "lqr.h"
-#include "hdlc.h"
-#include "ipcp.h"
-#include "lcp.h"
-#include "ccp.h"
-#include "link.h"
-#include "mp.h"
-#include "filter.h"
-#ifndef NORADIUS
-#include "radius.h"
-#endif
-#include "bundle.h"
-
-
-static int StrToAddr(const char *, struct in_addr *);
-static int StrToPortRange(const char *, u_short *, u_short *, const char *);
-static int StrToAddrAndPort(const char *, struct in_addr *, u_short *,
- u_short *, const char *);
-
-static void
-lowhigh(u_short *a, u_short *b)
-{
- if (a > b) {
- u_short c;
-
- c = *b;
- *b = *a;
- *a = c;
- }
-}
-
-int
-nat_RedirectPort(struct cmdargs const *arg)
-{
- if (!arg->bundle->NatEnabled) {
- prompt_Printf(arg->prompt, "Alias not enabled\n");
- return 1;
- } else if (arg->argc == arg->argn + 3 || arg->argc == arg->argn + 4) {
- char proto_constant;
- const char *proto;
- struct in_addr localaddr;
- u_short hlocalport, llocalport;
- struct in_addr aliasaddr;
- u_short haliasport, laliasport;
- struct in_addr remoteaddr;
- u_short hremoteport, lremoteport;
- struct alias_link *link;
- int error;
-
- proto = arg->argv[arg->argn];
- if (strcmp(proto, "tcp") == 0) {
- proto_constant = IPPROTO_TCP;
- } else if (strcmp(proto, "udp") == 0) {
- proto_constant = IPPROTO_UDP;
- } else {
- prompt_Printf(arg->prompt, "port redirect: protocol must be"
- " tcp or udp\n");
- return -1;
- }
-
- error = StrToAddrAndPort(arg->argv[arg->argn+1], &localaddr, &llocalport,
- &hlocalport, proto);
- if (error) {
- prompt_Printf(arg->prompt, "nat port: error reading localaddr:port\n");
- return -1;
- }
-
- error = StrToPortRange(arg->argv[arg->argn+2], &laliasport, &haliasport,
- proto);
- if (error) {
- prompt_Printf(arg->prompt, "nat port: error reading alias port\n");
- return -1;
- }
- aliasaddr.s_addr = INADDR_ANY;
-
- if (arg->argc == arg->argn + 4) {
- error = StrToAddrAndPort(arg->argv[arg->argn+3], &remoteaddr,
- &lremoteport, &hremoteport, proto);
- if (error) {
- prompt_Printf(arg->prompt, "nat port: error reading "
- "remoteaddr:port\n");
- return -1;
- }
- } else {
- remoteaddr.s_addr = INADDR_ANY;
- lremoteport = hremoteport = 0;
- }
-
- lowhigh(&llocalport, &hlocalport);
- lowhigh(&laliasport, &haliasport);
- lowhigh(&lremoteport, &hremoteport);
-
- if (haliasport - laliasport != hlocalport - llocalport) {
- prompt_Printf(arg->prompt, "nat port: local & alias port ranges "
- "are not equal\n");
- return -1;
- }
-
- if (hremoteport && hremoteport - lremoteport != hlocalport - llocalport) {
- prompt_Printf(arg->prompt, "nat port: local & remote port ranges "
- "are not equal\n");
- return -1;
- }
-
- while (laliasport <= haliasport) {
- link = PacketAliasRedirectPort(localaddr, htons(llocalport),
- remoteaddr, htons(lremoteport),
- aliasaddr, htons(laliasport),
- proto_constant);
-
- if (link == NULL) {
- prompt_Printf(arg->prompt, "nat port: %d: error %d\n", laliasport,
- error);
- return 1;
- }
- llocalport++;
- laliasport++;
- if (hremoteport)
- lremoteport++;
- }
-
- return 0;
- }
-
- return -1;
-}
-
-
-int
-nat_RedirectAddr(struct cmdargs const *arg)
-{
- if (!arg->bundle->NatEnabled) {
- prompt_Printf(arg->prompt, "nat not enabled\n");
- return 1;
- } else if (arg->argc == arg->argn+2) {
- int error;
- struct in_addr localaddr, aliasaddr;
- struct alias_link *link;
-
- error = StrToAddr(arg->argv[arg->argn], &localaddr);
- if (error) {
- prompt_Printf(arg->prompt, "address redirect: invalid local address\n");
- return 1;
- }
- error = StrToAddr(arg->argv[arg->argn+1], &aliasaddr);
- if (error) {
- prompt_Printf(arg->prompt, "address redirect: invalid alias address\n");
- prompt_Printf(arg->prompt, "Usage: nat %s %s\n", arg->cmd->name,
- arg->cmd->syntax);
- return 1;
- }
- link = PacketAliasRedirectAddr(localaddr, aliasaddr);
- if (link == NULL) {
- prompt_Printf(arg->prompt, "address redirect: packet aliasing"
- " engine error\n");
- prompt_Printf(arg->prompt, "Usage: nat %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) {
- log_Printf(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)
-{
- struct servent *sp;
- char *end;
-
- *port = strtol(str, &end, 10);
- if (*end != '\0') {
- sp = getservbyname(str, proto);
- if (sp == NULL) {
- log_Printf(LogWARN, "StrToAddr: Unknown port or service %s/%s.\n",
- str, proto);
- return -1;
- }
- *port = ntohs(sp->s_port);
- }
-
- return 0;
-}
-
-static int
-StrToPortRange(const char *str, u_short *low, u_short *high, const char *proto)
-{
- char *minus;
- int res;
-
- minus = strchr(str, '-');
- if (minus)
- *minus = '\0'; /* Cheat the const-ness ! */
-
- res = StrToPort(str, low, proto);
-
- if (minus)
- *minus = '-'; /* Cheat the const-ness ! */
-
- if (res == 0) {
- if (minus)
- res = StrToPort(minus + 1, high, proto);
- else
- *high = *low;
- }
-
- return res;
-}
-
-static int
-StrToAddrAndPort(const char *str, struct in_addr *addr, u_short *low,
- u_short *high, const char *proto)
-{
- char *colon;
- int res;
-
- colon = strchr(str, ':');
- if (!colon) {
- log_Printf(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 StrToPortRange(colon + 1, low, high, proto);
-}
-
-int
-nat_ProxyRule(struct cmdargs const *arg)
-{
- char cmd[LINE_LEN];
- int f, pos;
- size_t len;
-
- if (arg->argn >= arg->argc)
- return -1;
-
- for (f = arg->argn, pos = 0; f < arg->argc; f++) {
- len = strlen(arg->argv[f]);
- if (sizeof cmd - pos < len + (f ? 1 : 0))
- break;
- if (f)
- cmd[pos++] = ' ';
- strcpy(cmd + pos, arg->argv[f]);
- pos += len;
- }
-
- return PacketAliasProxyRule(cmd);
-}
-
-int
-nat_Pptp(struct cmdargs const *arg)
-{
- struct in_addr addr;
-
- if (arg->argc == arg->argn) {
- addr.s_addr = INADDR_NONE;
- PacketAliasPptp(addr);
- return 0;
- }
-
- if (arg->argc != arg->argn + 1)
- return -1;
-
- addr = GetIpAddr(arg->argv[arg->argn]);
- if (addr.s_addr == INADDR_NONE) {
- log_Printf(LogWARN, "%s: invalid address\n", arg->argv[arg->argn]);
- return 1;
- }
-
- PacketAliasPptp(addr);
- return 0;
-}
-
-static struct mbuf *
-nat_PadMbuf(struct mbuf *bp, int type)
-{
- struct mbuf **last;
- int len;
-
- mbuf_SetType(bp, type);
- for (last = &bp, len = 0; *last != NULL; last = &(*last)->next)
- len += (*last)->cnt;
-
- len = MAX_MRU - len;
- *last = mbuf_Alloc(len, type);
-
- return bp;
-}
-
-static struct mbuf *
-nat_LayerPush(struct bundle *bundle, struct link *l, struct mbuf *bp,
- int pri, u_short *proto)
-{
- if (!bundle->NatEnabled || *proto != PROTO_IP)
- return bp;
-
- log_Printf(LogDEBUG, "nat_LayerPush: PROTO_IP -> PROTO_IP\n");
- bp = mbuf_Contiguous(nat_PadMbuf(bp, MB_NATOUT));
- PacketAliasOut(MBUF_CTOP(bp), bp->cnt);
- bp->cnt = ntohs(((struct ip *)MBUF_CTOP(bp))->ip_len);
-
- return bp;
-}
-
-static struct mbuf *
-nat_LayerPull(struct bundle *bundle, struct link *l, struct mbuf *bp,
- u_short *proto)
-{
- struct ip *pip, *piip;
- int ret, len;
- struct mbuf **last;
- char *fptr;
-
- if (!bundle->NatEnabled || *proto != PROTO_IP)
- return bp;
-
- log_Printf(LogDEBUG, "nat_LayerPull: PROTO_IP -> PROTO_IP\n");
- bp = mbuf_Contiguous(nat_PadMbuf(bp, MB_NATIN));
- pip = (struct ip *)MBUF_CTOP(bp);
- piip = (struct ip *)((char *)pip + (pip->ip_hl << 2));
-
- if (pip->ip_p == IPPROTO_IGMP ||
- (pip->ip_p == IPPROTO_IPIP && IN_CLASSD(ntohl(piip->ip_dst.s_addr))))
- return bp;
-
- ret = PacketAliasIn(MBUF_CTOP(bp), bp->cnt);
-
- bp->cnt = ntohs(pip->ip_len);
- if (bp->cnt > MAX_MRU) {
- log_Printf(LogWARN, "nat_LayerPull: Problem with IP header length (%d)\n",
- bp->cnt);
- mbuf_Free(bp);
- return NULL;
- }
-
- switch (ret) {
- case PKT_ALIAS_OK:
- break;
-
- case PKT_ALIAS_UNRESOLVED_FRAGMENT:
- /* Save the data for later */
- fptr = malloc(bp->cnt);
- bp = mbuf_Read(bp, fptr, bp->cnt);
- PacketAliasSaveFragment(fptr);
- break;
-
- case PKT_ALIAS_FOUND_HEADER_FRAGMENT:
- /* Fetch all the saved fragments and chain them on the end of `bp' */
- last = &bp->pnext;
- while ((fptr = PacketAliasGetFragment(MBUF_CTOP(bp))) != NULL) {
- PacketAliasFragmentIn(MBUF_CTOP(bp), fptr);
- len = ntohs(((struct ip *)fptr)->ip_len);
- *last = mbuf_Alloc(len, MB_NATIN);
- memcpy(MBUF_CTOP(*last), fptr, len);
- free(fptr);
- last = &(*last)->pnext;
- }
- break;
-
- default:
- mbuf_Free(bp);
- bp = NULL;
- break;
- }
-
- return bp;
-}
-
-struct layer natlayer =
- { LAYER_NAT, "nat", nat_LayerPush, nat_LayerPull };
diff --git a/usr.sbin/ppp/alias_cmd.h b/usr.sbin/ppp/alias_cmd.h
deleted file mode 100644
index 1ce19d1..0000000
--- a/usr.sbin/ppp/alias_cmd.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/*-
- * The code in this file was written by Eivind Eklund <perhaps@yes.no>,
- * who places it in the public domain without restriction.
- *
- * $FreeBSD$
- */
-
-struct cmdargs;
-
-extern int nat_RedirectPort(struct cmdargs const *);
-extern int nat_RedirectAddr(struct cmdargs const *);
-extern int nat_ProxyRule(struct cmdargs const *);
-extern int nat_Pptp(struct cmdargs const *);
-
-extern struct layer natlayer;
diff --git a/usr.sbin/ppp/command.c b/usr.sbin/ppp/command.c
index 66edd60..45e0bcc 100644
--- a/usr.sbin/ppp/command.c
+++ b/usr.sbin/ppp/command.c
@@ -63,7 +63,7 @@
#include "hdlc.h"
#include "ipcp.h"
#ifndef NONAT
-#include "alias_cmd.h"
+#include "nat_cmd.h"
#endif
#include "systems.h"
#include "filter.h"
diff --git a/usr.sbin/ppp/mp.c b/usr.sbin/ppp/mp.c
index 19406ff..43c5829 100644
--- a/usr.sbin/ppp/mp.c
+++ b/usr.sbin/ppp/mp.c
@@ -46,7 +46,7 @@
#include "layer.h"
#ifndef NONAT
-#include "alias_cmd.h"
+#include "nat_cmd.h"
#endif
#include "vjcomp.h"
#include "ua.h"
diff --git a/usr.sbin/ppp/nat_cmd.c b/usr.sbin/ppp/nat_cmd.c
index 0439042..ebf13e7 100644
--- a/usr.sbin/ppp/nat_cmd.c
+++ b/usr.sbin/ppp/nat_cmd.c
@@ -29,7 +29,7 @@
#include "defs.h"
#include "command.h"
#include "log.h"
-#include "alias_cmd.h"
+#include "nat_cmd.h"
#include "descriptor.h"
#include "prompt.h"
#include "timer.h"
diff --git a/usr.sbin/ppp/physical.c b/usr.sbin/ppp/physical.c
index a11dcde..2ee96eb 100644
--- a/usr.sbin/ppp/physical.c
+++ b/usr.sbin/ppp/physical.c
@@ -46,7 +46,7 @@
#include "layer.h"
#ifndef NONAT
-#include "alias_cmd.h"
+#include "nat_cmd.h"
#endif
#include "proto.h"
#include "acf.h"
OpenPOWER on IntegriCloud