Select requested virtual IP family based on remote TS, if no local TS available
This commit is contained in:
@@ -705,7 +705,7 @@ static peer_cfg_t *build_peer_cfg(private_stroke_config_t *this,
|
|||||||
if (!vip)
|
if (!vip)
|
||||||
{ /* if it is set to something like %poolname, request an address */
|
{ /* if it is set to something like %poolname, request an address */
|
||||||
if (msg->add_conn.me.subnets)
|
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, '.'))
|
if (strchr(msg->add_conn.me.subnets, '.'))
|
||||||
{
|
{
|
||||||
vip = host_create_any(AF_INET);
|
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);
|
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
|
else
|
||||||
{
|
{
|
||||||
if (strchr(ike_cfg->get_my_addr(ike_cfg, NULL), ':'))
|
if (strchr(ike_cfg->get_my_addr(ike_cfg, NULL), ':'))
|
||||||
|
|||||||
Reference in New Issue
Block a user