aboutsummaryrefslogtreecommitdiffstats
path: root/net/netfilter/nf_conntrack_netlink.c
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2010-09-22 02:36:59 -0400
committerPatrick McHardy <kaber@trash.net>2010-09-22 02:36:59 -0400
commit8b008faf92ac8f7eeb65e8cd36077601af7c46db (patch)
tree033d7dbdc7cf54af84daed6c0293726c1e3e7dd1 /net/netfilter/nf_conntrack_netlink.c
parentbcac0dfab191cb53b3f9b43c8014a34070ed58ff (diff)
netfilter: ctnetlink: allow to specify the expectation flags
With this patch, you can specify the expectation flags for user-space created expectations. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> Signed-off-by: Patrick McHardy <kaber@trash.net>
Diffstat (limited to 'net/netfilter/nf_conntrack_netlink.c')
-rw-r--r--net/netfilter/nf_conntrack_netlink.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/net/netfilter/nf_conntrack_netlink.c b/net/netfilter/nf_conntrack_netlink.c
index 37533a30413..0804e0ef650 100644
--- a/net/netfilter/nf_conntrack_netlink.c
+++ b/net/netfilter/nf_conntrack_netlink.c
@@ -1577,6 +1577,7 @@ ctnetlink_exp_dump_expect(struct sk_buff *skb,
1577 1577
1578 NLA_PUT_BE32(skb, CTA_EXPECT_TIMEOUT, htonl(timeout)); 1578 NLA_PUT_BE32(skb, CTA_EXPECT_TIMEOUT, htonl(timeout));
1579 NLA_PUT_BE32(skb, CTA_EXPECT_ID, htonl((unsigned long)exp)); 1579 NLA_PUT_BE32(skb, CTA_EXPECT_ID, htonl((unsigned long)exp));
1580 NLA_PUT_BE32(skb, CTA_EXPECT_FLAGS, htonl(exp->flags));
1580 helper = rcu_dereference(nfct_help(master)->helper); 1581 helper = rcu_dereference(nfct_help(master)->helper);
1581 if (helper) 1582 if (helper)
1582 NLA_PUT_STRING(skb, CTA_EXPECT_HELP_NAME, helper->name); 1583 NLA_PUT_STRING(skb, CTA_EXPECT_HELP_NAME, helper->name);
@@ -1734,6 +1735,7 @@ static const struct nla_policy exp_nla_policy[CTA_EXPECT_MAX+1] = {
1734 [CTA_EXPECT_ID] = { .type = NLA_U32 }, 1735 [CTA_EXPECT_ID] = { .type = NLA_U32 },
1735 [CTA_EXPECT_HELP_NAME] = { .type = NLA_NUL_STRING }, 1736 [CTA_EXPECT_HELP_NAME] = { .type = NLA_NUL_STRING },
1736 [CTA_EXPECT_ZONE] = { .type = NLA_U16 }, 1737 [CTA_EXPECT_ZONE] = { .type = NLA_U16 },
1738 [CTA_EXPECT_FLAGS] = { .type = NLA_U32 },
1737}; 1739};
1738 1740
1739static int 1741static int
@@ -1933,9 +1935,13 @@ ctnetlink_create_expect(struct net *net, u16 zone,
1933 goto out; 1935 goto out;
1934 } 1936 }
1935 1937
1938 if (cda[CTA_EXPECT_FLAGS])
1939 exp->flags = ntohl(nla_get_be32(cda[CTA_EXPECT_FLAGS]));
1940 else
1941 exp->flags = 0;
1942
1936 exp->class = 0; 1943 exp->class = 0;
1937 exp->expectfn = NULL; 1944 exp->expectfn = NULL;
1938 exp->flags = 0;
1939 exp->master = ct; 1945 exp->master = ct;
1940 exp->helper = NULL; 1946 exp->helper = NULL;
1941 memcpy(&exp->tuple, &tuple, sizeof(struct nf_conntrack_tuple)); 1947 memcpy(&exp->tuple, &tuple, sizeof(struct nf_conntrack_tuple));