Support multiple virtual IPs on peer_cfg and ike_sa classes
[strongswan.git] / src / libcharon / sa / ike_sa.h
index 5b2eb4e..d2a394b 100644 (file)
@@ -43,6 +43,7 @@ typedef struct ike_sa_t ike_sa_t;
 #include <config/peer_cfg.h>
 #include <config/ike_cfg.h>
 #include <credentials/auth_cfg.h>
+#include <utils/packet.h>
 
 /**
  * Timeout in seconds after that a half open IKE_SA gets deleted.
@@ -113,6 +114,11 @@ enum ike_extension_t {
         * peer supports DPD detection, RFC 3706 (or IKEv2)
         */
        EXT_DPD = (1<<8),
+
+       /**
+        * peer supports Cisco Unity configuration attributes
+        */
+       EXT_CISCO_UNITY = (1<<9),
 };
 
 /**
@@ -925,7 +931,7 @@ struct ike_sa_t {
        status_t (*set_auth_lifetime)(ike_sa_t *this, u_int32_t lifetime);
 
        /**
-        * Set the virtual IP to use for this IKE_SA and its children.
+        * Add a virtual IP to use for this IKE_SA and its children.
         *
         * The virtual IP is assigned per IKE_SA, not per CHILD_SA. It has the same
         * lifetime as the IKE_SA.
@@ -933,15 +939,15 @@ struct ike_sa_t {
         * @param local                 TRUE to set local address, FALSE for remote
         * @param ip                    IP to set as virtual IP
         */
-       void (*set_virtual_ip) (ike_sa_t *this, bool local, host_t *ip);
+       void (*add_virtual_ip) (ike_sa_t *this, bool local, host_t *ip);
 
        /**
-        * Get the virtual IP configured.
+        * Create an enumerator over virtual IPs.
         *
         * @param local                 TRUE to get local virtual IP, FALSE for remote
-        * @return                              host_t *virtual IP
+        * @return                              enumerator over host_t*
         */
-       host_t* (*get_virtual_ip) (ike_sa_t *this, bool local);
+       enumerator_t* (*create_virtual_ip_enumerator) (ike_sa_t *this, bool local);
 
        /**
         * Register a configuration attribute to the IKE_SA.