/* * Copyright (C) 2008 Martin Willi * HSR Hochschule fuer Technik Rapperswil * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. See . * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. */ /** * @defgroup stroke_attribute stroke_attribute * @{ @ingroup stroke */ #ifndef STROKE_ATTRIBUTE_H_ #define STROKE_ATTRIBUTE_H_ #include #include #include typedef struct stroke_attribute_t stroke_attribute_t; /** * Stroke IKEv2 cfg attribute provider */ struct stroke_attribute_t { /** * Implements attribute provider interface */ attribute_provider_t provider; /** * Add a memory pool to this virtual IP backend. * * The pool gets owned by the provider, or destroyed if such a pool * is already registered. * * @param pool virtual IP pool to add */ void (*add_pool)(stroke_attribute_t *this, mem_pool_t *pool); /** * Add connection specific DNS servers. * * @param msg stroke add message */ void (*add_dns)(stroke_attribute_t *this, stroke_msg_t *msg); /** * Remove connection specific DNS servers. * * @param msg stroke del message */ void (*del_dns)(stroke_attribute_t *this, stroke_msg_t *msg); /** * Create an enumerator over installed pools. * * Enumerator enumerates over * char *pool, u_int size, u_int offline, u_int online. * * @return enumerator */ enumerator_t* (*create_pool_enumerator)(stroke_attribute_t *this); /** * Create an enumerator over the leases of a pool. * * Enumerator enumerates over * identification_t *id, host_t *address, bool online * * @param pool name of the pool to enumerate * @return enumerator, NULL if pool not found */ enumerator_t* (*create_lease_enumerator)(stroke_attribute_t *this, char *pool); /** * Destroy a stroke_attribute instance. */ void (*destroy)(stroke_attribute_t *this); }; /** * Create a stroke_attribute instance. */ stroke_attribute_t *stroke_attribute_create(); #endif /** STROKE_ATTRIBUTE_H_ @}*/