Select requested virtual IP family based on remote TS, if no local TS available

This commit is contained in:
Martin Willi 2012-06-20 10:01:05 +02:00
parent f2fc138e8e
commit e2dd114f37

View File

@ -705,7 +705,7 @@ static peer_cfg_t *build_peer_cfg(private_stroke_config_t *this,
if (!vip)
{ /* if it is set to something like %poolname, request an address */
if (msg->add_conn.me.subnets)
{ /* use the same address as in subnet, if any */
{ /* use the same family as in local subnet, if any */
if (strchr(msg->add_conn.me.subnets, '.'))
{
vip = host_create_any(AF_INET);
@ -715,6 +715,17 @@ static peer_cfg_t *build_peer_cfg(private_stroke_config_t *this,
vip = host_create_any(AF_INET6);
}
}
else if (msg->add_conn.other.subnets)
{ /* use the same family as in remote subnet, if any */
if (strchr(msg->add_conn.other.subnets, '.'))
{
vip = host_create_any(AF_INET);
}
else
{
vip = host_create_any(AF_INET6);
}
}
else
{
if (strchr(ike_cfg->get_my_addr(ike_cfg, NULL), ':'))