aboutsummaryrefslogtreecommitdiffstats
path: root/net/xfrm/xfrm_policy.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/xfrm/xfrm_policy.c')
-rw-r--r--net/xfrm/xfrm_policy.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
index af8e38f47b5b..a3dc7ab0b7ed 100644
--- a/net/xfrm/xfrm_policy.c
+++ b/net/xfrm/xfrm_policy.c
@@ -3279,11 +3279,6 @@ static int xfrm_migrate_check(const struct xfrm_migrate *m, int num_migrate)
3279 return -EINVAL; 3279 return -EINVAL;
3280 3280
3281 for (i = 0; i < num_migrate; i++) { 3281 for (i = 0; i < num_migrate; i++) {
3282 if (xfrm_addr_equal(&m[i].old_daddr, &m[i].new_daddr,
3283 m[i].old_family) &&
3284 xfrm_addr_equal(&m[i].old_saddr, &m[i].new_saddr,
3285 m[i].old_family))
3286 return -EINVAL;
3287 if (xfrm_addr_any(&m[i].new_daddr, m[i].new_family) || 3282 if (xfrm_addr_any(&m[i].new_daddr, m[i].new_family) ||
3288 xfrm_addr_any(&m[i].new_saddr, m[i].new_family)) 3283 xfrm_addr_any(&m[i].new_saddr, m[i].new_family))
3289 return -EINVAL; 3284 return -EINVAL;
@@ -3307,7 +3302,8 @@ static int xfrm_migrate_check(const struct xfrm_migrate *m, int num_migrate)
3307 3302
3308int xfrm_migrate(const struct xfrm_selector *sel, u8 dir, u8 type, 3303int xfrm_migrate(const struct xfrm_selector *sel, u8 dir, u8 type,
3309 struct xfrm_migrate *m, int num_migrate, 3304 struct xfrm_migrate *m, int num_migrate,
3310 struct xfrm_kmaddress *k, struct net *net) 3305 struct xfrm_kmaddress *k, struct net *net,
3306 struct xfrm_encap_tmpl *encap)
3311{ 3307{
3312 int i, err, nx_cur = 0, nx_new = 0; 3308 int i, err, nx_cur = 0, nx_new = 0;
3313 struct xfrm_policy *pol = NULL; 3309 struct xfrm_policy *pol = NULL;
@@ -3330,7 +3326,8 @@ int xfrm_migrate(const struct xfrm_selector *sel, u8 dir, u8 type,
3330 if ((x = xfrm_migrate_state_find(mp, net))) { 3326 if ((x = xfrm_migrate_state_find(mp, net))) {
3331 x_cur[nx_cur] = x; 3327 x_cur[nx_cur] = x;
3332 nx_cur++; 3328 nx_cur++;
3333 if ((xc = xfrm_state_migrate(x, mp))) { 3329 xc = xfrm_state_migrate(x, mp, encap);
3330 if (xc) {
3334 x_new[nx_new] = xc; 3331 x_new[nx_new] = xc;
3335 nx_new++; 3332 nx_new++;
3336 } else { 3333 } else {
@@ -3351,7 +3348,7 @@ int xfrm_migrate(const struct xfrm_selector *sel, u8 dir, u8 type,
3351 } 3348 }
3352 3349
3353 /* Stage 5 - announce */ 3350 /* Stage 5 - announce */
3354 km_migrate(sel, dir, type, m, num_migrate, k); 3351 km_migrate(sel, dir, type, m, num_migrate, k, encap);
3355 3352
3356 xfrm_pol_put(pol); 3353 xfrm_pol_put(pol);
3357 3354