diff options
Diffstat (limited to 'net/xfrm/xfrm_policy.c')
-rw-r--r-- | net/xfrm/xfrm_policy.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c index 56abb5c057d4..ad2a5cba1f5b 100644 --- a/net/xfrm/xfrm_policy.c +++ b/net/xfrm/xfrm_policy.c | |||
@@ -1167,7 +1167,7 @@ static struct dst_entry *xfrm_dst_check(struct dst_entry *dst, u32 cookie) | |||
1167 | 1167 | ||
1168 | static int stale_bundle(struct dst_entry *dst) | 1168 | static int stale_bundle(struct dst_entry *dst) |
1169 | { | 1169 | { |
1170 | return !xfrm_bundle_ok((struct xfrm_dst *)dst, NULL, AF_UNSPEC); | 1170 | return !xfrm_bundle_ok((struct xfrm_dst *)dst, NULL, AF_UNSPEC, 0); |
1171 | } | 1171 | } |
1172 | 1172 | ||
1173 | void xfrm_dst_ifdown(struct dst_entry *dst, struct net_device *dev) | 1173 | void xfrm_dst_ifdown(struct dst_entry *dst, struct net_device *dev) |
@@ -1282,7 +1282,7 @@ EXPORT_SYMBOL(xfrm_init_pmtu); | |||
1282 | * still valid. | 1282 | * still valid. |
1283 | */ | 1283 | */ |
1284 | 1284 | ||
1285 | int xfrm_bundle_ok(struct xfrm_dst *first, struct flowi *fl, int family) | 1285 | int xfrm_bundle_ok(struct xfrm_dst *first, struct flowi *fl, int family, int strict) |
1286 | { | 1286 | { |
1287 | struct dst_entry *dst = &first->u.dst; | 1287 | struct dst_entry *dst = &first->u.dst; |
1288 | struct xfrm_dst *last; | 1288 | struct xfrm_dst *last; |
@@ -1304,6 +1304,10 @@ int xfrm_bundle_ok(struct xfrm_dst *first, struct flowi *fl, int family) | |||
1304 | if (dst->xfrm->km.state != XFRM_STATE_VALID) | 1304 | if (dst->xfrm->km.state != XFRM_STATE_VALID) |
1305 | return 0; | 1305 | return 0; |
1306 | 1306 | ||
1307 | if (strict && fl && dst->xfrm->props.mode != XFRM_MODE_TUNNEL && | ||
1308 | !xfrm_state_addr_flow_check(dst->xfrm, fl, family)) | ||
1309 | return 0; | ||
1310 | |||
1307 | mtu = dst_mtu(dst->child); | 1311 | mtu = dst_mtu(dst->child); |
1308 | if (xdst->child_mtu_cached != mtu) { | 1312 | if (xdst->child_mtu_cached != mtu) { |
1309 | last = xdst; | 1313 | last = xdst; |