diff options
author | Martin Willi <martin@strongswan.org> | 2008-06-06 15:05:54 +0000 |
---|---|---|
committer | Martin Willi <martin@strongswan.org> | 2008-06-06 15:05:54 +0000 |
commit | 5a22a02156816fc9f56ca56c70fbfda6574b285d (patch) | |
tree | 061ab063820d3db0272c55083ff26ac6d170ce51 /src/charon/config/backend_manager.c | |
parent | 1e9c46f13daced3199953f4d1758c7e03c935083 (diff) | |
download | strongswan-5a22a02156816fc9f56ca56c70fbfda6574b285d.tar.bz2 strongswan-5a22a02156816fc9f56ca56c70fbfda6574b285d.tar.xz |
DNS resolving of ike_cfg hosts dynamically on demand
Diffstat (limited to 'src/charon/config/backend_manager.c')
-rw-r--r-- | src/charon/config/backend_manager.c | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/src/charon/config/backend_manager.c b/src/charon/config/backend_manager.c index 7b2ddca90..41c26e1af 100644 --- a/src/charon/config/backend_manager.c +++ b/src/charon/config/backend_manager.c @@ -138,9 +138,13 @@ static ike_cfg_t *get_ike_cfg(private_backend_manager_t *this, while (enumerator->enumerate(enumerator, (void**)¤t)) { prio = MATCH_NONE; - my_candidate = current->get_my_host(current); - other_candidate = current->get_other_host(current); + my_candidate = host_create_from_dns(current->get_my_addr(current), + me->get_family(me), 0); + if (!my_candidate) + { + continue; + } if (my_candidate->ip_equals(my_candidate, me)) { prio += MATCH_ME; @@ -149,6 +153,14 @@ static ike_cfg_t *get_ike_cfg(private_backend_manager_t *this, { prio += MATCH_ANY; } + my_candidate->destroy(my_candidate); + + other_candidate = host_create_from_dns(current->get_other_addr(current), + other->get_family(other), 0); + if (!other_candidate) + { + continue; + } if (other_candidate->ip_equals(other_candidate, other)) { prio += MATCH_OTHER; @@ -157,9 +169,11 @@ static ike_cfg_t *get_ike_cfg(private_backend_manager_t *this, { prio += MATCH_ANY; } + other_candidate->destroy(other_candidate); - DBG2(DBG_CFG, " candidate: %H...%H, prio %d", - my_candidate, other_candidate, prio); + DBG2(DBG_CFG, " candidate: %s...%s, prio %d", + current->get_my_addr(current), current->get_other_addr(current), + prio); /* we require at least two MATCH_ANY */ if (prio > best) |