Annotation of embedaddon/strongswan/src/libtnccs/tnc/imv/imv.h, revision 1.1

1.1     ! misho       1: /*
        !             2:  * Copyright (C) 2010-2011 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:  * @defgroup imv imv
        !            18:  * @ingroup libtnccs
        !            19:  *
        !            20:  * @defgroup imvt imv
        !            21:  * @{ @ingroup imv
        !            22:  */
        !            23: 
        !            24: #ifndef IMV_H_
        !            25: #define IMV_H_
        !            26: 
        !            27: #include <tncifimv.h>
        !            28: 
        !            29: #include <library.h>
        !            30: 
        !            31: typedef struct imv_t imv_t;
        !            32: 
        !            33: /**
        !            34:  * Controls a single Integrity Measurement Verifier (IMV)
        !            35:  */
        !            36: struct imv_t {
        !            37: 
        !            38:        /**
        !            39:         * The TNC Server calls this function to initialize the IMV and agree on
        !            40:         * the API version number to be used. It also supplies the IMV ID, an IMV
        !            41:         * identifier that the IMV must use when calling TNC Server callback functions.
        !            42:         *
        !            43:         * @param imvID                                 IMV ID assigned by TNCS
        !            44:         * @param minVersion                    minimum API version supported
        !            45:         * @param maxVersion                    maximum API version supported by TNCS
        !            46:         * @param OutActualVersion              mutually supported API version number
        !            47:         * @return                                              TNC result code
        !            48:         */
        !            49:        TNC_Result (*initialize)(TNC_IMVID imvID,
        !            50:                                                         TNC_Version minVersion,
        !            51:                                                         TNC_Version maxVersion,
        !            52:                                                         TNC_Version *OutActualVersion);
        !            53: 
        !            54:        /**
        !            55:         * The TNC Server calls this function to inform the IMV that the state of
        !            56:         * the network connection identified by connectionID has changed to newState.
        !            57:         *
        !            58:         * @param imvID                                 IMV ID assigned by TNCS
        !            59:         * @param connectionID                  network connection ID assigned by TNCS
        !            60:         * @param newState                              new network connection state
        !            61:         * @return                                              TNC result code
        !            62:         */
        !            63:        TNC_Result (*notify_connection_change)(TNC_IMVID imvID,
        !            64:                                                                                   TNC_ConnectionID connectionID,
        !            65:                                                                                   TNC_ConnectionState newState);
        !            66: 
        !            67:        /**
        !            68:         * The TNC Server calls this function at the end of an Integrity Check
        !            69:         * Handshake (after all IMC-IMV messages have been delivered) to solicit
        !            70:         * recommendations from IMVs that have not yet provided a recommendation.
        !            71:         *
        !            72:         * @param imvID                                 IMV ID assigned by TNCS
        !            73:         * @param connectionID                  network connection ID assigned by TNCS
        !            74:         * @return                                              TNC result code
        !            75:         */
        !            76:        TNC_Result (*solicit_recommendation)(TNC_IMVID imvID,
        !            77:                                                                                 TNC_ConnectionID connectionID);
        !            78: 
        !            79:        /**
        !            80:         * The TNC Server calls this function to deliver a message to the IMV.
        !            81:         * The message is contained in the buffer referenced by message and contains
        !            82:         * the number of octets indicated by messageLength. The type of the message
        !            83:         * is indicated by messageType.
        !            84:         *
        !            85:         * @param imvID                                 IMV ID assigned by TNCS
        !            86:         * @param connectionID                  network connection ID assigned by TNCS
        !            87:         * @param message                               reference to buffer containing message
        !            88:         * @param messageLength                 number of octets in message
        !            89:         * @param messageType                   message type of message
        !            90:         * @return                                              TNC result code
        !            91:         */
        !            92:        TNC_Result (*receive_message)(TNC_IMVID imvID,
        !            93:                                                                  TNC_ConnectionID connectionID,
        !            94:                                                                  TNC_BufferReference message,
        !            95:                                                                  TNC_UInt32 messageLength,
        !            96:                                                                  TNC_MessageType messageType);
        !            97: 
        !            98:        /**
        !            99:         * The TNC Server calls this function to deliver a message to the IMV.
        !           100:         * The message is contained in the buffer referenced by message and contains
        !           101:         * the number of octets indicated by messageLength. The type of the message
        !           102:         * is indicated by the message Vendor ID and message subtype.
        !           103:         *
        !           104:         * @param imvID                                 IMV ID assigned by TNCS
        !           105:         * @param connectionID                  network connection ID assigned by TNCS
        !           106:         * @param messageFlags                  message flags
        !           107:         * @param message                               reference to buffer containing message
        !           108:         * @param messageLength                 number of octets in message
        !           109:         * @param messageVendorID               message Vendor ID
        !           110:         * @param messageSubtype                message subtype
        !           111:         * @param sourceIMCID                   source IMC ID
        !           112:         * @param destinationIMVID              destination IMV ID
        !           113:         * @return                                              TNC result code
        !           114:         */
        !           115:        TNC_Result (*receive_message_long)(TNC_IMVID imvID,
        !           116:                                                                           TNC_ConnectionID connectionID,
        !           117:                                                                           TNC_UInt32 messageFlags,
        !           118:                                                                           TNC_BufferReference message,
        !           119:                                                                           TNC_UInt32 messageLength,
        !           120:                                                                           TNC_VendorID messageVendorID,
        !           121:                                                                           TNC_MessageSubtype messageSubtype,
        !           122:                                                                           TNC_UInt32 sourceIMCID,
        !           123:                                                                           TNC_UInt32 destinationIMVID);
        !           124: 
        !           125:        /**
        !           126:         * The TNC Server calls this function to notify IMVs that all IMC messages
        !           127:         * received in a batch have been delivered and this is the IMV’s last chance
        !           128:         * to send a message in the batch of IMV messages currently being collected.
        !           129:         *
        !           130:         * @param imvID                                 IMV ID assigned by TNCS
        !           131:         * @param connectionID                  network connection ID assigned by TNCS
        !           132:         * @return                                              TNC result code
        !           133:         */
        !           134:        TNC_Result (*batch_ending)(TNC_IMVID imvID,
        !           135:                                                           TNC_ConnectionID connectionID);
        !           136: 
        !           137:        /**
        !           138:         * The TNC Server calls this function to close down the IMV.
        !           139:         *
        !           140:         * @param imvID                                 IMV ID assigned by TNCS
        !           141:         * @return                                              TNC result code
        !           142:         */
        !           143:        TNC_Result (*terminate)(TNC_IMVID imvID);
        !           144: 
        !           145:        /**
        !           146:         * IMVs implementing the UNIX/Linux Dynamic Linkage platform binding MUST
        !           147:         * define this additional function. The TNC Server MUST call the function
        !           148:         * immediately after calling TNC_IMV_Initialize to provide a pointer to the
        !           149:         * TNCS bind function. The IMV can then use the TNCS bind function to obtain
        !           150:         * pointers to any other TNCS functions.
        !           151:         *
        !           152:         * @param imvID                                 IMV ID assigned by TNCS
        !           153:         * @param bindFunction                  pointer to TNC_TNCS_BindFunction
        !           154:         * @return                                              TNC result code
        !           155:         */
        !           156:        TNC_Result (*provide_bind_function)(TNC_IMVID imvID,
        !           157:                                                                                TNC_TNCS_BindFunctionPointer bindFunction);
        !           158: 
        !           159:        /**
        !           160:         * Sets the ID of an imv_t object.
        !           161:         *
        !           162:         * @param id                                    IMV ID to be assigned
        !           163:         */
        !           164:        void (*set_id)(imv_t *this, TNC_IMVID id);
        !           165: 
        !           166:        /**
        !           167:         * Returns the ID of an imv_t object.
        !           168:         *
        !           169:         * @return                                              IMV ID assigned by TNCS
        !           170:         */
        !           171:        TNC_IMVID (*get_id)(imv_t *this);
        !           172: 
        !           173:        /**
        !           174:         * Assign an additional ID to an imv_t object.
        !           175:         *
        !           176:         * @param id                                    additional IMV ID to be assigned
        !           177:         */
        !           178:        void (*add_id)(imv_t *this, TNC_IMVID id);
        !           179: 
        !           180:        /**
        !           181:         * Checks if the ID is assigned to the imv_t object.
        !           182:         *
        !           183:         * @return                                              TRUE if IMV ID is assigned to imv_t object
        !           184:         */
        !           185:        bool (*has_id)(imv_t *this, TNC_IMVID id);
        !           186: 
        !           187:        /**
        !           188:         * Returns the name of an imv_t object.
        !           189:         *
        !           190:         * @return                                              name of IMV
        !           191:         */
        !           192:        char* (*get_name)(imv_t *this);
        !           193: 
        !           194:        /**
        !           195:         * Sets the supported message types of an imv_t object.
        !           196:         *
        !           197:         * @param supported_types               list of messages type supported by IMV
        !           198:         * @param type_count                    number of supported message types
        !           199:         */
        !           200:        void (*set_message_types)(imv_t *this, TNC_MessageTypeList supported_types,
        !           201:                                                                                   TNC_UInt32 type_count);
        !           202: 
        !           203:        /**
        !           204:         * Sets the supported long message types of an imv_t object.
        !           205:         *
        !           206:         * @param supported_vids                list of vendor IDs supported by IMC
        !           207:         * @param supported_subtypes    list of messages type supported by IMC
        !           208:         * @param type_count                    number of supported message types
        !           209:         */
        !           210:        void (*set_message_types_long)(imv_t *this, TNC_VendorIDList supported_vids,
        !           211:                                                                   TNC_MessageSubtypeList supported_subtypes,
        !           212:                                                                   TNC_UInt32 type_count);
        !           213: 
        !           214:        /**
        !           215:         * Check if the IMV supports a given message type.
        !           216:         *
        !           217:         * @param msg_vid                               message vendor ID
        !           218:         * @param msg_subtype                   message subtype
        !           219:         * @return                                              TRUE if supported
        !           220:         */
        !           221:        bool (*type_supported)(imv_t *this, TNC_VendorID msg_vid,
        !           222:                                                                                TNC_MessageSubtype msg_subtype);
        !           223: 
        !           224:        /**
        !           225:         * Destroys an imv_t object.
        !           226:         */
        !           227:        void (*destroy)(imv_t *this);
        !           228: };
        !           229: 
        !           230: #endif /** IMV_H_ @}*/

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