]> git.proxmox.com Git - mirror_ovs.git/commitdiff
datapath: add seqadj extension when NAT is used.
authorFlavio Leitner <fbl@sysclose.org>
Tue, 15 Oct 2019 17:27:45 +0000 (10:27 -0700)
committerBen Pfaff <blp@ovn.org>
Fri, 18 Oct 2019 17:55:47 +0000 (10:55 -0700)
upstream patch:

commit fa7e428c6b7ed3281610511a2b2ec716d9894be8
Author: Flavio Leitner <fbl@sysclose.org>
Date:   Mon Mar 25 15:58:31 2019 -0300

    openvswitch: add seqadj extension when NAT is used.

    When the conntrack is initialized, there is no helper attached
    yet so the nat info initialization (nf_nat_setup_info) skips
    adding the seqadj ext.

    A helper is attached later when the conntrack is not confirmed
    but is going to be committed. In this case, if NAT is needed then
    adds the seqadj ext as well.

Fixes: 16ec3d4fbb96 ("openvswitch: Fix cached ct with helper.")
Signed-off-by: Flavio Leitner <fbl@sysclose.org>
Acked-by: Pravin B Shelar <pshelar@ovn.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Yi-Hung Wei <yihung.wei@gmail.com>
Reviewed-by: Yifeng Sun <pkusunyifeng@gmail.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
datapath/conntrack.c

index 291d4f4723d92e64f71504e7d55cb1344770ce57..1b345a03e7048c1c265b42e3bf2b33ba46057b23 100644 (file)
@@ -1063,6 +1063,12 @@ static int __ovs_ct_lookup(struct net *net, struct sw_flow_key *key,
                                                            GFP_ATOMIC);
                        if (err)
                                return err;
+
+                       /* helper installed, add seqadj if NAT is required */
+                       if (info->nat && !nfct_seqadj(ct)) {
+                               if (!nfct_seqadj_ext_add(ct))
+                                       return -EINVAL;
+                       }
                }
 
                /* Call the helper only if: