netfilter 27/41: ctnetlink: cleanup master conntrack assignation

Previous thread: netfilter 26/41: conntrack: increase drop stats if sequence adjustment fails by Patrick McHardy on Tuesday, March 24, 2009 - 7:03 am. (1 message)

Next thread: netfilter 20/41: install missing headers by Patrick McHardy on Tuesday, March 24, 2009 - 7:03 am. (1 message)
From: Patrick McHardy
Date: Tuesday, March 24, 2009 - 7:03 am

commit 7ec4749675bf33ea639bbcca8a5365ccc5091a6a
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Mon Mar 16 15:25:46 2009 +0100

    netfilter: ctnetlink: cleanup master conntrack assignation
    
    This patch moves the assignation of the master conntrack to
    ctnetlink_create_conntrack(), which is where it really belongs.
    This patch is a cleanup.
    
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Patrick McHardy <kaber@trash.net>

diff --git a/net/netfilter/nf_conntrack_netlink.c b/net/netfilter/nf_conntrack_netlink.c
index cb78aa0..cca22d5 100644
--- a/net/netfilter/nf_conntrack_netlink.c
+++ b/net/netfilter/nf_conntrack_netlink.c
@@ -1128,9 +1128,9 @@ static int
 ctnetlink_create_conntrack(struct nlattr *cda[],
 			   struct nf_conntrack_tuple *otuple,
 			   struct nf_conntrack_tuple *rtuple,
-			   struct nf_conn *master_ct,
 			   u32 pid,
-			   int report)
+			   int report,
+			   u8 u3)
 {
 	struct nf_conn *ct;
 	int err = -EINVAL;
@@ -1241,7 +1241,22 @@ ctnetlink_create_conntrack(struct nlattr *cda[],
 #endif
 
 	/* setup master conntrack: this is a confirmed expectation */
-	if (master_ct) {
+	if (cda[CTA_TUPLE_MASTER]) {
+		struct nf_conntrack_tuple master;
+		struct nf_conntrack_tuple_hash *master_h;
+		struct nf_conn *master_ct;
+
+		err = ctnetlink_parse_tuple(cda, &master, CTA_TUPLE_MASTER, u3);
+		if (err < 0)
+			goto err;
+
+		master_h = __nf_conntrack_find(&init_net, &master);
+		if (master_h == NULL) {
+			err = -ENOENT;
+			goto err;
+		}
+		master_ct = nf_ct_tuplehash_to_ctrack(master_h);
+		nf_conntrack_get(&master_ct->ct_general);
 		__set_bit(IPS_EXPECTED_BIT, &ct->status);
 		ct->master = master_ct;
 	}
@@ -1289,39 +1304,15 @@ ctnetlink_new_conntrack(struct sock *ctnl, struct sk_buff *skb,
 		h = __nf_conntrack_find(&init_net, &rtuple);
 
 	if (h == NULL) {
-		struct nf_conntrack_tuple master;
-		struct nf_conntrack_tuple_hash *master_h = NULL;
-		struct nf_conn *master_ct = ...
Previous thread: netfilter 26/41: conntrack: increase drop stats if sequence adjustment fails by Patrick McHardy on Tuesday, March 24, 2009 - 7:03 am. (1 message)

Next thread: netfilter 20/41: install missing headers by Patrick McHardy on Tuesday, March 24, 2009 - 7:03 am. (1 message)