diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libcharon/config/ike_cfg.c | 14 | ||||
-rw-r--r-- | src/libcharon/config/ike_cfg.h | 16 |
2 files changed, 30 insertions, 0 deletions
diff --git a/src/libcharon/config/ike_cfg.c b/src/libcharon/config/ike_cfg.c index 54a054e40..3e182a653 100644 --- a/src/libcharon/config/ike_cfg.c +++ b/src/libcharon/config/ike_cfg.c @@ -129,6 +129,18 @@ METHOD(ike_cfg_t, fragmentation, fragmentation_t, return this->fragmentation; } +METHOD(ike_cfg_t, resolve_me, host_t*, + private_ike_cfg_t *this, int family) +{ + return host_create_from_dns(this->me, family, this->my_port); +} + +METHOD(ike_cfg_t, resolve_other, host_t*, + private_ike_cfg_t *this, int family) +{ + return host_create_from_dns(this->other, family, this->other_port); +} + METHOD(ike_cfg_t, get_my_addr, char*, private_ike_cfg_t *this, bool *allow_any) { @@ -333,6 +345,8 @@ ike_cfg_t *ike_cfg_create(ike_version_t version, bool certreq, bool force_encap, .send_certreq = _send_certreq, .force_encap = _force_encap_, .fragmentation = _fragmentation, + .resolve_me = _resolve_me, + .resolve_other = _resolve_other, .get_my_addr = _get_my_addr, .get_other_addr = _get_other_addr, .get_my_port = _get_my_port, diff --git a/src/libcharon/config/ike_cfg.h b/src/libcharon/config/ike_cfg.h index 719ceb9dd..d1db3b463 100644 --- a/src/libcharon/config/ike_cfg.h +++ b/src/libcharon/config/ike_cfg.h @@ -78,6 +78,22 @@ struct ike_cfg_t { ike_version_t (*get_version)(ike_cfg_t *this); /** + * Resolve the local address to use for initiation. + * + * @param family address family to prefer, or AF_UNSPEC + * @return resolved host, NULL on error + */ + host_t* (*resolve_me)(ike_cfg_t *this, int family); + + /** + * Resolve the remote address to use for initiation. + * + * @param family address family to prefer, or AF_UNSPEC + * @return resolved host, NULL on error + */ + host_t* (*resolve_other)(ike_cfg_t *this, int family); + + /** * Get own address. * * @param allow_any allow any address to match |