diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2006-08-22 03:31:24 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-09-22 17:55:24 -0400 |
commit | 2521c12cf1a29f6c380b13ca32a38175f6beed08 (patch) | |
tree | 9077f28bd5a1fd25de83874f30cabcd28acb9e6c /net | |
parent | b93ff78317c0b8f42830e2bb13dd8df596232528 (diff) |
[NETFILTER]: conntrack: introduce connection mark event
This patch introduces the mark event. ctnetlink can use this to know if
the mark needs to be dumped.
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/netfilter/xt_CONNMARK.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/net/netfilter/xt_CONNMARK.c b/net/netfilter/xt_CONNMARK.c index 60c375d36f01..784482b74e58 100644 --- a/net/netfilter/xt_CONNMARK.c +++ b/net/netfilter/xt_CONNMARK.c | |||
@@ -52,13 +52,25 @@ target(struct sk_buff **pskb, | |||
52 | switch(markinfo->mode) { | 52 | switch(markinfo->mode) { |
53 | case XT_CONNMARK_SET: | 53 | case XT_CONNMARK_SET: |
54 | newmark = (*ctmark & ~markinfo->mask) | markinfo->mark; | 54 | newmark = (*ctmark & ~markinfo->mask) | markinfo->mark; |
55 | if (newmark != *ctmark) | 55 | if (newmark != *ctmark) { |
56 | *ctmark = newmark; | 56 | *ctmark = newmark; |
57 | #ifdef CONFIG_IP_NF_CONNTRACK_EVENTS | ||
58 | ip_conntrack_event_cache(IPCT_MARK, *pskb); | ||
59 | #else | ||
60 | nf_conntrack_event_cache(IPCT_MARK, *pskb); | ||
61 | #endif | ||
62 | } | ||
57 | break; | 63 | break; |
58 | case XT_CONNMARK_SAVE: | 64 | case XT_CONNMARK_SAVE: |
59 | newmark = (*ctmark & ~markinfo->mask) | ((*pskb)->nfmark & markinfo->mask); | 65 | newmark = (*ctmark & ~markinfo->mask) | ((*pskb)->nfmark & markinfo->mask); |
60 | if (*ctmark != newmark) | 66 | if (*ctmark != newmark) { |
61 | *ctmark = newmark; | 67 | *ctmark = newmark; |
68 | #ifdef CONFIG_IP_NF_CONNTRACK_EVENTS | ||
69 | ip_conntrack_event_cache(IPCT_MARK, *pskb); | ||
70 | #else | ||
71 | nf_conntrack_event_cache(IPCT_MARK, *pskb); | ||
72 | #endif | ||
73 | } | ||
62 | break; | 74 | break; |
63 | case XT_CONNMARK_RESTORE: | 75 | case XT_CONNMARK_RESTORE: |
64 | nfmark = (*pskb)->nfmark; | 76 | nfmark = (*pskb)->nfmark; |