summaryrefslogtreecommitdiffstats
path: root/extensions
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-08-04 08:06:55 +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-08-04 08:06:55 +0000
commit57ce068dd2ebec70249f031ed94f3d73e88414b9 (patch)
treeba2ed095d6e584ae4c2c74d51141b2d00f6431e2 /extensions
parent1d01e8effb33fdede44328616fc273751f97df85 (diff)
Unifies libip[6]t_MARK into libxt_MARK
Diffstat (limited to 'extensions')
-rw-r--r--extensions/Makefile6
-rw-r--r--extensions/libip6t_MARK.c118
-rw-r--r--extensions/libxt_MARK.c (renamed from extensions/libipt_MARK.c)90
3 files changed, 56 insertions, 158 deletions
diff --git a/extensions/Makefile b/extensions/Makefile
index 6c9f64b..ff309e7 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 connmark conntrack ecn hashlimit helper icmp iprange owner policy realm state tos ttl unclean CLASSIFY DNAT DSCP ECN LOG MARK MASQUERADE MIRROR NETMAP REDIRECT REJECT SAME SNAT TOS TTL TRACE ULOG
-PF6_EXT_SLIB:=connmark eui64 hl icmp6 owner policy state HL LOG MARK TRACE
-PFX_EXT_SLIB:=comment connlimit dscp esp length limit mac mark multiport physdev pkttype sctp standard tcp tcpmss udp CONNMARK NFQUEUE NOTRACK TCPMSS
+PF_EXT_SLIB:=ah addrtype connmark conntrack ecn hashlimit helper icmp iprange owner policy realm state tos ttl unclean CLASSIFY DNAT DSCP ECN LOG MASQUERADE MIRROR NETMAP REDIRECT REJECT SAME SNAT TOS TTL TRACE ULOG
+PF6_EXT_SLIB:=connmark eui64 hl icmp6 owner policy state HL LOG TRACE
+PFX_EXT_SLIB:=comment connlimit dscp esp length limit mac mark multiport physdev pkttype sctp standard tcp tcpmss udp CONNMARK MARK NFQUEUE NOTRACK TCPMSS
ifeq ($(DO_SELINUX), 1)
PF_EXT_SE_SLIB:=
diff --git a/extensions/libip6t_MARK.c b/extensions/libip6t_MARK.c
deleted file mode 100644
index 19bf40d..0000000
--- a/extensions/libip6t_MARK.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/* Shared library add-on to iptables to add MARK target support. */
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <getopt.h>
-
-#include <ip6tables.h>
-#include <linux/netfilter_ipv6/ip6_tables.h>
-/* For 64bit kernel / 32bit userspace */
-#include "../include/linux/netfilter_ipv6/ip6t_MARK.h"
-
-/* Function which prints out usage message. */
-static void
-help(void)
-{
- printf(
-"MARK target v%s options:\n"
-" --set-mark value Set nfmark value\n"
-"\n",
-IPTABLES_VERSION);
-}
-
-static const struct option opts[] = {
- { .name = "set-mark", .has_arg = 1, .flag = 0, .val = '1' },
- { .name = 0 }
-};
-
-/* Initialize the target. */
-static void
-init(struct xt_entry_target *t, unsigned int *nfcache)
-{
-}
-
-/* Function which parses command options; returns true if it
- ate an option */
-static int
-parse(int c, char **argv, int invert, unsigned int *flags,
- const void *entry,
- struct xt_entry_target **target)
-{
- struct ip6t_mark_target_info *markinfo
- = (struct ip6t_mark_target_info *)(*target)->data;
-
- switch (c) {
- case '1':
- if (string_to_number_l(optarg, 0, 0,
- &markinfo->mark))
- exit_error(PARAMETER_PROBLEM, "Bad MARK value `%s'", optarg);
- if (*flags)
- exit_error(PARAMETER_PROBLEM,
- "MARK target: Can't specify --set-mark twice");
- *flags = 1;
- break;
-
- default:
- return 0;
- }
-
- return 1;
-}
-
-static void
-final_check(unsigned int flags)
-{
- if (!flags)
- exit_error(PARAMETER_PROBLEM,
- "MARK target: Parameter --set-mark is required");
-}
-
-static void
-print_mark(unsigned long mark)
-{
- printf("0x%lx ", mark);
-}
-
-/* Prints out the targinfo. */
-static void
-print(const void *ip,
- const struct xt_entry_target *target,
- int numeric)
-{
- const struct ip6t_mark_target_info *markinfo =
- (const struct ip6t_mark_target_info *)target->data;
-
- printf("MARK set ");
- print_mark(markinfo->mark);
-}
-
-/* Saves the union ipt_targinfo in parsable form to stdout. */
-static void
-save(const void *ip, const struct xt_entry_target *target)
-{
- const struct ip6t_mark_target_info *markinfo =
- (const struct ip6t_mark_target_info *)target->data;
-
- printf("--set-mark ");
- print_mark(markinfo->mark);
-}
-
-static
-struct ip6tables_target mark = {
- .name = "MARK",
- .version = IPTABLES_VERSION,
- .size = IP6T_ALIGN(sizeof(struct ip6t_mark_target_info)),
- .userspacesize = IP6T_ALIGN(sizeof(struct ip6t_mark_target_info)),
- .help = &help,
- .init = &init,
- .parse = &parse,
- .final_check = &final_check,
- .print = &print,
- .save = &save,
- .extra_opts = opts
-};
-
-void _init(void)
-{
- register_target6(&mark);
-}
diff --git a/extensions/libipt_MARK.c b/extensions/libxt_MARK.c
index 6c96656..ff73767 100644
--- a/extensions/libipt_MARK.c
+++ b/extensions/libxt_MARK.c
@@ -4,10 +4,9 @@
#include <stdlib.h>
#include <getopt.h>
-#include <iptables.h>
-#include <linux/netfilter_ipv4/ip_tables.h>
-/* For 64bit kernel / 32bit userspace */
-#include "../include/linux/netfilter_ipv4/ipt_MARK.h"
+#include <xtables.h>
+#include <linux/netfilter/x_tables.h>
+#include <linux/netfilter/xt_MARK.h>
/* Function which prints out usage message. */
static void
@@ -42,8 +41,8 @@ parse_v0(int c, char **argv, int invert, unsigned int *flags,
const void *entry,
struct xt_entry_target **target)
{
- struct ipt_mark_target_info *markinfo
- = (struct ipt_mark_target_info *)(*target)->data;
+ struct xt_mark_target_info *markinfo
+ = (struct xt_mark_target_info *)(*target)->data;
switch (c) {
case '1':
@@ -84,18 +83,18 @@ parse_v1(int c, char **argv, int invert, unsigned int *flags,
const void *entry,
struct xt_entry_target **target)
{
- struct ipt_mark_target_info_v1 *markinfo
- = (struct ipt_mark_target_info_v1 *)(*target)->data;
+ struct xt_mark_target_info_v1 *markinfo
+ = (struct xt_mark_target_info_v1 *)(*target)->data;
switch (c) {
case '1':
- markinfo->mode = IPT_MARK_SET;
+ markinfo->mode = XT_MARK_SET;
break;
case '2':
- markinfo->mode = IPT_MARK_AND;
+ markinfo->mode = XT_MARK_AND;
break;
case '3':
- markinfo->mode = IPT_MARK_OR;
+ markinfo->mode = XT_MARK_OR;
break;
default:
return 0;
@@ -124,8 +123,8 @@ print_v0(const void *ip,
const struct xt_entry_target *target,
int numeric)
{
- const struct ipt_mark_target_info *markinfo =
- (const struct ipt_mark_target_info *)target->data;
+ const struct xt_mark_target_info *markinfo =
+ (const struct xt_mark_target_info *)target->data;
printf("MARK set ");
print_mark(markinfo->mark);
}
@@ -134,8 +133,8 @@ print_v0(const void *ip,
static void
save_v0(const void *ip, const struct xt_entry_target *target)
{
- const struct ipt_mark_target_info *markinfo =
- (const struct ipt_mark_target_info *)target->data;
+ const struct xt_mark_target_info *markinfo =
+ (const struct xt_mark_target_info *)target->data;
printf("--set-mark ");
print_mark(markinfo->mark);
@@ -147,17 +146,17 @@ print_v1(const void *ip,
const struct xt_entry_target *target,
int numeric)
{
- const struct ipt_mark_target_info_v1 *markinfo =
- (const struct ipt_mark_target_info_v1 *)target->data;
+ const struct xt_mark_target_info_v1 *markinfo =
+ (const struct xt_mark_target_info_v1 *)target->data;
switch (markinfo->mode) {
- case IPT_MARK_SET:
+ case XT_MARK_SET:
printf("MARK set ");
break;
- case IPT_MARK_AND:
+ case XT_MARK_AND:
printf("MARK and ");
break;
- case IPT_MARK_OR:
+ case XT_MARK_OR:
printf("MARK or ");
break;
}
@@ -168,57 +167,74 @@ print_v1(const void *ip,
static void
save_v1(const void *ip, const struct xt_entry_target *target)
{
- const struct ipt_mark_target_info_v1 *markinfo =
- (const struct ipt_mark_target_info_v1 *)target->data;
+ const struct xt_mark_target_info_v1 *markinfo =
+ (const struct xt_mark_target_info_v1 *)target->data;
switch (markinfo->mode) {
- case IPT_MARK_SET:
+ case XT_MARK_SET:
printf("--set-mark ");
break;
- case IPT_MARK_AND:
+ case XT_MARK_AND:
printf("--and-mark ");
break;
- case IPT_MARK_OR:
+ case XT_MARK_OR:
printf("--or-mark ");
break;
}
print_mark(markinfo->mark);
}
-static
-struct iptables_target mark_v0 = {
+static struct xtables_target mark_v0 = {
+ .family = AF_INET,
.name = "MARK",
.version = IPTABLES_VERSION,
.revision = 0,
- .size = IPT_ALIGN(sizeof(struct ipt_mark_target_info)),
- .userspacesize = IPT_ALIGN(sizeof(struct ipt_mark_target_info)),
+ .size = XT_ALIGN(sizeof(struct xt_mark_target_info)),
+ .userspacesize = XT_ALIGN(sizeof(struct xt_mark_target_info)),
.help = &help,
.init = &init,
.parse = &parse_v0,
.final_check = &final_check,
.print = &print_v0,
.save = &save_v0,
- .extra_opts = opts
+ .extra_opts = opts,
};
-static
-struct iptables_target mark_v1 = {
+static struct xtables_target mark_v1 = {
+ .family = AF_INET,
.name = "MARK",
.version = IPTABLES_VERSION,
.revision = 1,
- .size = IPT_ALIGN(sizeof(struct ipt_mark_target_info_v1)),
- .userspacesize = IPT_ALIGN(sizeof(struct ipt_mark_target_info_v1)),
+ .size = XT_ALIGN(sizeof(struct xt_mark_target_info_v1)),
+ .userspacesize = XT_ALIGN(sizeof(struct xt_mark_target_info_v1)),
.help = &help,
.init = &init,
.parse = &parse_v1,
.final_check = &final_check,
.print = &print_v1,
.save = &save_v1,
- .extra_opts = opts
+ .extra_opts = opts,
+};
+
+static struct xtables_target mark6_v0 = {
+ .family = AF_INET6,
+ .name = "MARK",
+ .version = IPTABLES_VERSION,
+ .revision = 0,
+ .size = XT_ALIGN(sizeof(struct xt_mark_target_info)),
+ .userspacesize = XT_ALIGN(sizeof(struct xt_mark_target_info)),
+ .help = &help,
+ .init = &init,
+ .parse = &parse_v0,
+ .final_check = &final_check,
+ .print = &print_v0,
+ .save = &save_v0,
+ .extra_opts = opts,
};
void _init(void)
{
- register_target(&mark_v0);
- register_target(&mark_v1);
+ xtables_register_target(&mark_v0);
+ xtables_register_target(&mark_v1);
+ xtables_register_target(&mark6_v0);
}