aboutsummaryrefslogtreecommitdiffstats
path: root/net/openvswitch/conntrack.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/openvswitch/conntrack.c')
-rw-r--r--net/openvswitch/conntrack.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/net/openvswitch/conntrack.c b/net/openvswitch/conntrack.c
index 86a75105af1a..35ae64cbef33 100644
--- a/net/openvswitch/conntrack.c
+++ b/net/openvswitch/conntrack.c
@@ -1312,6 +1312,10 @@ static int ovs_ct_add_helper(struct ovs_conntrack_info *info, const char *name,
1312 1312
1313 rcu_assign_pointer(help->helper, helper); 1313 rcu_assign_pointer(help->helper, helper);
1314 info->helper = helper; 1314 info->helper = helper;
1315
1316 if (info->nat)
1317 request_module("ip_nat_%s", name);
1318
1315 return 0; 1319 return 0;
1316} 1320}
1317 1321
@@ -1624,10 +1628,6 @@ int ovs_ct_copy_action(struct net *net, const struct nlattr *attr,
1624 OVS_NLERR(log, "Failed to allocate conntrack template"); 1628 OVS_NLERR(log, "Failed to allocate conntrack template");
1625 return -ENOMEM; 1629 return -ENOMEM;
1626 } 1630 }
1627
1628 __set_bit(IPS_CONFIRMED_BIT, &ct_info.ct->status);
1629 nf_conntrack_get(&ct_info.ct->ct_general);
1630
1631 if (helper) { 1631 if (helper) {
1632 err = ovs_ct_add_helper(&ct_info, helper, key, log); 1632 err = ovs_ct_add_helper(&ct_info, helper, key, log);
1633 if (err) 1633 if (err)
@@ -1639,6 +1639,8 @@ int ovs_ct_copy_action(struct net *net, const struct nlattr *attr,
1639 if (err) 1639 if (err)
1640 goto err_free_ct; 1640 goto err_free_ct;
1641 1641
1642 __set_bit(IPS_CONFIRMED_BIT, &ct_info.ct->status);
1643 nf_conntrack_get(&ct_info.ct->ct_general);
1642 return 0; 1644 return 0;
1643err_free_ct: 1645err_free_ct:
1644 __ovs_ct_free_action(&ct_info); 1646 __ovs_ct_free_action(&ct_info);