Use static plugin features in charon-nm
This commit is contained in:
parent
5def45b890
commit
ec3b332bf8
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
}
|
|
@ -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_ @}*/
|
||||
|
|
Loading…
Reference in New Issue