diff options
author | Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org> | 2005-05-26 23:58:04 +0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2005-05-26 23:58:04 +0400 |
commit | 92d63decc0b6a5d600f792fcf5f3ff9718c09a3d (patch) | |
tree | eca15d3ffba7795ea4d9bef9cdc6d21c7c71fa00 /net/ipv6/xfrm6_policy.c | |
parent | 2f872f0401d4b470990864fbf99c19130f25ad4d (diff) | |
download | linux-92d63decc0b6a5d600f792fcf5f3ff9718c09a3d.tar.xz |
From: Kazunori Miyazawa <kazunori@miyazawa.org>
[XFRM] Call dst_check() with appropriate cookie
This fixes infinite loop issue with IPv6 tunnel mode.
Signed-off-by: Kazunori Miyazawa <kazunori@miyazawa.org>
Signed-off-by: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/xfrm6_policy.c')
-rw-r--r-- | net/ipv6/xfrm6_policy.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/net/ipv6/xfrm6_policy.c b/net/ipv6/xfrm6_policy.c index 4429b1a1fe5f..cf1d91e74c82 100644 --- a/net/ipv6/xfrm6_policy.c +++ b/net/ipv6/xfrm6_policy.c @@ -113,6 +113,8 @@ __xfrm6_bundle_create(struct xfrm_policy *policy, struct xfrm_state **xfrm, int xdst = (struct xfrm_dst *)dst1; xdst->route = &rt->u.dst; + if (rt->rt6i_node) + xdst->route_cookie = rt->rt6i_node->fn_sernum; dst1->next = dst_prev; dst_prev = dst1; @@ -137,6 +139,8 @@ __xfrm6_bundle_create(struct xfrm_policy *policy, struct xfrm_state **xfrm, int dst_prev->child = &rt->u.dst; dst->path = &rt->u.dst; + if (rt->rt6i_node) + ((struct xfrm_dst *)dst)->path_cookie = rt->rt6i_node->fn_sernum; *dst_p = dst; dst = dst_prev; |