Annotation of embedaddon/strongswan/src/libcharon/sa/ike_sa_id.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:  * Copyright (C) 2012 Tobias Brunner
                      3:  * Copyright (C) 2005-2006 Martin Willi
                      4:  * Copyright (C) 2005 Jan Hutter
                      5:  * HSR Hochschule fuer Technik Rapperswil
                      6:  *
                      7:  * This program is free software; you can redistribute it and/or modify it
                      8:  * under the terms of the GNU General Public License as published by the
                      9:  * Free Software Foundation; either version 2 of the License, or (at your
                     10:  * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
                     11:  *
                     12:  * This program is distributed in the hope that it will be useful, but
                     13:  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
                     14:  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
                     15:  * for more details.
                     16:  */
                     17: 
                     18: /**
                     19:  * @defgroup ike_sa_id ike_sa_id
                     20:  * @{ @ingroup sa
                     21:  */
                     22: 
                     23: #ifndef IKE_SA_ID_H_
                     24: #define IKE_SA_ID_H_
                     25: 
                     26: typedef struct ike_sa_id_t ike_sa_id_t;
                     27: 
                     28: #include <library.h>
                     29: 
                     30: /**
                     31:  * An object of type ike_sa_id_t is used to identify an IKE_SA.
                     32:  *
                     33:  * An IKE_SA is identified by its initiator and responder SPIs.
                     34:  * Additionally, it contains the major IKE version of the IKE_SA and, for IKEv2,
                     35:  * the role of the daemon (original initiator or responder).
                     36:  */
                     37: struct ike_sa_id_t {
                     38: 
                     39:        /**
                     40:         * Get the major IKE version of this IKE_SA.
                     41:         *
                     42:         * @return                                      IKE version
                     43:         */
                     44:        uint8_t (*get_ike_version) (ike_sa_id_t *this);
                     45: 
                     46:        /**
                     47:         * Set the SPI of the responder.
                     48:         *
                     49:         * This function is called when a request or reply of a IKE_SA_INIT is received.
                     50:         *
                     51:         * @param responder_spi         SPI of responder to set
                     52:         */
                     53:        void (*set_responder_spi) (ike_sa_id_t *this, uint64_t responder_spi);
                     54: 
                     55:        /**
                     56:         * Set the SPI of the initiator.
                     57:         *
                     58:         * @param initiator_spi         SPI to set
                     59:         */
                     60:        void (*set_initiator_spi) (ike_sa_id_t *this, uint64_t initiator_spi);
                     61: 
                     62:        /**
                     63:         * Get the initiator SPI.
                     64:         *
                     65:         * @return                                      SPI of the initiator
                     66:         */
                     67:        uint64_t (*get_initiator_spi) (ike_sa_id_t *this);
                     68: 
                     69:        /**
                     70:         * Get the responder SPI.
                     71:         *
                     72:         * @return                                      SPI of the responder
                     73:         */
                     74:        uint64_t (*get_responder_spi) (ike_sa_id_t *this);
                     75: 
                     76:        /**
                     77:         * Check if two ike_sa_id_t objects are equal.
                     78:         *
                     79:         * Two ike_sa_id_t objects are equal if version and both SPI values match.
                     80:         * The role is not compared.
                     81:         *
                     82:         * @param other                         ike_sa_id_t object to check if equal
                     83:         * @return                                      TRUE if given ike_sa_id_t are equal,
                     84:         *                                                      FALSE otherwise
                     85:         */
                     86:        bool (*equals) (ike_sa_id_t *this, ike_sa_id_t *other);
                     87: 
                     88:        /**
                     89:         * Replace all values of a given ike_sa_id_t object with values
                     90:         * from another ike_sa_id_t object.
                     91:         *
                     92:         * After calling this function, both objects are equal.
                     93:         *
                     94:         * @param other                 ike_sa_id_t object from which values will be taken
                     95:         */
                     96:        void (*replace_values) (ike_sa_id_t *this, ike_sa_id_t *other);
                     97: 
                     98:        /**
                     99:         * Get the initiator flag.
                    100:         *
                    101:         * @return                                      TRUE if we are the original initiator
                    102:         */
                    103:        bool (*is_initiator) (ike_sa_id_t *this);
                    104: 
                    105:        /**
                    106:         * Switch the original initiator flag.
                    107:         *
                    108:         * @return                                      new value if initiator flag.
                    109:         */
                    110:        bool (*switch_initiator) (ike_sa_id_t *this);
                    111: 
                    112:        /**
                    113:         * Clones a given ike_sa_id_t object.
                    114:         *
                    115:         * @return                                      cloned ike_sa_id_t object
                    116:         */
                    117:        ike_sa_id_t *(*clone) (ike_sa_id_t *this);
                    118: 
                    119:        /**
                    120:         * Destroys an ike_sa_id_t object.
                    121:         */
                    122:        void (*destroy) (ike_sa_id_t *this);
                    123: };
                    124: 
                    125: /**
                    126:  * Creates an ike_sa_id_t object.
                    127:  *
                    128:  * @param ike_version                  major IKE version
                    129:  * @param initiator_spi                        initiators SPI
                    130:  * @param responder_spi                        responders SPI
                    131:  * @param is_initiator                 TRUE if we are the original initiator
                    132:  * @return                                             ike_sa_id_t object
                    133:  */
                    134: ike_sa_id_t * ike_sa_id_create(uint8_t ike_version, uint64_t initiator_spi,
                    135:                                                           uint64_t responder_spi, bool is_initiator);
                    136: 
                    137: #endif /** IKE_SA_ID_H_ @}*/

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