Annotation of embedaddon/strongswan/src/libimcv/imv/imv_state.h, revision 1.1

1.1     ! misho       1: /*
        !             2:  * Copyright (C) 2011-2014 Andreas Steffen
        !             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:  *
        !            18:  * @defgroup imv_state_t imv_state
        !            19:  * @{ @ingroup libimcv_imv
        !            20:  */
        !            21: 
        !            22: #ifndef IMV_STATE_H_
        !            23: #define IMV_STATE_H_
        !            24: 
        !            25: #include "imv_session.h"
        !            26: #include "seg/seg_contract_manager.h"
        !            27: 
        !            28: #include <tncifimv.h>
        !            29: 
        !            30: #include <library.h>
        !            31: 
        !            32: typedef struct imv_state_t imv_state_t;
        !            33: 
        !            34: /**
        !            35:  * Internal state of an IMV connection instance
        !            36:  */
        !            37: struct imv_state_t {
        !            38: 
        !            39:        /**
        !            40:         * Get the TNCCS connection ID attached to the state
        !            41:         *
        !            42:         * @return                              TNCCS connection ID of the state
        !            43:         */
        !            44:         TNC_ConnectionID (*get_connection_id)(imv_state_t *this);
        !            45: 
        !            46:        /**
        !            47:         * Checks if long message types are supported for this TNCCS connection
        !            48:         *
        !            49:         * @return                              TRUE if set, FALSE otherwise
        !            50:         */
        !            51:        bool (*has_long)(imv_state_t *this);
        !            52: 
        !            53:        /**
        !            54:         * Checks if the exclusive delivery is supported for this TNCCS connection
        !            55:         *
        !            56:         * @return                              TRUE if set, FALSE otherwise
        !            57:         */
        !            58:        bool (*has_excl)(imv_state_t *this);
        !            59: 
        !            60:        /**
        !            61:         * Sets the long message types and exclusive flags for this TNCCS connection
        !            62:         *
        !            63:         * @param has_long              TNCCS connection supports long message types
        !            64:         * @param has_excl              TNCCS connection supports exclusive delivery
        !            65:         * @return                              TRUE if set, FALSE otherwise
        !            66:         */
        !            67:        void (*set_flags)(imv_state_t *this, bool has_long, bool has_excl);
        !            68: 
        !            69:        /**
        !            70:         * Set the maximum size of a PA-TNC message for this TNCCS connection
        !            71:         *
        !            72:         * @param max_msg_len   maximum size of a PA-TNC message
        !            73:         */
        !            74:        void (*set_max_msg_len)(imv_state_t *this, uint32_t max_msg_len);
        !            75: 
        !            76:        /**
        !            77:         * Get the maximum size of a PA-TNC message for this TNCCS connection
        !            78:         *
        !            79:         * @return                              maximum size of a PA-TNC message
        !            80:         */
        !            81:        uint32_t (*get_max_msg_len)(imv_state_t *this);
        !            82: 
        !            83:        /**
        !            84:         * Set flags for completed actions
        !            85:         *
        !            86:         * @param flags                 Flags to be set
        !            87:         */
        !            88:        void (*set_action_flags)(imv_state_t *this, uint32_t flags);
        !            89: 
        !            90:        /**
        !            91:         * Get flags set for completed actions
        !            92:         *
        !            93:         * @return                              Flags set for completed actions
        !            94:         */
        !            95:        uint32_t (*get_action_flags)(imv_state_t *this);
        !            96: 
        !            97:        /**
        !            98:         * Set session associated with TNCCS Connection
        !            99:         *
        !           100:         * @param session               Session associated with TNCCS Connection
        !           101:         */
        !           102:        void (*set_session)(imv_state_t *this, imv_session_t *session);
        !           103: 
        !           104:        /**
        !           105:         * Get session associated with TNCCS Connection
        !           106:         *
        !           107:         * @return                              Session associated with TNCCS Connection
        !           108:         */
        !           109:        imv_session_t* (*get_session)(imv_state_t *this);
        !           110: 
        !           111:        /**
        !           112:         * Get attribute segmentation contracts associated with TNCCS Connection
        !           113:         *
        !           114:         * @return                              Contracts associated with TNCCS Connection
        !           115:         */
        !           116:        seg_contract_manager_t* (*get_contracts)(imv_state_t *this);
        !           117: 
        !           118:        /**
        !           119:         * Change the connection state
        !           120:         *
        !           121:         * @param new_state             new connection state
        !           122:         * @return                              old connection state
        !           123:         */
        !           124:        TNC_ConnectionState (*change_state)(imv_state_t *this,
        !           125:                                                 TNC_ConnectionState new_state);
        !           126: 
        !           127:        /**
        !           128:         * Get IMV action recommendation and evaluation result
        !           129:         *
        !           130:         * @param rec                   IMV action recommendation
        !           131:         * @param eval                  IMV evaluation result
        !           132:         *
        !           133:         */
        !           134:        void (*get_recommendation)(imv_state_t *this,
        !           135:                                                           TNC_IMV_Action_Recommendation *rec,
        !           136:                                                           TNC_IMV_Evaluation_Result *eval);
        !           137: 
        !           138:        /**
        !           139:         * Set IMV action recommendation and evaluation result
        !           140:         *
        !           141:         * @param rec                   IMV action recommendation
        !           142:         * @param eval                  IMV evaluation result
        !           143:         *
        !           144:         */
        !           145:        void (*set_recommendation)(imv_state_t *this,
        !           146:                                                           TNC_IMV_Action_Recommendation rec,
        !           147:                                                           TNC_IMV_Evaluation_Result eval);
        !           148: 
        !           149:        /**
        !           150:         * Update IMV action recommendation and evaluation result
        !           151:         *
        !           152:         * @param rec                   IMV action recommendation
        !           153:         * @param eval                  IMV evaluation result
        !           154:         *
        !           155:         */
        !           156:        void (*update_recommendation)(imv_state_t *this,
        !           157:                                                                  TNC_IMV_Action_Recommendation rec,
        !           158:                                                                  TNC_IMV_Evaluation_Result eval);
        !           159: 
        !           160:        /**
        !           161:         * Get reason string based on the preferred language
        !           162:         *
        !           163:         * @param language_enumerator   language enumerator
        !           164:         * @param reason_string                 reason string
        !           165:         * @param reason_language               language of the returned reason string
        !           166:         * @return                                              TRUE if a reason string was found
        !           167:         */
        !           168:        bool (*get_reason_string)(imv_state_t *this,
        !           169:                                                          enumerator_t *language_enumerator,
        !           170:                                                          chunk_t *reason_string, char **reason_language);
        !           171: 
        !           172:        /**
        !           173:         * Get remediation instructions based on the preferred language
        !           174:         *
        !           175:         * @param language_enumerator   language enumerator
        !           176:         * @param string                                remediation instruction string
        !           177:         * @param lang_code                             language of the remediation instructions
        !           178:         * @param uri                                   remediation URI
        !           179:         * @return                                              TRUE if remediation instructions were found
        !           180:         */
        !           181:        bool (*get_remediation_instructions)(imv_state_t *this,
        !           182:                                                                                 enumerator_t *language_enumerator,
        !           183:                                                                                 chunk_t *string, char **lang_code,
        !           184:                                                                                 char **uri);
        !           185: 
        !           186:        /**
        !           187:         * Resets the state for a new measurement cycle triggered by a SRETRY batch
        !           188:         */
        !           189:        void (*reset)(imv_state_t *this);
        !           190: 
        !           191:        /**
        !           192:         * Destroys an imv_state_t object
        !           193:         */
        !           194:        void (*destroy)(imv_state_t *this);
        !           195: };
        !           196: 
        !           197: #endif /** IMV_STATE_H_ @}*/

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