]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
openvswitch: add seqadj extension when NAT is used.
authorFlavio Leitner <fbl@sysclose.org>
Mon, 25 Mar 2019 18:58:31 +0000 (15:58 -0300)
committerDavid S. Miller <davem@davemloft.net>
Tue, 26 Mar 2019 19:48:23 +0000 (12:48 -0700)
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>
net/openvswitch/conntrack.c

index 51080004677e18d92d635fc2fed0c46f91dc289a..845b83598e0d9663125f1124c2723fcfae0b0d3e 100644 (file)
@@ -990,6 +990,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: