[XFRM] IPV6: Fix outbound RO transformation which is broken by IPsec tunnel patch.
It seems to miss RO mode path by IPv6 over IPv4 IPsec tunnel patch when it changed semantics to check the mode from "xfrm[i]->props.mode != XFRM_MODE_TRANSPORT" to "xfrm[i]->props.mode == XFRM_MODE_TUNNEL" before changing address. It also makes two incline functions __xfrm6_bundle_addr_{remote,local} are used by nobody. This patch fixes it. Signed-off-by: Masahide NAKAMURA <nakam@linux-ipv6.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
1e19e02ca0
Коммит
bda390d5c8
|
@ -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);
|
||||
|
|
Загрузка…
Ссылка в новой задаче