ike-config: Support exchange between IKE_SA_INIT and IKE_AUTH

This changes the MID of the first IKE_AUTH message.
This commit is contained in:
Tobias Brunner
2022-06-29 10:28:50 +02:00
parent 09d4497536
commit 366fce8f03
+12 -4
View File
@@ -1,4 +1,5 @@
/* /*
* Copyright (C) 2012-2018 Tobias Brunner
* Copyright (C) 2007 Martin Willi * Copyright (C) 2007 Martin Willi
* Copyright (C) 2006-2007 Fabian Hartmann, Noah Heusser * Copyright (C) 2006-2007 Fabian Hartmann, Noah Heusser
* *
@@ -240,8 +241,8 @@ static void process_payloads(private_ike_config_t *this, message_t *message)
METHOD(task_t, build_i, status_t, METHOD(task_t, build_i, status_t,
private_ike_config_t *this, message_t *message) private_ike_config_t *this, message_t *message)
{ {
if (message->get_message_id(message) == 1) if (message->get_exchange_type(message) == IKE_AUTH)
{ /* in first IKE_AUTH only */ {
cp_payload_t *cp = NULL; cp_payload_t *cp = NULL;
enumerator_t *enumerator; enumerator_t *enumerator;
attribute_handler_t *handler; attribute_handler_t *handler;
@@ -251,6 +252,10 @@ METHOD(task_t, build_i, status_t,
linked_list_t *vips; linked_list_t *vips;
host_t *host; host_t *host;
/* add attributes to first IKE_AUTH only, keep registered until
* attributes are received in the last IKE_AUTH */
this->public.task.build = (void*)return_need_more;
vips = linked_list_create(); vips = linked_list_create();
/* reuse virtual IP if we already have one */ /* reuse virtual IP if we already have one */
@@ -329,9 +334,11 @@ METHOD(task_t, build_i, status_t,
METHOD(task_t, process_r, status_t, METHOD(task_t, process_r, status_t,
private_ike_config_t *this, message_t *message) private_ike_config_t *this, message_t *message)
{ {
if (message->get_message_id(message) == 1) if (message->get_exchange_type(message) == IKE_AUTH)
{ /* in first IKE_AUTH only */ {
process_payloads(this, message); process_payloads(this, message);
/* process attributes in first IKE_AUTH only */
this->public.task.process = (void*)return_need_more;
} }
return NEED_MORE; return NEED_MORE;
} }
@@ -486,6 +493,7 @@ METHOD(task_t, migrate, void,
this->vips = linked_list_create(); this->vips = linked_list_create();
this->requested->destroy_function(this->requested, free); this->requested->destroy_function(this->requested, free);
this->requested = linked_list_create(); this->requested = linked_list_create();
this->public.task.build = _build_i;
} }
METHOD(task_t, destroy, void, METHOD(task_t, destroy, void,