diff options
author | brian <brian@FreeBSD.org> | 2001-08-02 10:16:32 +0000 |
---|---|---|
committer | brian <brian@FreeBSD.org> | 2001-08-02 10:16:32 +0000 |
commit | c98910abd5b0b1b0f9f60a1a03c87108d570ecfb (patch) | |
tree | d571c8a1dbc9c5738e406b39c8766741a43175e6 /usr.sbin/ppp/nat_cmd.c | |
parent | 55328fd4bf7096c3e003d6473be7fe5f910e1ae2 (diff) | |
download | FreeBSD-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.c | 30 |
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) |