summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author/C=JP/ST=JP/CN=Yasuyuki Kozakai/emailAddress=yasuyuki@netfilter.org </C=JP/ST=JP/CN=Yasuyuki Kozakai/emailAddress=yasuyuki@netfilter.org>2007-07-24 06:57:56 +0000
committer/C=JP/ST=JP/CN=Yasuyuki Kozakai/emailAddress=yasuyuki@netfilter.org </C=JP/ST=JP/CN=Yasuyuki Kozakai/emailAddress=yasuyuki@netfilter.org>2007-07-24 06:57:56 +0000
commit889c152a0885687b3229c1dcf498fc5b9a45c270 (patch)
tree4b2653ea4ab010d2fff7a85ac85c98af4151103c
parent916b1ce14cf080e5b28ec1dd2e2b0d700ff1ab15 (diff)
Add IPv6 support to tcpmss match
-rw-r--r--extensions/Makefile4
-rw-r--r--extensions/libxt_tcpmss.c (renamed from extensions/libipt_tcpmss.c)41
-rw-r--r--include/linux/netfilter/xt_tcpmss.h9
-rw-r--r--include/linux/netfilter_ipv4/ipt_tcpmss.h9
4 files changed, 40 insertions, 23 deletions
diff --git a/extensions/Makefile b/extensions/Makefile
index 8bfb40d..b0df81c 100644
--- a/extensions/Makefile
+++ b/extensions/Makefile
@@ -5,9 +5,9 @@
# header files are present in the include/linux directory of this iptables
# package (HW)
#
-PF_EXT_SLIB:=ah addrtype comment connlimit connmark conntrack dscp ecn esp hashlimit helper icmp iprange length limit mac owner physdev pkttype policy realm sctp standard state tcp tcpmss tos ttl unclean CLASSIFY CONNMARK DNAT DSCP ECN LOG MARK MASQUERADE MIRROR NETMAP NFQUEUE REDIRECT REJECT SAME SNAT TCPMSS TOS TTL TRACE ULOG
+PF_EXT_SLIB:=ah addrtype comment connlimit connmark conntrack dscp ecn esp hashlimit helper icmp iprange length limit mac owner physdev pkttype policy realm sctp standard state tcp tos ttl unclean CLASSIFY CONNMARK DNAT DSCP ECN LOG MARK MASQUERADE MIRROR NETMAP NFQUEUE REDIRECT REJECT SAME SNAT TCPMSS TOS TTL TRACE ULOG
PF6_EXT_SLIB:=connlimit connmark eui64 hl icmp6 length limit mac owner physdev policy standard state tcp CONNMARK HL LOG NFQUEUE MARK TCPMSS TRACE
-PFX_EXT_SLIB:=mark multiport udp NOTRACK
+PFX_EXT_SLIB:=mark multiport tcpmss udp NOTRACK
ifeq ($(DO_SELINUX), 1)
PF_EXT_SE_SLIB:=SECMARK CONNSECMARK
diff --git a/extensions/libipt_tcpmss.c b/extensions/libxt_tcpmss.c
index e17c020..db3dd90 100644
--- a/extensions/libipt_tcpmss.c
+++ b/extensions/libxt_tcpmss.c
@@ -5,8 +5,8 @@
#include <stdlib.h>
#include <getopt.h>
-#include <iptables.h>
-#include <linux/netfilter_ipv4/ipt_tcpmss.h>
+#include <xtables.h>
+#include <linux/netfilter/xt_tcpmss.h>
/* Function which prints out usage message. */
static void
@@ -64,8 +64,8 @@ parse(int c, char **argv, int invert, unsigned int *flags,
unsigned int *nfcache,
struct xt_entry_match **match)
{
- struct ipt_tcpmss_match_info *mssinfo =
- (struct ipt_tcpmss_match_info *)(*match)->data;
+ struct xt_tcpmss_match_info *mssinfo =
+ (struct xt_tcpmss_match_info *)(*match)->data;
switch (c) {
case '1':
@@ -112,8 +112,8 @@ print(const void *ip,
const struct xt_entry_match *match,
int numeric)
{
- const struct ipt_tcpmss_match_info *mssinfo =
- (const struct ipt_tcpmss_match_info *)match->data;
+ const struct xt_tcpmss_match_info *mssinfo =
+ (const struct xt_tcpmss_match_info *)match->data;
printf("tcpmss match ");
print_tcpmss(mssinfo->mss_min, mssinfo->mss_max,
@@ -124,20 +124,36 @@ print(const void *ip,
static void
save(const void *ip, const struct xt_entry_match *match)
{
- const struct ipt_tcpmss_match_info *mssinfo =
- (const struct ipt_tcpmss_match_info *)match->data;
+ const struct xt_tcpmss_match_info *mssinfo =
+ (const struct xt_tcpmss_match_info *)match->data;
printf("--mss ");
print_tcpmss(mssinfo->mss_min, mssinfo->mss_max,
mssinfo->invert, 0);
}
-static struct iptables_match tcpmss = {
+static struct xtables_match tcpmss = {
.next = NULL,
+ .family = AF_INET,
.name = "tcpmss",
.version = IPTABLES_VERSION,
- .size = IPT_ALIGN(sizeof(struct ipt_tcpmss_match_info)),
- .userspacesize = IPT_ALIGN(sizeof(struct ipt_tcpmss_match_info)),
+ .size = XT_ALIGN(sizeof(struct xt_tcpmss_match_info)),
+ .userspacesize = XT_ALIGN(sizeof(struct xt_tcpmss_match_info)),
+ .help = &help,
+ .parse = &parse,
+ .final_check = &final_check,
+ .print = &print,
+ .save = &save,
+ .extra_opts = opts
+};
+
+static struct xtables_match tcpmss6 = {
+ .next = NULL,
+ .family = AF_INET6,
+ .name = "tcpmss",
+ .version = IPTABLES_VERSION,
+ .size = XT_ALIGN(sizeof(struct xt_tcpmss_match_info)),
+ .userspacesize = XT_ALIGN(sizeof(struct xt_tcpmss_match_info)),
.help = &help,
.parse = &parse,
.final_check = &final_check,
@@ -148,5 +164,6 @@ static struct iptables_match tcpmss = {
void _init(void)
{
- register_match(&tcpmss);
+ xtables_register_match(&tcpmss);
+ xtables_register_match(&tcpmss6);
}
diff --git a/include/linux/netfilter/xt_tcpmss.h b/include/linux/netfilter/xt_tcpmss.h
new file mode 100644
index 0000000..e03274c
--- /dev/null
+++ b/include/linux/netfilter/xt_tcpmss.h
@@ -0,0 +1,9 @@
+#ifndef _XT_TCPMSS_MATCH_H
+#define _XT_TCPMSS_MATCH_H
+
+struct xt_tcpmss_match_info {
+ u_int16_t mss_min, mss_max;
+ u_int8_t invert;
+};
+
+#endif /*_XT_TCPMSS_MATCH_H*/
diff --git a/include/linux/netfilter_ipv4/ipt_tcpmss.h b/include/linux/netfilter_ipv4/ipt_tcpmss.h
deleted file mode 100644
index e2b1439..0000000
--- a/include/linux/netfilter_ipv4/ipt_tcpmss.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#ifndef _IPT_TCPMSS_MATCH_H
-#define _IPT_TCPMSS_MATCH_H
-
-struct ipt_tcpmss_match_info {
- u_int16_t mss_min, mss_max;
- u_int8_t invert;
-};
-
-#endif /*_IPT_TCPMSS_MATCH_H*/