diff options
author | Martin Willi <martin@revosec.ch> | 2012-11-15 09:50:20 +0100 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2012-11-30 15:48:20 +0100 |
commit | 016d343a50f32b468d559c93bcfa7335c800a072 (patch) | |
tree | cc80a3972a867a81c330d4bb1546423619f06b34 /src/libcharon/plugins/tnc_imc/tnc_imc_manager.c | |
parent | be18ee8123d6de3984a04f9feb1e457b7c45b0b5 (diff) | |
download | strongswan-016d343a50f32b468d559c93bcfa7335c800a072.tar.bz2 strongswan-016d343a50f32b468d559c93bcfa7335c800a072.tar.xz |
Add wrappers to IMC/IMV managers loading IMC/IMVs from function pointers
Diffstat (limited to 'src/libcharon/plugins/tnc_imc/tnc_imc_manager.c')
-rw-r--r-- | src/libcharon/plugins/tnc_imc/tnc_imc_manager.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/libcharon/plugins/tnc_imc/tnc_imc_manager.c b/src/libcharon/plugins/tnc_imc/tnc_imc_manager.c index 1d2cd0c79..544270a7a 100644 --- a/src/libcharon/plugins/tnc_imc/tnc_imc_manager.c +++ b/src/libcharon/plugins/tnc_imc/tnc_imc_manager.c @@ -116,6 +116,37 @@ METHOD(imc_manager_t, load, bool, return TRUE; } +METHOD(imc_manager_t, load_from_functions, bool, + private_tnc_imc_manager_t *this, char *name, + TNC_IMC_InitializePointer initialize, + TNC_IMC_NotifyConnectionChangePointer notify_connection_change, + TNC_IMC_BeginHandshakePointer begin_handshake, + TNC_IMC_ReceiveMessagePointer receive_message, + TNC_IMC_ReceiveMessageLongPointer receive_message_long, + TNC_IMC_BatchEndingPointer batch_ending, + TNC_IMC_TerminatePointer terminate, + TNC_IMC_ProvideBindFunctionPointer provide_bind_function) +{ + imc_t *imc; + + imc = tnc_imc_create_from_functions(name, + initialize, notify_connection_change, + begin_handshake, receive_message, + receive_message_long, batch_ending, + terminate, provide_bind_function); + if (!imc) + { + return FALSE; + } + if (!add(this, imc)) + { + imc->destroy(imc); + return FALSE; + } + DBG1(DBG_TNC, "IMC %u \"%s\" loaded", imc->get_id(imc), name); + return TRUE; +} + METHOD(imc_manager_t, is_registered, bool, private_tnc_imc_manager_t *this, TNC_IMCID id) { @@ -346,6 +377,7 @@ imc_manager_t* tnc_imc_manager_create(void) .add = _add, .remove = _remove_, /* avoid name conflict with stdio.h */ .load = _load, + .load_from_functions = _load_from_functions, .is_registered = _is_registered, .reserve_id = _reserve_id, .get_preferred_language = _get_preferred_language, |