aboutsummaryrefslogtreecommitdiffstats
path: root/src/charon/plugins/nm/nm_plugin.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/charon/plugins/nm/nm_plugin.c')
-rw-r--r--src/charon/plugins/nm/nm_plugin.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/charon/plugins/nm/nm_plugin.c b/src/charon/plugins/nm/nm_plugin.c
index aa9552878..353742346 100644
--- a/src/charon/plugins/nm/nm_plugin.c
+++ b/src/charon/plugins/nm/nm_plugin.c
@@ -17,6 +17,7 @@
#include "nm_plugin.h"
#include "nm_service.h"
+#include "nm_creds.h"
#include <daemon.h>
#include <processing/jobs/callback_job.h>
@@ -33,7 +34,15 @@ struct private_nm_plugin_t {
*/
nm_plugin_t public;
+ /**
+ * Glib main loop for a thread, handles DBUS calls
+ */
GMainLoop *loop;
+
+ /**
+ * credential set registered at the daemon
+ */
+ nm_creds_t *creds;
};
/**
@@ -44,7 +53,7 @@ static job_requeue_t run(private_nm_plugin_t *this)
NMStrongswanPlugin *plugin;
GMainLoop *loop;
- plugin = nm_strongswan_plugin_new();
+ plugin = nm_strongswan_plugin_new(this->creds);
this->loop = loop = g_main_loop_new(NULL, FALSE);
g_main_loop_run(loop);
@@ -64,6 +73,8 @@ static void destroy(private_nm_plugin_t *this)
{
g_main_loop_quit(this->loop);
}
+ charon->credentials->remove_set(charon->credentials, &this->creds->set);
+ this->creds->destroy(this->creds);
free(this);
}
@@ -83,6 +94,9 @@ plugin_t *plugin_create()
g_thread_init(NULL);
}
+ this->creds = nm_creds_create();
+ charon->credentials->add_set(charon->credentials, &this->creds->set);
+
charon->processor->queue_job(charon->processor,
(job_t*)callback_job_create((callback_job_cb_t)run, this, NULL, NULL));