/* * Minimal example IMC for TNC testing * Copyright (c) 2014, Jouni Malinen * * This software may be distributed under the terms of the BSD license. * See README for more details. */ #include "includes.h" #include "common.h" #include "common/tnc.h" static int initialized = 0; static TNC_IMCID my_id = -1; TNC_Result TNC_IMC_Initialize( /*in*/ TNC_IMCID imcID, /*in*/ TNC_Version minVersion, /*in*/ TNC_Version maxVersion, /*out*/ TNC_Version *pOutActualVersion) { wpa_printf(MSG_INFO, "IMC(hostap) %s", __func__); if (initialized) return TNC_RESULT_ALREADY_INITIALIZED; if (minVersion < TNC_IFIMC_VERSION_1 || maxVersion > TNC_IFIMC_VERSION_1) return TNC_RESULT_NO_COMMON_VERSION; if (!pOutActualVersion) return TNC_RESULT_INVALID_PARAMETER; *pOutActualVersion = TNC_IFIMC_VERSION_1; my_id = imcID; initialized = 1; return TNC_RESULT_SUCCESS; } TNC_Result TNC_IMC_BeginHandshake( /*in*/ TNC_IMCID imcID, /*in*/ TNC_ConnectionID connectionID) { wpa_printf(MSG_INFO, "IMC(hostap) %s", __func__); if (!initialized) return TNC_RESULT_NOT_INITIALIZED; if (imcID != my_id) return TNC_RESULT_INVALID_PARAMETER; return TNC_RESULT_SUCCESS; } TNC_Result TNC_IMC_ProvideBindFunction( /*in*/ TNC_IMCID imcID, /*in*/ TNC_TNCC_BindFunctionPointer bindFunction) { wpa_printf(MSG_INFO, "IMC(hostap) %s", __func__); if (!initialized) return TNC_RESULT_NOT_INITIALIZED; if (imcID != my_id) return TNC_RESULT_INVALID_PARAMETER; return TNC_RESULT_SUCCESS; }