Add support for secmark
Subsystems (3)
Pablo Neira Ayuso
maintainerPATCH 5/5 Add support for secmark
This patch adds support for James Morris' connsecmark.
Signature · 1 line
"Los honestos son inadaptados sociales" -- Les Luthiers
[PATCH][CTNETLINK] Add support for secmark
This patch adds support for James Morris' connsecmark.
include/linux/netfilter/nf_conntrack_common.h +4 -0
@@ -133,6 +133,10 @@ enum ip_conntrack_events/* NAT sequence adjustment */ IPCT_NATSEQADJ_BIT =13 ,IPCT_NATSEQADJ = (1 <<IPCT_NATSEQADJ_BIT ), + +/* Secmark is set */ +IPCT_SECMARK_BIT =12 , + IPCT_SECMARK = (1 << IPCT_SECMARK_BIT), }; enum ip_conntrack_expect_events {
net/netfilter/nf_conntrack_netlink.c +22 -0
@@ -254,6 +254,22 @@ nla_put_failure:#define ctnetlink_dump_mark (a, b) (0)#endif +#ifdef CONFIG_NF_CONNTRACK_SECMARK +static inline int +ctnetlink_dump_secmark (struct sk_buff *skb,const struct nf_conn *ct) +{ +__be32 mark =htonl (ct->secmark); + +NLA_PUT (skb,CTA_SECMARK ,sizeof (u_int32_t), &mark); +return 0 ; + +nla_put_failure: +return -1 ; +} +#else +#define ctnetlink_dump_secmark (a, b) (0) +#endif +#define master_tuple (ct) &(ct->master->tuplehash[IP_CT_DIR_ORIGINAL].tuple) static inline int
@@ -392,6 +408,7 @@ ctnetlink_fill_info(struct sk_buff *skb,ctnetlink_dump_protoinfo (skb, ct) <0 ||ctnetlink_dump_helpinfo (skb, ct) <0 ||ctnetlink_dump_mark (skb, ct) <0 || +ctnetlink_dump_secmark (skb, ct) <0 ||ctnetlink_dump_id (skb, ct) <0 ||ctnetlink_dump_use (skb, ct) <0 || ctnetlink_dump_master(skb, ct) < 0 ||
@@ -493,6 +510,11 @@ static int ctnetlink_conntrack_event(str && ctnetlink_dump_mark(skb, ct) < 0) goto nla_put_failure;#endif +#ifdef CONFIG_NF_CONNTRACK_SECMARK +if ((events &IPCT_SECMARK || ct->secmark) + &&ctnetlink_dump_secmark (skb, ct) <0 ) + goto nla_put_failure; +#endif if (events & IPCT_COUNTER_FILLING && (ctnetlink_dump_counters(skb, ct, IP_CT_DIR_ORIGINAL) < 0 ||
net/netfilter/xt_CONNSECMARK.c +4 -1
@@ -20,6 +20,7 @@#include <linux/netfilter/x_tables.h> #include <linux/netfilter/xt_CONNSECMARK.h> #include <net/netfilter/nf_conntrack.h> +#include <net/netfilter/nf_conntrack_ecache.h> #define PFX "CONNSECMARK: "
@@ -40,8 +41,10 @@ static void secmark_save(const struct skenum ip_conntrack_info ctinfo; ct =nf_ct_get (skb, &ctinfo); -if (ct && !ct->secmark) +if (ct && !ct->secmark) { ct->secmark = skb->secmark; +nf_conntrack_event_cache (IPCT_SECMARK , skb); + } } }
include/linux/netfilter/nfnetlink_conntrack.h +1 -0
@@ -39,6 +39,7 @@ enum ctattr_type {CTA_TUPLE_MASTER ,CTA_NAT_SEQ_ADJ_ORIG ,CTA_NAT_SEQ_ADJ_REPLY , +CTA_SECMARK , __CTA_MAX };#define CTA_MAX (__CTA_MAX - 1)
Pablo Neira Ayuso
maintainerinclude/linux/netfilter/nf_conntrack_common.h enum ip_conntrack_events · line 138
Quoted 11 lines · Pablo Neira Ayuso
Index:
net-2.6.git/include/linux/netfilter/nf_conntrack_common.h
===================================================================include/linux/netfilter/nf_conntrack_common.h +3
-0@@ -133,6 +133,10 @@ enum ip_conntrack_events/* NAT sequence adjustment */ IPCT_NATSEQADJ_BIT =13 ,IPCT_NATSEQADJ = (1 <<IPCT_NATSEQADJ_BIT ), + +/* Secmark is set */ + IPCT_SECMARK_BIT = 12,
^^^
Also bad patch, this should be 14. New patch attached. Sorry.
Signature · 1 line
"Los honestos son inadaptados sociales" -- Les Luthiers
[PATCH][CTNETLINK] Add support for secmark
This patch adds support for James Morris' connsecmark.
include/linux/netfilter/nf_conntrack_common.h +4 -0
@@ -133,6 +133,10 @@ enum ip_conntrack_events/* NAT sequence adjustment */ IPCT_NATSEQADJ_BIT =13 ,IPCT_NATSEQADJ = (1 <<IPCT_NATSEQADJ_BIT ), + +/* Secmark is set */ +IPCT_SECMARK_BIT =14 , + IPCT_SECMARK = (1 << IPCT_SECMARK_BIT), }; enum ip_conntrack_expect_events {
net/netfilter/nf_conntrack_netlink.c +22 -0
@@ -254,6 +254,22 @@ nla_put_failure:#define ctnetlink_dump_mark (a, b) (0)#endif +#ifdef CONFIG_NF_CONNTRACK_SECMARK +static inline int +ctnetlink_dump_secmark (struct sk_buff *skb,const struct nf_conn *ct) +{ +__be32 mark =htonl (ct->secmark); + +NLA_PUT (skb,CTA_SECMARK ,sizeof (u_int32_t), &mark); +return 0 ; + +nla_put_failure: +return -1 ; +} +#else +#define ctnetlink_dump_secmark (a, b) (0) +#endif +#define master_tuple (ct) &(ct->master->tuplehash[IP_CT_DIR_ORIGINAL].tuple) static inline int
@@ -392,6 +408,7 @@ ctnetlink_fill_info(struct sk_buff *skb,ctnetlink_dump_protoinfo (skb, ct) <0 ||ctnetlink_dump_helpinfo (skb, ct) <0 ||ctnetlink_dump_mark (skb, ct) <0 || +ctnetlink_dump_secmark (skb, ct) <0 ||ctnetlink_dump_id (skb, ct) <0 ||ctnetlink_dump_use (skb, ct) <0 || ctnetlink_dump_master(skb, ct) < 0 ||
@@ -493,6 +510,11 @@ static int ctnetlink_conntrack_event(str && ctnetlink_dump_mark(skb, ct) < 0) goto nla_put_failure;#endif +#ifdef CONFIG_NF_CONNTRACK_SECMARK +if ((events &IPCT_SECMARK || ct->secmark) + &&ctnetlink_dump_secmark (skb, ct) <0 ) + goto nla_put_failure; +#endif if (events & IPCT_COUNTER_FILLING && (ctnetlink_dump_counters(skb, ct, IP_CT_DIR_ORIGINAL) < 0 ||
net/netfilter/xt_CONNSECMARK.c +4 -1
@@ -20,6 +20,7 @@#include <linux/netfilter/x_tables.h> #include <linux/netfilter/xt_CONNSECMARK.h> #include <net/netfilter/nf_conntrack.h> +#include <net/netfilter/nf_conntrack_ecache.h> #define PFX "CONNSECMARK: "
@@ -40,8 +41,10 @@ static void secmark_save(const struct skenum ip_conntrack_info ctinfo; ct =nf_ct_get (skb, &ctinfo); -if (ct && !ct->secmark) +if (ct && !ct->secmark) { ct->secmark = skb->secmark; +nf_conntrack_event_cache (IPCT_SECMARK , skb); + } } }
include/linux/netfilter/nfnetlink_conntrack.h +1 -0
@@ -39,6 +39,7 @@ enum ctattr_type {CTA_TUPLE_MASTER ,CTA_NAT_SEQ_ADJ_ORIG ,CTA_NAT_SEQ_ADJ_REPLY , +CTA_SECMARK , __CTA_MAX };#define CTA_MAX (__CTA_MAX - 1)
Quoted 15 lines · Pablo Neira Ayuso
include/linux/netfilter/nf_conntrack_common.h enum ip_conntrack_events · line 139
Quoted 12 lines · Pablo Neira Ayuso
Index:
net-2.6.git/include/linux/netfilter/nf_conntrack_common.h
===================================================================include/linux/netfilter/nf_conntrack_common.h +3
-0@@ -133,6 +133,10 @@ enum ip_conntrack_events/* NAT sequence adjustment */ IPCT_NATSEQADJ_BIT =13 ,IPCT_NATSEQADJ = (1 <<IPCT_NATSEQADJ_BIT ), + +/* Secmark is set */ + IPCT_SECMARK_BIT = 12,^^^
Quoted 1 line
Also bad patch, this should be 14. New patch attached. Sorry
Patch 3 and 5 don't apply without the nat sequence patch, so I'm holding off on these until I know what the NATSEQADJ bit is meant for.
Quoted 1 line · Pablo Neira Ayuso
This patch adds support for James Morris' connsecmark.
Also applied, thanks.
Quoted 4 lines · Patrick McHardy
Quoted 1 line · Pablo Neira Ayuso
This patch adds support for James Morris' connsecmark.
Also applied, thanks.
The fixed one BTW :)