Annotation of embedaddon/strongswan/src/libcharon/control/controller.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:  * Copyright (C) 2007 Martin Willi
                      3:  * HSR Hochschule fuer Technik Rapperswil
                      4:  *
                      5:  * This program is free software; you can redistribute it and/or modify it
                      6:  * under the terms of the GNU General Public License as published by the
                      7:  * Free Software Foundation; either version 2 of the License, or (at your
                      8:  * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
                      9:  *
                     10:  * This program is distributed in the hope that it will be useful, but
                     11:  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
                     12:  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
                     13:  * for more details.
                     14:  */
                     15: 
                     16: /**
                     17:  * @defgroup controller_i controller
                     18:  * @{ @ingroup control
                     19:  */
                     20: 
                     21: #ifndef CONTROLLER_H_
                     22: #define CONTROLLER_H_
                     23: 
                     24: #include <bus/bus.h>
                     25: 
                     26: /**
                     27:  * Callback to log things triggered by controller.
                     28:  *
                     29:  * @param param                        parameter supplied when controller method was called
                     30:  * @param group                        debugging group
                     31:  * @param level                        verbosity level
                     32:  * @param ike_sa               associated IKE_SA, if any
                     33:  * @param message              log message
                     34:  * @return                             FALSE to return from called controller method
                     35:  */
                     36: typedef bool (*controller_cb_t)(void* param, debug_t group, level_t level,
                     37:                                                                ike_sa_t* ike_sa, const char *message);
                     38: 
                     39: /**
                     40:  * Empty callback function for controller_t methods.
                     41:  *
                     42:  * If you want to do a synchronous call, but don't need a callback, pass
                     43:  * this function to the controller methods.
                     44:  */
                     45: bool controller_cb_empty(void *param, debug_t group, level_t level,
                     46:                                                 ike_sa_t *ike_sa, const char *message);
                     47: 
                     48: typedef struct controller_t controller_t;
                     49: 
                     50: /**
                     51:  * The controller provides a simple interface to run actions.
                     52:  *
                     53:  * The controller starts actions by creating jobs. It then tries to
                     54:  * evaluate the result of the operation by listening on the bus.
                     55:  *
                     56:  * Passing NULL as callback to the managers function calls them asynchronously.
                     57:  * If a callback is specified, they are called synchronously. There is a default
                     58:  * callback "controller_cb_empty" if you want to call a function
                     59:  * synchronously, but don't need a callback.
                     60:  */
                     61: struct controller_t {
                     62: 
                     63:        /**
                     64:         * Create an enumerator for all IKE_SAs.
                     65:         *
                     66:         * The enumerator blocks the IKE_SA manager until it gets destroyed. Do
                     67:         * not call another interface/manager method while the enumerator is alive.
                     68:         *
                     69:         * @param wait                  TRUE to wait for checked out SAs, FALSE to skip
                     70:         * @return                              enumerator, locks IKE_SA manager until destroyed
                     71:         */
                     72:        enumerator_t* (*create_ike_sa_enumerator)(controller_t *this, bool wait);
                     73: 
                     74:        /**
                     75:         * Initiate a CHILD_SA, and if required, an IKE_SA.
                     76:         *
                     77:         * If a callback is provided the function is synchronous and thus blocks
                     78:         * until the IKE_SA is established or failed.
                     79:         *
                     80:         * @param peer_cfg              peer_cfg to use for IKE_SA setup
                     81:         * @param child_cfg             optional child_cfg to set up CHILD_SA from
                     82:         * @param cb                    logging callback
                     83:         * @param param                 parameter to include in each call of cb
                     84:         * @param timeout               timeout in ms to wait for callbacks, 0 to disable
                     85:         * @param limits                whether to check limits regarding IKE_SA initiation
                     86:         * @return
                     87:         *                                              - SUCCESS, if CHILD_SA established
                     88:         *                                              - FAILED, if setup failed
                     89:         *                                              - NEED_MORE, if callback returned FALSE
                     90:         *                                              - OUT_OF_RES if timed out
                     91:         *                                              - INVALID_STATE if limits prevented initiation
                     92:         */
                     93:        status_t (*initiate)(controller_t *this,
                     94:                                                 peer_cfg_t *peer_cfg, child_cfg_t *child_cfg,
                     95:                                                 controller_cb_t callback, void *param, u_int timeout,
                     96:                                                 bool limits);
                     97: 
                     98:        /**
                     99:         * Terminate an IKE_SA and all of its CHILD_SAs.
                    100:         *
                    101:         * If a callback is provided the function is synchronous and thus blocks
                    102:         * until the IKE_SA is properly deleted, or the call timed out.
                    103:         *
                    104:         * @param unique_id             unique id of the IKE_SA to terminate.
                    105:         * @param force                 whether to immediately destroy the IKE_SA without
                    106:         *                                              waiting for a response or retransmitting the delete,
                    107:         *                                              if a callback is provided and timeout is > 0 the
                    108:         *                                              IKE_SA is destroyed once the timeout is reached but
                    109:         *                                              retransmits are sent until then
                    110:         * @param cb                    logging callback
                    111:         * @param param                 parameter to include in each call of cb
                    112:         * @param timeout               timeout in ms to wait for callbacks, 0 to disable
                    113:         * @return
                    114:         *                                              - SUCCESS, if CHILD_SA terminated
                    115:         *                                              - NOT_FOUND, if no such CHILD_SA found
                    116:         *                                              - NEED_MORE, if callback returned FALSE
                    117:         *                                              - OUT_OF_RES if timed out
                    118:         */
                    119:        status_t (*terminate_ike)(controller_t *this, uint32_t unique_id,
                    120:                                                          bool force, controller_cb_t callback, void *param,
                    121:                                                          u_int timeout);
                    122: 
                    123:        /**
                    124:         * Terminate a CHILD_SA.
                    125:         *
                    126:         * If a callback is provided the function is synchronous and thus blocks
                    127:         * until the CHILD_SA is properly deleted, or the call timed out.
                    128:         *
                    129:         * @param unique_id             CHILD_SA unique ID to terminate
                    130:         * @param cb                    logging callback
                    131:         * @param param                 parameter to include in each call of cb
                    132:         * @param timeout               timeout in ms to wait for callbacks, 0 to disable
                    133:         * @return
                    134:         *                                              - SUCCESS, if CHILD_SA terminated
                    135:         *                                              - NOT_FOUND, if no such CHILD_SA found
                    136:         *                                              - NEED_MORE, if callback returned FALSE
                    137:         *                                              - OUT_OF_RES if timed out
                    138:         */
                    139:        status_t (*terminate_child)(controller_t *this, uint32_t unique_id,
                    140:                                                                controller_cb_t callback, void *param,
                    141:                                                                u_int timeout);
                    142: 
                    143:        /**
                    144:         * Destroy a controller_t instance.
                    145:         */
                    146:        void (*destroy) (controller_t *this);
                    147: };
                    148: 
                    149: /**
                    150:  * Creates a controller instance.
                    151:  *
                    152:  * @return                     controller_t object
                    153:  */
                    154: controller_t *controller_create();
                    155: 
                    156: #endif /** CONTROLLER_H_ @}*/

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>