diff options
author | Martin Willi <martin@revosec.ch> | 2011-10-13 13:47:18 +0200 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2011-10-14 10:05:48 +0200 |
commit | 5f17a09323b9f6ae4bcfa8859a80e35421d6281b (patch) | |
tree | b18841fce5b4b18fa216111477e204a5bb5b2a8c | |
parent | 49458758f6f80f61851ccfa9f416735f60a723f3 (diff) | |
download | strongswan-5f17a09323b9f6ae4bcfa8859a80e35421d6281b.tar.bz2 strongswan-5f17a09323b9f6ae4bcfa8859a80e35421d6281b.tar.xz |
Add features support to eap-sim-file plugin
-rw-r--r-- | src/libcharon/plugins/eap_sim_file/Makefile.am | 1 | ||||
-rw-r--r-- | src/libcharon/plugins/eap_sim_file/eap_sim_file_plugin.c | 55 |
2 files changed, 33 insertions, 23 deletions
diff --git a/src/libcharon/plugins/eap_sim_file/Makefile.am b/src/libcharon/plugins/eap_sim_file/Makefile.am index 0606550a9..d76cdc5ca 100644 --- a/src/libcharon/plugins/eap_sim_file/Makefile.am +++ b/src/libcharon/plugins/eap_sim_file/Makefile.am @@ -8,6 +8,7 @@ if MONOLITHIC noinst_LTLIBRARIES = libstrongswan-eap-sim-file.la else plugin_LTLIBRARIES = libstrongswan-eap-sim-file.la +libstrongswan_eap_sim_file_la_LIBADD = $(top_builddir)/src/libsimaka/libsimaka.la endif libstrongswan_eap_sim_file_la_SOURCES = \ diff --git a/src/libcharon/plugins/eap_sim_file/eap_sim_file_plugin.c b/src/libcharon/plugins/eap_sim_file/eap_sim_file_plugin.c index 6d84d596b..2aadfcc36 100644 --- a/src/libcharon/plugins/eap_sim_file/eap_sim_file_plugin.c +++ b/src/libcharon/plugins/eap_sim_file/eap_sim_file_plugin.c @@ -56,17 +56,40 @@ METHOD(plugin_t, get_name, char*, return "eap-sim-file"; } +/** + * Callback providing our card to register + */ +static simaka_card_t* get_card(private_eap_sim_file_t *this) +{ + return &this->card->card; +} + +/** + * Callback providing our provider to register + */ +static simaka_provider_t* get_provider(private_eap_sim_file_t *this) +{ + return &this->provider->provider; +} + +METHOD(plugin_t, get_features, int, + private_eap_sim_file_t *this, plugin_feature_t *features[]) +{ + static plugin_feature_t f[] = { + PLUGIN_CALLBACK(simaka_manager_register, get_card), + PLUGIN_PROVIDE(CUSTOM, "sim-card"), + PLUGIN_DEPENDS(CUSTOM, "sim-manager"), + PLUGIN_CALLBACK(simaka_manager_register, get_provider), + PLUGIN_PROVIDE(CUSTOM, "sim-provider"), + PLUGIN_DEPENDS(CUSTOM, "sim-manager"), + }; + *features = f; + return countof(f); +} + METHOD(plugin_t, destroy, void, private_eap_sim_file_t *this) { - simaka_manager_t *mgr; - - mgr = lib->get(lib, "sim-manager"); - if (mgr) - { - mgr->remove_card(mgr, &this->card->card); - mgr->remove_provider(mgr, &this->provider->provider); - } this->card->destroy(this->card); this->provider->destroy(this->provider); this->triplets->destroy(this->triplets); @@ -79,34 +102,20 @@ METHOD(plugin_t, destroy, void, plugin_t *eap_sim_file_plugin_create() { private_eap_sim_file_t *this; - simaka_manager_t *mgr; INIT(this, .public = { .plugin = { .get_name = _get_name, - .reload = (void*)return_false, + .get_features = _get_features, .destroy = _destroy, }, }, .triplets = eap_sim_file_triplets_create(TRIPLET_FILE), ); - this->provider = eap_sim_file_provider_create(this->triplets); - if (!this->provider) - { - this->triplets->destroy(this->triplets); - free(this); - return NULL; - } this->card = eap_sim_file_card_create(this->triplets); - mgr = lib->get(lib, "sim-manager"); - if (mgr) - { - mgr->add_card(mgr, &this->card->card); - mgr->add_provider(mgr, &this->provider->provider); - } return &this->public.plugin; } |