From: Tobias Brunner Date: Fri, 24 Sep 2010 14:45:33 +0000 (+0200) Subject: Maemo: Plugin implements the listener_t interface. X-Git-Tag: 4.5.0~47 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9f01ba4044401f234a99acf241bf7ed9191981cd;p=thirdparty%2Fstrongswan.git Maemo: Plugin implements the listener_t interface. --- diff --git a/src/libcharon/plugins/maemo/maemo_service.c b/src/libcharon/plugins/maemo/maemo_service.c index 6d1e8141e1..ad150d7f8c 100644 --- a/src/libcharon/plugins/maemo/maemo_service.c +++ b/src/libcharon/plugins/maemo/maemo_service.c @@ -59,6 +59,11 @@ struct private_maemo_service_t { */ osso_context_t *context; + /** + * current IKE_SA + */ + ike_sa_t *ike_sa; + /** * Name of the current connection */ @@ -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)); diff --git a/src/libcharon/plugins/maemo/maemo_service.h b/src/libcharon/plugins/maemo/maemo_service.h index 129c3f893d..b0240cbaa8 100644 --- a/src/libcharon/plugins/maemo/maemo_service.h +++ b/src/libcharon/plugins/maemo/maemo_service.h @@ -21,6 +21,8 @@ #ifndef MAEMO_SERVICE_H_ #define MAEMO_SERVICE_H_ +#include + typedef struct maemo_service_t maemo_service_t; /** @@ -28,6 +30,11 @@ typedef struct maemo_service_t maemo_service_t; */ struct maemo_service_t { + /** + * Implements listener_t. + */ + listener_t listener; + /** * Destroy a maemo_service_t. */