Moved host_t and host_resolver_t to a new networking subfolder
[strongswan.git] / src / libhydra / attributes / attribute_provider.h
index e4b4e13..82d0ee3 100644 (file)
@@ -21,8 +21,9 @@
 #ifndef ATTRIBUTE_PROVIDER_H_
 #define ATTRIBUTE_PROVIDER_H_
 
-#include <utils/host.h>
+#include <networking/host.h>
 #include <utils/identification.h>
+#include <utils/linked_list.h>
 
 typedef struct attribute_provider_t attribute_provider_t;
 
@@ -34,35 +35,37 @@ struct attribute_provider_t {
        /**
         * Acquire a virtual IP address to assign to a peer.
         *
-        * @param pool                  name of the pool to acquire address from
+        * @param pools                 list of pool names (char*) to acquire from
         * @param id                    peer ID
         * @param requested             IP in configuration request
         * @return                              allocated address, NULL to serve none
         */
        host_t* (*acquire_address)(attribute_provider_t *this,
-                                                          char *pool, identification_t *id,
+                                                          linked_list_t *pools, identification_t *id,
                                                           host_t *requested);
        /**
         * Release a previously acquired address.
         *
-        * @param pool                  name of the pool this address was acquired from
+        * @param pools                 list of pool names (char*) to release to
         * @param address               address to release
         * @param id                    peer ID
         * @return                              TRUE if the address has been released by the provider
         */
        bool (*release_address)(attribute_provider_t *this,
-                                                       char *pool, host_t *address, identification_t *id);
+                                                       linked_list_t *pools, host_t *address,
+                                                       identification_t *id);
 
        /**
         * Create an enumerator over attributes to hand out to a peer.
         *
-        * @param pool                  pool name to get attributes from
+        * @param pool                  list of pools names (char*) to query attributes from
         * @param id                    peer ID
-        * @param vip                   virtual IP to assign to peer, if any
+        * @param vip                   list of virtual IPs (host_t*) to assign to peer
         * @return                              enumerator (configuration_attribute_type_t, chunk_t)
         */
        enumerator_t* (*create_attribute_enumerator)(attribute_provider_t *this,
-                                                       char *pool, identification_t *id, host_t *vip);
+                                                                       linked_list_t *pools, identification_t *id,
+                                                                       linked_list_t *vips);
 };
 
 #endif /** ATTRIBUTE_PROVIDER_H_ @}*/