summaryrefslogtreecommitdiffstats
path: root/extensions
diff options
context:
space:
mode:
authorAaron Hopkins <lists@die.net>2002-12-05 20:50:09 +0000
committerHarald Welte <laforge@gnumonks.org>2002-12-05 20:50:09 +0000
commit4e53670bda3a61cdfc69c62f9748e208ccf9a5ba (patch)
tree4dc1ca5d02214333065261beb9ba500272b25b60 /extensions
parenta858ef6873cefb349530a1051c4ec21b04fee207 (diff)
add TARPIT target (Aaron Hopkins)
Diffstat (limited to 'extensions')
-rw-r--r--extensions/Makefile2
-rw-r--r--extensions/libipt_TARPIT.c67
2 files changed, 68 insertions, 1 deletions
diff --git a/extensions/Makefile b/extensions/Makefile
index b57865ac..63980397 100644
--- a/extensions/Makefile
+++ b/extensions/Makefile
@@ -1,6 +1,6 @@
#! /usr/bin/make
-PF_EXT_SLIB:=ah conntrack dscp ecn esp helper icmp length limit mac mark multiport owner pkttype standard state tcp tcpmss tos ttl udp unclean DNAT DSCP ECN LOG MARK MASQUERADE MIRROR REDIRECT REJECT SAME SNAT TCPMSS TOS ULOG
+PF_EXT_SLIB:=ah conntrack dscp ecn esp helper icmp length limit mac mark multiport owner pkttype standard state tcp tcpmss tos ttl udp unclean DNAT DSCP ECN LOG MARK MASQUERADE MIRROR REDIRECT REJECT SAME SNAT TARPIT TCPMSS TOS ULOG
PF6_EXT_SLIB:=eui64 icmpv6 length limit mac mark multiport owner standard tcp udp LOG MARK
# The following may not be present, but compile them anyway.
diff --git a/extensions/libipt_TARPIT.c b/extensions/libipt_TARPIT.c
new file mode 100644
index 00000000..643ce614
--- /dev/null
+++ b/extensions/libipt_TARPIT.c
@@ -0,0 +1,67 @@
+/* Shared library add-on to iptables for TARPIT support */
+#include <stdio.h>
+#include <getopt.h>
+#include <iptables.h>
+
+static void
+help(void)
+{
+ fputs(
+"TARPIT takes no options\n"
+"\n", stdout);
+}
+
+static struct option opts[] = {
+ { 0 }
+};
+
+static void
+init(struct ipt_entry_target *t, unsigned int *nfcache)
+{
+ /* Can't cache this */
+ *nfcache |= NFC_UNKNOWN;
+}
+
+static int
+parse(int c, char **argv, int invert, unsigned int *flags,
+ const struct ipt_entry *entry,
+ struct ipt_entry_target **target)
+{
+ return 0;
+}
+
+static void final_check(unsigned int flags)
+{
+}
+
+static void
+print(const struct ipt_ip *ip,
+ const struct ipt_entry_target *target,
+ int numeric)
+{
+}
+
+static void save(const struct ipt_ip *ip, const struct ipt_entry_target *target)
+{
+}
+
+static
+struct iptables_target tarpit
+= { NULL,
+ "TARPIT",
+ IPTABLES_VERSION,
+ IPT_ALIGN(0),
+ IPT_ALIGN(0),
+ &help,
+ &init,
+ &parse,
+ &final_check,
+ &print,
+ &save,
+ opts
+};
+
+void _init(void)
+{
+ register_target(&tarpit);
+}