summaryrefslogtreecommitdiffstats
path: root/usr.sbin/ppp/nat_cmd.c
diff options
context:
space:
mode:
authorbrian <brian@FreeBSD.org>2001-08-02 10:16:32 +0000
committerbrian <brian@FreeBSD.org>2001-08-02 10:16:32 +0000
commitc98910abd5b0b1b0f9f60a1a03c87108d570ecfb (patch)
treed571c8a1dbc9c5738e406b39c8766741a43175e6 /usr.sbin/ppp/nat_cmd.c
parent55328fd4bf7096c3e003d6473be7fe5f910e1ae2 (diff)
downloadFreeBSD-src-c98910abd5b0b1b0f9f60a1a03c87108d570ecfb.zip
FreeBSD-src-c98910abd5b0b1b0f9f60a1a03c87108d570ecfb.tar.gz
Add a ``nat punch_fw'' command for punching FTP and IRC DCC holes through
the firewall.
Diffstat (limited to 'usr.sbin/ppp/nat_cmd.c')
-rw-r--r--usr.sbin/ppp/nat_cmd.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/usr.sbin/ppp/nat_cmd.c b/usr.sbin/ppp/nat_cmd.c
index 05ede84..e61a002 100644
--- a/usr.sbin/ppp/nat_cmd.c
+++ b/usr.sbin/ppp/nat_cmd.c
@@ -435,6 +435,36 @@ nat_SetTarget(struct cmdargs const *arg)
return 0;
}
+#ifndef NO_FW_PUNCH
+int
+nat_PunchFW(struct cmdargs const *arg)
+{
+ char *end;
+ long base, count;
+
+ if (arg->argc == arg->argn) {
+ PacketAliasSetMode(0, PKT_ALIAS_PUNCH_FW);
+ return 0;
+ }
+
+ if (arg->argc != arg->argn + 2)
+ return -1;
+
+ base = strtol(arg->argv[arg->argn], &end, 10);
+ if (*end != '\0' || base < 0)
+ return -1;
+
+ count = strtol(arg->argv[arg->argn + 1], &end, 10);
+ if (*end != '\0' || count < 0)
+ return -1;
+
+ PacketAliasSetFWBase(base, count);
+ PacketAliasSetMode(PKT_ALIAS_PUNCH_FW, PKT_ALIAS_PUNCH_FW);
+
+ return 0;
+}
+#endif
+
static struct mbuf *
nat_LayerPush(struct bundle *bundle, struct link *l, struct mbuf *bp,
int pri, u_short *proto)
OpenPOWER on IntegriCloud