ike-cfg: add a method to resolve local/remote hosts with port
authorMartin Willi <martin@revosec.ch>
Thu, 25 Jul 2013 11:39:15 +0000 (13:39 +0200)
committerMartin Willi <martin@revosec.ch>
Wed, 4 Sep 2013 08:38:36 +0000 (10:38 +0200)
src/libcharon/config/ike_cfg.c
src/libcharon/config/ike_cfg.h

index 54a054e..3e182a6 100644 (file)
@@ -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,
index 719ceb9..d1db3b4 100644 (file)
@@ -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