ike-mobike: Support IKE_INTERMEDIATE exchange between IKE_SA_INIT and IKE_AUTH
This changes the MID of the first IKE_AUTH message.
This commit is contained in:
parent
e309f9f989
commit
4571322eb7
|
@ -365,11 +365,12 @@ METHOD(ike_mobike_t, transmit, bool,
|
|||
METHOD(task_t, build_i, status_t,
|
||||
private_ike_mobike_t *this, message_t *message)
|
||||
{
|
||||
if (message->get_exchange_type(message) == IKE_AUTH &&
|
||||
message->get_message_id(message) == 1)
|
||||
{ /* only in first IKE_AUTH */
|
||||
if (message->get_exchange_type(message) == IKE_AUTH)
|
||||
{
|
||||
message->add_notify(message, FALSE, MOBIKE_SUPPORTED, chunk_empty);
|
||||
build_address_list(this, message);
|
||||
/* only in first IKE_AUTH */
|
||||
this->public.task.build = (void*)return_need_more;
|
||||
}
|
||||
else if (message->get_exchange_type(message) == INFORMATIONAL)
|
||||
{
|
||||
|
@ -415,10 +416,11 @@ METHOD(task_t, build_i, status_t,
|
|||
METHOD(task_t, process_r, status_t,
|
||||
private_ike_mobike_t *this, message_t *message)
|
||||
{
|
||||
if (message->get_exchange_type(message) == IKE_AUTH &&
|
||||
message->get_message_id(message) == 1)
|
||||
{ /* only first IKE_AUTH */
|
||||
if (message->get_exchange_type(message) == IKE_AUTH)
|
||||
{
|
||||
process_payloads(this, message);
|
||||
/* only first IKE_AUTH */
|
||||
this->public.task.process = (void*)return_need_more;
|
||||
}
|
||||
else if (message->get_exchange_type(message) == INFORMATIONAL)
|
||||
{
|
||||
|
@ -464,7 +466,7 @@ METHOD(task_t, build_r, status_t,
|
|||
{
|
||||
if (message->get_exchange_type(message) == IKE_AUTH &&
|
||||
this->ike_sa->get_state(this->ike_sa) == IKE_ESTABLISHED)
|
||||
{
|
||||
{ /* in last IKE_AUTH only */
|
||||
if (this->ike_sa->supports_extension(this->ike_sa, EXT_MOBIKE))
|
||||
{
|
||||
message->add_notify(message, FALSE, MOBIKE_SUPPORTED, chunk_empty);
|
||||
|
@ -493,7 +495,7 @@ METHOD(task_t, process_i, status_t,
|
|||
{
|
||||
if (message->get_exchange_type(message) == IKE_AUTH &&
|
||||
this->ike_sa->get_state(this->ike_sa) == IKE_ESTABLISHED)
|
||||
{
|
||||
{ /* in last IKE_AUTH only */
|
||||
process_payloads(this, message);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue