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");
|
DBG1(DBG_DMN, "daemon 'charon-nm': passed file integrity test");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* register NM backend to be loaded with plugins */
|
||||||
|
nm_backend_register();
|
||||||
|
|
||||||
/* initialize daemon */
|
/* initialize daemon */
|
||||||
if (!charon->initialize(charon,
|
if (!charon->initialize(charon,
|
||||||
lib->settings->get_str(lib->settings, "charon-nm.load", PLUGINS)))
|
lib->settings->get_str(lib->settings, "charon-nm.load", PLUGINS)))
|
||||||
|
@ -272,17 +275,10 @@ int main(int argc, char *argv[])
|
||||||
goto deinit;
|
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())
|
if (!drop_capabilities())
|
||||||
{
|
{
|
||||||
DBG1(DBG_DMN, "capability dropping failed - aborting charon-nm");
|
DBG1(DBG_DMN, "capability dropping failed - aborting charon-nm");
|
||||||
goto deinit_nm;
|
goto deinit;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* add handler for SEGV and ILL,
|
/* add handler for SEGV and ILL,
|
||||||
|
@ -308,8 +304,6 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
status = 0;
|
status = 0;
|
||||||
|
|
||||||
deinit_nm:
|
|
||||||
nm_backend_deinit();
|
|
||||||
deinit:
|
deinit:
|
||||||
libcharon_deinit();
|
libcharon_deinit();
|
||||||
libhydra_deinit();
|
libhydra_deinit();
|
||||||
|
|
|
@ -83,10 +83,10 @@ static bool cancel(nm_backend_t *this)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* see header file
|
* Deinitialize NetworkManager backend
|
||||||
*/
|
*/
|
||||||
void nm_backend_deinit()
|
static void nm_backend_deinit()
|
||||||
{
|
{
|
||||||
nm_backend_t *this = nm_backend;
|
nm_backend_t *this = nm_backend;
|
||||||
|
|
||||||
|
@ -107,10 +107,10 @@ void nm_backend_deinit()
|
||||||
nm_backend = NULL;
|
nm_backend = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* see header file
|
* Initialize NetworkManager backend
|
||||||
*/
|
*/
|
||||||
bool nm_backend_init()
|
static bool nm_backend_init()
|
||||||
{
|
{
|
||||||
nm_backend_t *this;
|
nm_backend_t *this;
|
||||||
|
|
||||||
|
@ -145,3 +145,29 @@ bool nm_backend_init()
|
||||||
return TRUE;
|
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
|
* @return TRUE, if initialization was successful
|
||||||
*/
|
*/
|
||||||
bool nm_backend_init();
|
void nm_backend_register();
|
||||||
|
|
||||||
/**
|
|
||||||
* Deinitialize the NetworkManager backend.
|
|
||||||
*/
|
|
||||||
void nm_backend_deinit();
|
|
||||||
|
|
||||||
#endif /** NM_BACKEND_H_ @}*/
|
#endif /** NM_BACKEND_H_ @}*/
|
||||||
|
|
Loading…
Reference in New Issue