1  /*
2   * Minimal example IMV for TNC testing
3   * Copyright (c) 2014, Jouni Malinen <j@w1.fi>
4   *
5   * This software may be distributed under the terms of the BSD license.
6   * See README for more details.
7   */
8  
9  #include "includes.h"
10  
11  #include "common.h"
12  #include "common/tnc.h"
13  
14  static int initialized = 0;
15  static TNC_IMVID my_id = -1;
16  
TNC_IMV_Initialize(TNC_IMVID imvID,TNC_Version minVersion,TNC_Version maxVersion,TNC_Version * pOutActualVersion)17  TNC_Result TNC_IMV_Initialize(
18  	/*in*/ TNC_IMVID imvID,
19  	/*in*/ TNC_Version minVersion,
20  	/*in*/ TNC_Version maxVersion,
21  	/*out*/ TNC_Version *pOutActualVersion)
22  {
23  	if (initialized)
24  		return TNC_RESULT_ALREADY_INITIALIZED;
25  
26  	if (minVersion < TNC_IFIMV_VERSION_1 ||
27  	    maxVersion > TNC_IFIMV_VERSION_1)
28  		return TNC_RESULT_NO_COMMON_VERSION;
29  
30  	if (!pOutActualVersion)
31  		return TNC_RESULT_INVALID_PARAMETER;
32  	*pOutActualVersion = TNC_IFIMV_VERSION_1;
33  
34  	initialized = 1;
35  	my_id = imvID;
36  
37  	return TNC_RESULT_SUCCESS;
38  }
39  
40  
TNC_IMV_SolicitRecommendation(TNC_IMVID imvID,TNC_ConnectionID connectionID)41  TNC_Result TNC_IMV_SolicitRecommendation(
42  	/*in*/ TNC_IMVID imvID,
43  	/*in*/ TNC_ConnectionID connectionID)
44  {
45  	if (!initialized)
46  		return TNC_RESULT_NOT_INITIALIZED;
47  
48  	if (imvID != my_id)
49  		return TNC_RESULT_INVALID_PARAMETER;
50  
51  	return TNC_RESULT_SUCCESS;
52  }
53  
54  
TNC_IMV_ProvideBindFunction(TNC_IMVID imvID,TNC_TNCS_BindFunctionPointer bindFunction)55  TNC_Result TNC_IMV_ProvideBindFunction(
56  	/*in*/ TNC_IMVID imvID,
57  	/*in*/ TNC_TNCS_BindFunctionPointer bindFunction)
58  {
59  	if (!initialized)
60  		return TNC_RESULT_NOT_INITIALIZED;
61  
62  	if (imvID != my_id)
63  		return TNC_RESULT_INVALID_PARAMETER;
64  
65  	return TNC_RESULT_SUCCESS;
66  }
67