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"); DBG1(DBG_IKE, "sending address list update using MOBIKE");
mobike = ike_mobike_create(&this->public, TRUE); mobike = ike_mobike_create(&this->public, TRUE);
mobike->addresses(mobike);
this->task_manager->queue_task(this->task_manager, (task_t*)mobike); this->task_manager->queue_task(this->task_manager, (task_t*)mobike);
return this->task_manager->initiate(this->task_manager); return this->task_manager->initiate(this->task_manager);
} }

View File

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

View File

@ -45,6 +45,11 @@ struct ike_mobike_t {
*/ */
task_t task; 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. * Use the task to roam to other addresses.
* *