netfilter: ctnetlink: allow changing NAT sequence adjustment in creation
authorPablo Neira Ayuso <pablo@netfilter.org>
Mon, 9 Feb 2009 22:33:57 +0000 (14:33 -0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 9 Feb 2009 22:33:57 +0000 (14:33 -0800)
This patch fixes an inconsistency in the current ctnetlink code
since NAT sequence adjustment bit can only be updated but not set
in the conntrack entry creation.

This patch is used by conntrackd to successfully recover newly
created entries that represent connections with helpers and NAT
payload mangling.

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>
net/netfilter/nf_conntrack_netlink.c

index c32a7e8e3a1b0e18a358aa45e3624754346de436..9051bb4f81da9a46e6a4a9f59953e2cba744ecf7 100644 (file)
@@ -1215,6 +1215,16 @@ ctnetlink_create_conntrack(struct nlattr *cda[],
                }
        }
 
+#ifdef CONFIG_NF_NAT_NEEDED
+       if (cda[CTA_NAT_SEQ_ADJ_ORIG] || cda[CTA_NAT_SEQ_ADJ_REPLY]) {
+               err = ctnetlink_change_nat_seq_adj(ct, cda);
+               if (err < 0) {
+                       rcu_read_unlock();
+                       goto err;
+               }
+       }
+#endif
+
        if (cda[CTA_PROTOINFO]) {
                err = ctnetlink_change_protoinfo(ct, cda);
                if (err < 0) {