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