diff options
author | Tobias Brunner <tobias@strongswan.org> | 2013-06-07 17:50:12 +0200 |
---|---|---|
committer | Tobias Brunner <tobias@strongswan.org> | 2013-06-11 11:18:17 +0200 |
commit | e5f4b3ca5bdc9f770fd8e1b0da03a056e9f0a0d2 (patch) | |
tree | fa72827c0bd98d04c82a5bd9629438314c96ee7f | |
parent | aa71f5f51593af99debbc791c92c914f42d141fa (diff) | |
download | strongswan-e5f4b3ca5bdc9f770fd8e1b0da03a056e9f0a0d2.tar.bz2 strongswan-e5f4b3ca5bdc9f770fd8e1b0da03a056e9f0a0d2.tar.xz |
farp: Use plugin features to register listener
-rw-r--r-- | src/libcharon/plugins/farp/farp_plugin.c | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/src/libcharon/plugins/farp/farp_plugin.c b/src/libcharon/plugins/farp/farp_plugin.c index a30c11962..cbc0bcf82 100644 --- a/src/libcharon/plugins/farp/farp_plugin.c +++ b/src/libcharon/plugins/farp/farp_plugin.c @@ -49,11 +49,38 @@ METHOD(plugin_t, get_name, char*, return "farp"; } +/** + * Register listener + */ +static bool plugin_cb(private_farp_plugin_t *this, + plugin_feature_t *feature, bool reg, void *cb_data) +{ + if (reg) + { + charon->bus->add_listener(charon->bus, &this->listener->listener); + } + else + { + charon->bus->remove_listener(charon->bus, &this->listener->listener); + } + return TRUE; +} + +METHOD(plugin_t, get_features, int, + private_farp_plugin_t *this, plugin_feature_t *features[]) +{ + static plugin_feature_t f[] = { + PLUGIN_CALLBACK((plugin_feature_callback_t)plugin_cb, NULL), + PLUGIN_PROVIDE(CUSTOM, "farp"), + }; + *features = f; + return countof(f); +} + METHOD(plugin_t, destroy, void, private_farp_plugin_t *this) { DESTROY_IF(this->spoofer); - charon->bus->remove_listener(charon->bus, &this->listener->listener); this->listener->destroy(this->listener); free(this); } @@ -69,15 +96,13 @@ plugin_t *farp_plugin_create() .public = { .plugin = { .get_name = _get_name, - .reload = (void*)return_false, + .get_features = _get_features, .destroy = _destroy, }, }, .listener = farp_listener_create(), ); - charon->bus->add_listener(charon->bus, &this->listener->listener); - this->spoofer = farp_spoofer_create(this->listener); if (!this->spoofer) { @@ -86,4 +111,3 @@ plugin_t *farp_plugin_create() } return &this->public.plugin; } - |