aboutsummaryrefslogtreecommitdiffstats
path: root/src/charon-nm/nm/nm_backend.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/charon-nm/nm/nm_backend.c')
-rw-r--r--src/charon-nm/nm/nm_backend.c38
1 files changed, 32 insertions, 6 deletions
diff --git a/src/charon-nm/nm/nm_backend.c b/src/charon-nm/nm/nm_backend.c
index 19d095935..f8ed23ef1 100644
--- a/src/charon-nm/nm/nm_backend.c
+++ b/src/charon-nm/nm/nm_backend.c
@@ -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);
+} \ No newline at end of file