Annotation of embedaddon/strongswan/src/libtnccs/tnc/imv/imv.h, revision 1.1.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>