Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 194884
b: refs/heads/master
c: 28b9498
h: refs/heads/master
v: v3
  • Loading branch information
Jan Engelhardt authored and Patrick McHardy committed Mar 17, 2010
1 parent a970397 commit e9ba14a
Show file tree
Hide file tree
Showing 7 changed files with 71 additions and 83 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 44c5873199a90a45e9d64a86a1f54b1ccab21ec8
refs/heads/master: 28b949885f80efb87d7cebdcf879c99db12c37bd
6 changes: 1 addition & 5 deletions trunk/include/linux/netfilter/xt_MARK.h
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
#ifndef _XT_MARK_H_target
#define _XT_MARK_H_target

#include <linux/types.h>

struct xt_mark_tginfo2 {
__u32 mark, mask;
};
#include <linux/netfilter/xt_mark.h>

#endif /*_XT_MARK_H_target */
4 changes: 4 additions & 0 deletions trunk/include/linux/netfilter/xt_mark.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@

#include <linux/types.h>

struct xt_mark_tginfo2 {
__u32 mark, mask;
};

struct xt_mark_mtinfo1 {
__u32 mark, mask;
__u8 invert;
Expand Down
46 changes: 29 additions & 17 deletions trunk/net/netfilter/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -314,6 +314,23 @@ config NETFILTER_XTABLES

if NETFILTER_XTABLES

comment "Xtables combined modules"

config NETFILTER_XT_MARK
tristate 'nfmark target and match support'
default m if NETFILTER_ADVANCED=n
---help---
This option adds the "MARK" target and "mark" match.

Netfilter mark matching allows you to match packets based on the
"nfmark" value in the packet.
The target allows you to create rules in the "mangle" table which alter
the netfilter mark (nfmark) field associated with the packet.

Prior to routing, the nfmark can influence the routing method (see
"Use netfilter MARK value as routing key") and can also be used by
other subsystems to change their behavior.

# alphabetically ordered list of targets

comment "Xtables targets"
Expand Down Expand Up @@ -425,16 +442,12 @@ config NETFILTER_XT_TARGET_LED

config NETFILTER_XT_TARGET_MARK
tristate '"MARK" target support'
default m if NETFILTER_ADVANCED=n
help
This option adds a `MARK' target, which allows you to create rules
in the `mangle' table which alter the netfilter mark (nfmark) field
associated with the packet prior to routing. This can change
the routing method (see `Use netfilter MARK value as routing
key') and can also be used by other subsystems to change their
behavior.

To compile it as a module, choose M here. If unsure, say N.
depends on NETFILTER_ADVANCED
select NETFILTER_XT_MARK
---help---
This is a backwards-compat option for the user's convenience
(e.g. when running oldconfig). It selects
CONFIG_NETFILTER_XT_MARK (combined mark/MARK module).

config NETFILTER_XT_TARGET_NFLOG
tristate '"NFLOG" target support'
Expand Down Expand Up @@ -739,13 +752,12 @@ config NETFILTER_XT_MATCH_MAC

config NETFILTER_XT_MATCH_MARK
tristate '"mark" match support'
default m if NETFILTER_ADVANCED=n
help
Netfilter mark matching allows you to match packets based on the
`nfmark' value in the packet. This can be set by the MARK target
(see below).

To compile it as a module, choose M here. If unsure, say N.
depends on NETFILTER_ADVANCED
select NETFILTER_XT_MARK
---help---
This is a backwards-compat option for the user's convenience
(e.g. when running oldconfig). It selects
CONFIG_NETFILTER_XT_MARK (combined mark/MARK module).

config NETFILTER_XT_MATCH_MULTIPORT
tristate '"multiport" Multiple port match support'
Expand Down
5 changes: 3 additions & 2 deletions trunk/net/netfilter/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,9 @@ obj-$(CONFIG_NETFILTER_TPROXY) += nf_tproxy_core.o
# generic X tables
obj-$(CONFIG_NETFILTER_XTABLES) += x_tables.o xt_tcpudp.o

# combos
obj-$(CONFIG_NETFILTER_XT_MARK) += xt_mark.o

# targets
obj-$(CONFIG_NETFILTER_XT_TARGET_CLASSIFY) += xt_CLASSIFY.o
obj-$(CONFIG_NETFILTER_XT_TARGET_CONNMARK) += xt_CONNMARK.o
Expand All @@ -48,7 +51,6 @@ obj-$(CONFIG_NETFILTER_XT_TARGET_CT) += xt_CT.o
obj-$(CONFIG_NETFILTER_XT_TARGET_DSCP) += xt_DSCP.o
obj-$(CONFIG_NETFILTER_XT_TARGET_HL) += xt_HL.o
obj-$(CONFIG_NETFILTER_XT_TARGET_LED) += xt_LED.o
obj-$(CONFIG_NETFILTER_XT_TARGET_MARK) += xt_MARK.o
obj-$(CONFIG_NETFILTER_XT_TARGET_NFLOG) += xt_NFLOG.o
obj-$(CONFIG_NETFILTER_XT_TARGET_NFQUEUE) += xt_NFQUEUE.o
obj-$(CONFIG_NETFILTER_XT_TARGET_NOTRACK) += xt_NOTRACK.o
Expand Down Expand Up @@ -76,7 +78,6 @@ obj-$(CONFIG_NETFILTER_XT_MATCH_IPRANGE) += xt_iprange.o
obj-$(CONFIG_NETFILTER_XT_MATCH_LENGTH) += xt_length.o
obj-$(CONFIG_NETFILTER_XT_MATCH_LIMIT) += xt_limit.o
obj-$(CONFIG_NETFILTER_XT_MATCH_MAC) += xt_mac.o
obj-$(CONFIG_NETFILTER_XT_MATCH_MARK) += xt_mark.o
obj-$(CONFIG_NETFILTER_XT_MATCH_MULTIPORT) += xt_multiport.o
obj-$(CONFIG_NETFILTER_XT_MATCH_OSF) += xt_osf.o
obj-$(CONFIG_NETFILTER_XT_MATCH_OWNER) += xt_owner.o
Expand Down
56 changes: 0 additions & 56 deletions trunk/net/netfilter/xt_MARK.c

This file was deleted.

35 changes: 33 additions & 2 deletions trunk/net/netfilter/xt_mark.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,20 @@

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Marc Boucher <marc@mbsi.ca>");
MODULE_DESCRIPTION("Xtables: packet mark match");
MODULE_DESCRIPTION("Xtables: packet mark operations");
MODULE_ALIAS("ipt_mark");
MODULE_ALIAS("ip6t_mark");
MODULE_ALIAS("ipt_MARK");
MODULE_ALIAS("ip6t_MARK");

static unsigned int
mark_tg(struct sk_buff *skb, const struct xt_target_param *par)
{
const struct xt_mark_tginfo2 *info = par->targinfo;

skb->mark = (skb->mark & ~info->mask) ^ info->mark;
return XT_CONTINUE;
}

static bool
mark_mt(const struct sk_buff *skb, const struct xt_match_param *par)
Expand All @@ -30,6 +41,15 @@ mark_mt(const struct sk_buff *skb, const struct xt_match_param *par)
return ((skb->mark & info->mask) == info->mark) ^ info->invert;
}

static struct xt_target mark_tg_reg __read_mostly = {
.name = "MARK",
.revision = 2,
.family = NFPROTO_UNSPEC,
.target = mark_tg,
.targetsize = sizeof(struct xt_mark_tginfo2),
.me = THIS_MODULE,
};

static struct xt_match mark_mt_reg __read_mostly = {
.name = "mark",
.revision = 1,
Expand All @@ -41,12 +61,23 @@ static struct xt_match mark_mt_reg __read_mostly = {

static int __init mark_mt_init(void)
{
return xt_register_match(&mark_mt_reg);
int ret;

ret = xt_register_target(&mark_tg_reg);
if (ret < 0)
return ret;
ret = xt_register_match(&mark_mt_reg);
if (ret < 0) {
xt_unregister_target(&mark_tg_reg);
return ret;
}
return 0;
}

static void __exit mark_mt_exit(void)
{
xt_unregister_match(&mark_mt_reg);
xt_unregister_target(&mark_tg_reg);
}

module_init(mark_mt_init);
Expand Down

0 comments on commit e9ba14a

Please sign in to comment.