Explicitly configure MOBIKE tasks to update the list of additional addresses.

This commit is contained in:
Tobias Brunner 2010-10-05 16:49:20 +02:00
parent 31e7dc4dfd
commit 13876431d6
3 changed files with 15 additions and 2 deletions

View File

@ -1740,6 +1740,7 @@ METHOD(ike_sa_t, roam, status_t,
{
DBG1(DBG_IKE, "sending address list update using MOBIKE");
mobike = ike_mobike_create(&this->public, TRUE);
mobike->addresses(mobike);
this->task_manager->queue_task(this->task_manager, (task_t*)mobike);
return this->task_manager->initiate(this->task_manager);
}

View File

@ -540,6 +540,14 @@ METHOD(task_t, process_i, status_t,
return NEED_MORE;
}
METHOD(ike_mobike_t, addresses, void,
private_ike_mobike_t *this)
{
this->address = TRUE;
this->ike_sa->set_pending_updates(this->ike_sa,
this->ike_sa->get_pending_updates(this->ike_sa) + 1);
}
METHOD(ike_mobike_t, roam, void,
private_ike_mobike_t *this, bool address)
{
@ -556,7 +564,6 @@ METHOD(ike_mobike_t, dpd, void,
{
this->natd = ike_natd_create(this->ike_sa, this->initiator);
}
this->address = FALSE;
this->ike_sa->set_pending_updates(this->ike_sa,
this->ike_sa->get_pending_updates(this->ike_sa) + 1);
}
@ -609,6 +616,7 @@ ike_mobike_t *ike_mobike_create(ike_sa_t *ike_sa, bool initiator)
.migrate = _migrate,
.destroy = _destroy,
},
.addresses = _addresses,
.roam = _roam,
.dpd = _dpd,
.transmit = _transmit,
@ -616,7 +624,6 @@ ike_mobike_t *ike_mobike_create(ike_sa_t *ike_sa, bool initiator)
},
.ike_sa = ike_sa,
.initiator = initiator,
.address = TRUE,
);
if (initiator)

View File

@ -45,6 +45,11 @@ struct ike_mobike_t {
*/
task_t task;
/**
* Use the task to update the list of additional addresses.
*/
void (*addresses)(ike_mobike_t *this);
/**
* Use the task to roam to other addresses.
*