]> Pileus Git - ~andy/linux/blobdiff - net/xfrm/xfrm_policy.c
net: split rt_genid for ipv4 and ipv6
[~andy/linux] / net / xfrm / xfrm_policy.c
index e52cab3591dd78c373274bb64420f87383775e8c..d8da6b8c6ba8b980c12564476c06f29d51f21ea0 100644 (file)
@@ -660,7 +660,13 @@ int xfrm_policy_insert(int dir, struct xfrm_policy *policy, int excl)
        xfrm_pol_hold(policy);
        net->xfrm.policy_count[dir]++;
        atomic_inc(&flow_cache_genid);
-       rt_genid_bump(net);
+
+       /* After previous checking, family can either be AF_INET or AF_INET6 */
+       if (policy->family == AF_INET)
+               rt_genid_bump_ipv4(net);
+       else
+               rt_genid_bump_ipv6(net);
+
        if (delpol) {
                xfrm_policy_requeue(delpol, policy);
                __xfrm_policy_unlink(delpol, dir);