Annotation of embedaddon/strongswan/src/libimcv/imv/imv_if.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:  * Copyright (C) 2012-2013 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:  * Define the following two static constants externally:
                     18:  * static const char imv_name[] = "xx";
                     19:  * static const imv_agent_create_t imv_agent_create = imv_xx_agent_create;
                     20:  */
                     21: 
                     22: #include <utils/debug.h>
                     23: 
                     24: static imv_agent_if_t *imv_agent;
                     25: 
                     26: /*
                     27:  * see section 3.8.1 of TCG TNC IF-IMV Specification 1.3
                     28:  */
                     29: TNC_Result TNC_IMV_API TNC_IMV_Initialize(TNC_IMVID imv_id,
                     30:                                                                                  TNC_Version min_version,
                     31:                                                                                  TNC_Version max_version,
                     32:                                                                                  TNC_Version *actual_version)
                     33: {
                     34:        if (imv_agent)
                     35:        {
                     36:                DBG1(DBG_IMV, "IMV \"%s\" has already been initialized", imv_name);
                     37:                return TNC_RESULT_ALREADY_INITIALIZED;
                     38:        }
                     39: 
                     40:        imv_agent = imv_agent_create(imv_name, imv_id, actual_version);
                     41: 
                     42:        if (!imv_agent)
                     43:        {
                     44:                return TNC_RESULT_FATAL;
                     45:        }
                     46:        if (min_version > TNC_IFIMV_VERSION_1 || max_version < TNC_IFIMV_VERSION_1)
                     47:        {
                     48:                DBG1(DBG_IMV, "no common IF-IMV version");
                     49:                return TNC_RESULT_NO_COMMON_VERSION;
                     50:        }
                     51:        return TNC_RESULT_SUCCESS;
                     52: }
                     53: 
                     54: /**
                     55:  * see section 3.8.2 of TCG TNC IF-IMV Specification 1.3
                     56:  */
                     57: TNC_Result TNC_IMV_API TNC_IMV_NotifyConnectionChange(TNC_IMVID imv_id,
                     58:                                                                                                TNC_ConnectionID connection_id,
                     59:                                                                                                TNC_ConnectionState new_state)
                     60: {
                     61:        if (!imv_agent)
                     62:        {
                     63:                DBG1(DBG_IMV, "IMV \"%s\" has not been initialized", imv_name);
                     64:                return TNC_RESULT_NOT_INITIALIZED;
                     65:        }
                     66:        return imv_agent->notify_connection_change(imv_agent, connection_id,
                     67:                                                                                           new_state);
                     68: }
                     69: 
                     70: /**
                     71:  * see section 3.8.4 of TCG TNC IF-IMV Specification 1.3
                     72:  */
                     73: TNC_Result TNC_IMV_API TNC_IMV_ReceiveMessage(TNC_IMVID imv_id,
                     74:                                                                                          TNC_ConnectionID connection_id,
                     75:                                                                                          TNC_BufferReference msg,
                     76:                                                                                          TNC_UInt32 msg_len,
                     77:                                                                                          TNC_MessageType msg_type)
                     78: {
                     79:        if (!imv_agent)
                     80:        {
                     81:                DBG1(DBG_IMV, "IMV \"%s\" has not been initialized", imv_name);
                     82:                return TNC_RESULT_NOT_INITIALIZED;
                     83:        }
                     84:        return imv_agent->receive_message(imv_agent, connection_id, msg_type,
                     85:                                                                          chunk_create(msg, msg_len));
                     86: }
                     87: 
                     88: /**
                     89:  * see section 3.8.6 of TCG TNC IF-IMV Specification 1.3
                     90:  */
                     91: TNC_Result TNC_IMV_API TNC_IMV_ReceiveMessageLong(TNC_IMVID imv_id,
                     92:                                                                                                  TNC_ConnectionID connection_id,
                     93:                                                                                                  TNC_UInt32 msg_flags,
                     94:                                                                                                  TNC_BufferReference msg,
                     95:                                                                                                  TNC_UInt32 msg_len,
                     96:                                                                                                  TNC_VendorID msg_vid,
                     97:                                                                                                  TNC_MessageSubtype msg_subtype,
                     98:                                                                                                  TNC_UInt32 src_imc_id,
                     99:                                                                                                  TNC_UInt32 dst_imv_id)
                    100: {
                    101:        if (!imv_agent)
                    102:        {
                    103:                DBG1(DBG_IMV, "IMV \"%s\" has not been initialized", imv_name);
                    104:                return TNC_RESULT_NOT_INITIALIZED;
                    105:        }
                    106:        return imv_agent->receive_message_long(imv_agent, connection_id,
                    107:                                                        src_imc_id, dst_imv_id,
                    108:                                                        msg_vid, msg_subtype, chunk_create(msg, msg_len));
                    109: }
                    110: 
                    111: /**
                    112:  * see section 3.8.7 of TCG TNC IF-IMV Specification 1.3
                    113:  */
                    114: TNC_Result TNC_IMV_API TNC_IMV_SolicitRecommendation(TNC_IMVID imv_id,
                    115:                                                                                                TNC_ConnectionID connection_id)
                    116: {
                    117: 
                    118:        if (!imv_agent)
                    119:        {
                    120:                DBG1(DBG_IMV, "IMV \"%s\" has not been initialized", imv_name);
                    121:                return TNC_RESULT_NOT_INITIALIZED;
                    122:        }
                    123:        return imv_agent->solicit_recommendation(imv_agent, connection_id);
                    124: }
                    125: 
                    126: /**
                    127:  * see section 3.8.8 of TCG TNC IF-IMV Specification 1.3
                    128:  */
                    129: TNC_Result TNC_IMV_API TNC_IMV_BatchEnding(TNC_IMVID imv_id,
                    130:                                                                                   TNC_ConnectionID connection_id)
                    131: {
                    132:        if (!imv_agent)
                    133:        {
                    134:                DBG1(DBG_IMV, "IMV \"%s\" has not been initialized", imv_name);
                    135:                return TNC_RESULT_NOT_INITIALIZED;
                    136:        }
                    137:        return imv_agent->batch_ending(imv_agent, connection_id);
                    138: }
                    139: 
                    140: /**
                    141:  * see section 3.8.9 of TCG TNC IF-IMV Specification 1.3
                    142:  */
                    143: TNC_Result TNC_IMV_API TNC_IMV_Terminate(TNC_IMVID imv_id)
                    144: {
                    145:        if (!imv_agent)
                    146:        {
                    147:                DBG1(DBG_IMV, "IMV \"%s\" has not been initialized", imv_name);
                    148:                return TNC_RESULT_NOT_INITIALIZED;
                    149:        }
                    150:        imv_agent->destroy(imv_agent);
                    151:        imv_agent = NULL;
                    152: 
                    153:        return TNC_RESULT_SUCCESS;
                    154: }
                    155: 
                    156: /**
                    157:  * see section 4.2.8.1 of TCG TNC IF-IMV Specification 1.3
                    158:  */
                    159: TNC_Result TNC_IMV_API TNC_IMV_ProvideBindFunction(TNC_IMVID imv_id,
                    160:                                                                TNC_TNCS_BindFunctionPointer bind_function)
                    161: {
                    162:        if (!imv_agent)
                    163:        {
                    164:                DBG1(DBG_IMV, "IMV \"%s\" has not been initialized", imv_name);
                    165:                return TNC_RESULT_NOT_INITIALIZED;
                    166:        }
                    167:        return imv_agent->bind_functions(imv_agent, bind_function);
                    168: }

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