Maemo: Plugin implements the listener_t interface.

This commit is contained in:
Tobias Brunner
2010-10-14 17:36:19 +02:00
parent 39e5b21310
commit 9f01ba4044
2 changed files with 51 additions and 0 deletions
@@ -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));
@@ -21,6 +21,8 @@
#ifndef MAEMO_SERVICE_H_
#define MAEMO_SERVICE_H_
#include <bus/listeners/listener.h>
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.
*/