Annotation of embedaddon/strongswan/src/libcharon/config/backend_manager.h, revision 1.1

1.1     ! misho       1: /*
        !             2:  * Copyright (C) 2018 Tobias Brunner
        !             3:  * Copyright (C) 2007 Martin Willi
        !             4:  * HSR Hochschule fuer Technik Rapperswil
        !             5:  *
        !             6:  * This program is free software; you can redistribute it and/or modify it
        !             7:  * under the terms of the GNU General Public License as published by the
        !             8:  * Free Software Foundation; either version 2 of the License, or (at your
        !             9:  * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
        !            10:  *
        !            11:  * This program is distributed in the hope that it will be useful, but
        !            12:  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
        !            13:  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
        !            14:  * for more details.
        !            15:  */
        !            16: 
        !            17: /**
        !            18:  * @defgroup backend_manager backend_manager
        !            19:  * @{ @ingroup config
        !            20:  */
        !            21: 
        !            22: #ifndef BACKEND_MANAGER_H_
        !            23: #define BACKEND_MANAGER_H_
        !            24: 
        !            25: typedef struct backend_manager_t backend_manager_t;
        !            26: 
        !            27: #include <library.h>
        !            28: #include <networking/host.h>
        !            29: #include <utils/identification.h>
        !            30: #include <config/ike_cfg.h>
        !            31: #include <config/peer_cfg.h>
        !            32: #include <config/backend.h>
        !            33: 
        !            34: 
        !            35: /**
        !            36:  * A loader and multiplexer to use multiple backends.
        !            37:  *
        !            38:  * Charon allows the use of multiple configuration backends simultaneously. To
        !            39:  * access all this backends by a single call, this class wraps multiple
        !            40:  * backends behind a single object.
        !            41:  * @verbatim
        !            42: 
        !            43:    +---------+      +-----------+         +--------------+     |
        !            44:    |         |      |           |       +--------------+ |     |
        !            45:    | daemon  |----->| backend_- |     +--------------+ |-+  <==|==> IPC
        !            46:    |  core   |      | manager   |---->|   backends   |-+       |
        !            47:    |         |----->|           |     +--------------+         |
        !            48:    |         |      |           |                              |
        !            49:    +---------+      +-----------+                              |
        !            50: 
        !            51:    @endverbatim
        !            52:  */
        !            53: struct backend_manager_t {
        !            54: 
        !            55:        /**
        !            56:         * Get an ike_config identified by two hosts.
        !            57:         *
        !            58:         * @param my_host                       address of own host
        !            59:         * @param other_host            address of remote host
        !            60:         * @param version                       IKE version to get a config for
        !            61:         * @return                                      matching ike_config, or NULL if none found
        !            62:         */
        !            63:        ike_cfg_t* (*get_ike_cfg)(backend_manager_t *this,
        !            64:                                                          host_t *my_host, host_t *other_host,
        !            65:                                                          ike_version_t version);
        !            66: 
        !            67:        /**
        !            68:         * Create an enumerator over all matching IKE configs.
        !            69:         *
        !            70:         * Pass NULL as parameters to match any. The enumerator enumerates over
        !            71:         * ike_cfgs, ordered by priority (best match first).
        !            72:         *
        !            73:         * @param me                            local address
        !            74:         * @param other                         remote address
        !            75:         * @param version                       IKE version to get a config for
        !            76:         * @return                                      enumerator over ike_cfg
        !            77:         */
        !            78:        enumerator_t* (*create_ike_cfg_enumerator)(backend_manager_t *this,
        !            79:                                                        host_t *me, host_t *other, ike_version_t version);
        !            80: 
        !            81:        /**
        !            82:         * Get a peer_config identified by it's name.
        !            83:         *
        !            84:         * @param name                          name of the peer_config
        !            85:         * @return                                      matching peer_config, or NULL if none found
        !            86:         */
        !            87:        peer_cfg_t* (*get_peer_cfg_by_name)(backend_manager_t *this, char *name);
        !            88: 
        !            89:        /**
        !            90:         * Create an enumerator over all matching peer configs.
        !            91:         *
        !            92:         * Pass NULL as parameters to match any. The enumerator enumerates over
        !            93:         * peer_cfgs, ordered by priority (best match first).
        !            94:         *
        !            95:         * @param me                            local address
        !            96:         * @param other                         remote address
        !            97:         * @param my_id                         IDr in first authentication round
        !            98:         * @param other_id                      IDi in first authentication round
        !            99:         * @param version                       IKE version to get a config for
        !           100:         * @return                                      enumerator over peer_cfg_t
        !           101:         */
        !           102:        enumerator_t* (*create_peer_cfg_enumerator)(backend_manager_t *this,
        !           103:                                                        host_t *me, host_t *other, identification_t *my_id,
        !           104:                                                        identification_t *other_id, ike_version_t version);
        !           105:        /**
        !           106:         * Register a backend on the manager.
        !           107:         *
        !           108:         * @param backend                       backend to register
        !           109:         */
        !           110:        void (*add_backend)(backend_manager_t *this, backend_t *backend);
        !           111: 
        !           112:        /**
        !           113:         * Unregister a backend.
        !           114:         *
        !           115:         * @param backend                       backend to unregister
        !           116:         */
        !           117:        void (*remove_backend)(backend_manager_t *this, backend_t *backend);
        !           118: 
        !           119:        /**
        !           120:         * Destroys a backend_manager_t object.
        !           121:         */
        !           122:        void (*destroy) (backend_manager_t *this);
        !           123: };
        !           124: 
        !           125: /**
        !           126:  * Create an instance of the backend manager
        !           127:  *
        !           128:  * @return             backend_manager instance
        !           129:  */
        !           130: backend_manager_t* backend_manager_create(void);
        !           131: 
        !           132: #endif /** BACKEND_MANAGER_H_ @}*/

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