From 0504dd649a1c559cc3714adf31f88555654b4203 Mon Sep 17 00:00:00 2001 From: Masahide NAKAMURA Date: Fri, 9 Feb 2007 21:22:16 -0800 Subject: [PATCH] --- yaml --- r: 47687 b: refs/heads/master c: bda390d5c883d5dff1f3ae2bade4c25869769894 h: refs/heads/master i: 47685: ff5cd1ed1b03db7c7eb357c0781011a56048fc14 47683: c2540036495751e559b074ef68335149855c84ad 47679: 40b45eb6f9bfd46e795dd33a285ea87b59025edb v: v3 --- [refs] | 2 +- trunk/net/ipv6/xfrm6_policy.c | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 765123ac000a..8eb01b6cd62f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1e19e02ca0c5e33ea73a25127dbe6c3b8fcaac4b +refs/heads/master: bda390d5c883d5dff1f3ae2bade4c25869769894 diff --git a/trunk/net/ipv6/xfrm6_policy.c b/trunk/net/ipv6/xfrm6_policy.c index 55f650c49678..b1133f27c8ae 100644 --- a/trunk/net/ipv6/xfrm6_policy.c +++ b/trunk/net/ipv6/xfrm6_policy.c @@ -178,7 +178,8 @@ __xfrm6_bundle_create(struct xfrm_policy *policy, struct xfrm_state **xfrm, int __xfrm6_bundle_len_inc(&header_len, &nfheader_len, xfrm[i]); trailer_len += xfrm[i]->props.trailer_len; - if (xfrm[i]->props.mode == XFRM_MODE_TUNNEL) { + if (xfrm[i]->props.mode == XFRM_MODE_TUNNEL || + xfrm[i]->props.mode == XFRM_MODE_ROUTEOPTIMIZATION) { unsigned short encap_family = xfrm[i]->props.family; switch(encap_family) { case AF_INET: @@ -186,8 +187,9 @@ __xfrm6_bundle_create(struct xfrm_policy *policy, struct xfrm_state **xfrm, int fl_tunnel.fl4_src = xfrm[i]->props.saddr.a4; break; case AF_INET6: - ipv6_addr_copy(&fl_tunnel.fl6_dst, (struct in6_addr*)&xfrm[i]->id.daddr.a6); - ipv6_addr_copy(&fl_tunnel.fl6_src, (struct in6_addr*)&xfrm[i]->props.saddr.a6); + ipv6_addr_copy(&fl_tunnel.fl6_dst, __xfrm6_bundle_addr_remote(xfrm[i], &fl->fl6_dst)); + + ipv6_addr_copy(&fl_tunnel.fl6_src, __xfrm6_bundle_addr_remote(xfrm[i], &fl->fl6_src)); break; default: BUG_ON(1);