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:
@@ -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_ @}*/
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user