IKEv1 XAuth: Added new "swap_initiator" method to the standard task_t interface. This is needed for when we move a task from the passive queue to the active one. I'm not a huge fan of this method of doing things. Perhaps we should change task_t to have build_i, build_r, process_i, and process_r methods, and call the appropriate one from the task manager, since we have these methods for most tasks anyways.

This commit is contained in:
Clavister OpenSource
2012-03-20 17:30:52 +01:00
parent cc50df9e6c
commit 46897273d7
2 changed files with 23 additions and 0 deletions
+5
View File
@@ -151,6 +151,11 @@ struct task_t {
* Destroys a task_t object.
*/
void (*destroy) (task_t *this);
/**
* Swaps the initiator flag in a task (if applicable, NULL OK)
*/
void (*swap_initiator) (task_t *this);
};
#endif /** TASK_H_ @}*/
+18
View File
@@ -221,6 +221,23 @@ METHOD(task_t, destroy, void,
free(this);
}
METHOD(task_t, swap_initiator, void,
private_xauth_request_t *this)
{
if(this->initiator)
{
this->public.task.build = _build_r;
this->public.task.process = _process_r;
this->initiator = FALSE;
}
else
{
this->public.task.build = _build_i;
this->public.task.process = _process_i;
this->initiator = TRUE;
}
}
/*
* Described in header.
*/
@@ -234,6 +251,7 @@ xauth_request_t *xauth_request_create(ike_sa_t *ike_sa, bool initiator)
.get_type = _get_type,
.migrate = _migrate,
.destroy = _destroy,
.swap_initiator = _swap_initiator,
},
},
.initiator = initiator,