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_imv/tnc_imv_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_imv/tnc_imv_manager.c')
-rw-r--r-- | src/libcharon/plugins/tnc_imv/tnc_imv_manager.c | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/src/libcharon/plugins/tnc_imv/tnc_imv_manager.c b/src/libcharon/plugins/tnc_imv/tnc_imv_manager.c index c5bb5fffe..5af6a72ac 100644 --- a/src/libcharon/plugins/tnc_imv/tnc_imv_manager.c +++ b/src/libcharon/plugins/tnc_imv/tnc_imv_manager.c @@ -35,7 +35,6 @@ typedef struct private_tnc_imv_manager_t private_tnc_imv_manager_t; - /** * Private data of an imv_manager_t object. */ @@ -132,6 +131,37 @@ METHOD(imv_manager_t, load, bool, return TRUE; } +METHOD(imv_manager_t, load_from_functions, bool, + private_tnc_imv_manager_t *this, char *name, + TNC_IMV_InitializePointer initialize, + TNC_IMV_NotifyConnectionChangePointer notify_connection_change, + TNC_IMV_ReceiveMessagePointer receive_message, + TNC_IMV_ReceiveMessageLongPointer receive_message_long, + TNC_IMV_SolicitRecommendationPointer solicit_recommendation, + TNC_IMV_BatchEndingPointer batch_ending, + TNC_IMV_TerminatePointer terminate, + TNC_IMV_ProvideBindFunctionPointer provide_bind_function) +{ + imv_t *imv; + + imv = tnc_imv_create_from_functions(name, + initialize,notify_connection_change, + receive_message, receive_message_long, + solicit_recommendation, batch_ending, + terminate, provide_bind_function); + if (!imv) + { + return FALSE; + } + if (!add(this, imv)) + { + imv->destroy(imv); + return FALSE; + } + DBG1(DBG_TNC, "IMV %u \"%s\" loaded", imv->get_id(imv), name); + return TRUE; +} + METHOD(imv_manager_t, is_registered, bool, private_tnc_imv_manager_t *this, TNC_IMVID id) { @@ -427,6 +457,7 @@ imv_manager_t* tnc_imv_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_recommendation_policy = _get_recommendation_policy, |