Use static plugin features in charon-nm

This commit is contained in:
Tobias Brunner 2012-06-25 18:58:53 +02:00
parent 5def45b890
commit ec3b332bf8
3 changed files with 37 additions and 22 deletions

View File

@ -264,6 +264,9 @@ int main(int argc, char *argv[])
DBG1(DBG_DMN, "daemon 'charon-nm': passed file integrity test");
}
/* register NM backend to be loaded with plugins */
nm_backend_register();
/* initialize daemon */
if (!charon->initialize(charon,
lib->settings->get_str(lib->settings, "charon-nm.load", PLUGINS)))
@ -272,17 +275,10 @@ int main(int argc, char *argv[])
goto deinit;
}
/* load NM backend */
if (!nm_backend_init())
{
DBG1(DBG_DMN, "failed to initialize NetworkManager backend - aborting charon-nm");
goto deinit_nm;
}
if (!drop_capabilities())
{
DBG1(DBG_DMN, "capability dropping failed - aborting charon-nm");
goto deinit_nm;
goto deinit;
}
/* add handler for SEGV and ILL,
@ -308,8 +304,6 @@ int main(int argc, char *argv[])
status = 0;
deinit_nm:
nm_backend_deinit();
deinit:
libcharon_deinit();
libhydra_deinit();

View File

@ -83,10 +83,10 @@ static bool cancel(nm_backend_t *this)
return TRUE;
}
/*
* see header file
/**
* Deinitialize NetworkManager backend
*/
void nm_backend_deinit()
static void nm_backend_deinit()
{
nm_backend_t *this = nm_backend;
@ -107,10 +107,10 @@ void nm_backend_deinit()
nm_backend = NULL;
}
/*
* see header file
/**
* Initialize NetworkManager backend
*/
bool nm_backend_init()
static bool nm_backend_init()
{
nm_backend_t *this;
@ -145,3 +145,29 @@ bool nm_backend_init()
return TRUE;
}
/**
* Initialize/deinitialize NetworkManager backend
*/
static bool nm_backend_cb(void *plugin,
plugin_feature_t *feature, bool reg, void *data)
{
if (reg)
{
return nm_backend_init();
}
nm_backend_deinit();
return TRUE;
}
/*
* see header file
*/
void nm_backend_register()
{
static plugin_feature_t features[] = {
PLUGIN_CALLBACK((plugin_feature_callback_t)nm_backend_cb, NULL),
PLUGIN_PROVIDE(CUSTOM, "NetworkManager backend"),
};
lib->plugins->add_static_features(lib->plugins, "nm-backend", features,
countof(features), TRUE);
}

View File

@ -31,11 +31,6 @@
*
* @return TRUE, if initialization was successful
*/
bool nm_backend_init();
/**
* Deinitialize the NetworkManager backend.
*/
void nm_backend_deinit();
void nm_backend_register();
#endif /** NM_BACKEND_H_ @}*/