aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcharon/plugins/maemo/maemo_service.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libcharon/plugins/maemo/maemo_service.c')
-rw-r--r--src/libcharon/plugins/maemo/maemo_service.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/libcharon/plugins/maemo/maemo_service.c b/src/libcharon/plugins/maemo/maemo_service.c
index 6d1e8141e..ad150d7f8 100644
--- a/src/libcharon/plugins/maemo/maemo_service.c
+++ b/src/libcharon/plugins/maemo/maemo_service.c
@@ -60,6 +60,11 @@ struct private_maemo_service_t {
osso_context_t *context;
/**
+ * current IKE_SA
+ */
+ ike_sa_t *ike_sa;
+
+ /**
* Name of the current connection
*/
gchar *current;
@@ -77,6 +82,36 @@ static gint change_status(private_maemo_service_t *this, int status)
return res;
}
+METHOD(listener_t, ike_updown, bool,
+ private_maemo_service_t *this, ike_sa_t *ike_sa, bool up)
+{
+ return TRUE;
+}
+
+METHOD(listener_t, child_state_change, bool,
+ private_maemo_service_t *this, ike_sa_t *ike_sa, child_sa_t *child_sa,
+ child_sa_state_t state)
+{
+ return TRUE;
+}
+
+METHOD(listener_t, child_updown, bool,
+ private_maemo_service_t *this, ike_sa_t *ike_sa, child_sa_t *child_sa,
+ bool up)
+{
+ return TRUE;
+}
+
+METHOD(listener_t, ike_rekey, bool,
+ private_maemo_service_t *this, ike_sa_t *old, ike_sa_t *new)
+{
+ if (this->ike_sa == old)
+ {
+ this->ike_sa = new;
+ }
+ return TRUE;
+}
+
static gboolean initiate_connection(private_maemo_service_t *this,
GArray *arguments)
{
@@ -285,6 +320,7 @@ METHOD(maemo_service_t, destroy, void,
{
osso_deinitialize(this->context);
}
+ charon->bus->remove_listener(charon->bus, &this->public.listener);
lib->credmgr->remove_set(lib->credmgr, &this->creds->set);
this->creds->destroy(this->creds);
free(this);
@@ -300,6 +336,12 @@ maemo_service_t *maemo_service_create()
INIT(this,
.public = {
+ .listener = {
+ .ike_updown = _ike_updown,
+ .child_state_change = _child_state_change,
+ .child_updown = _child_updown,
+ .ike_rekey = _ike_rekey,
+ },
.destroy = _destroy,
},
.creds = mem_cred_create(),
@@ -334,6 +376,8 @@ maemo_service_t *maemo_service_create()
g_thread_init(NULL);
}
+ charon->bus->add_listener(charon->bus, &this->public.listener);
+
lib->processor->queue_job(lib->processor,
(job_t*)callback_job_create((callback_job_cb_t)run, this, NULL, NULL));