aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2012-03-20 18:06:29 +0100
committerMartin Willi <martin@revosec.ch>2012-03-20 18:06:29 +0100
commit4f3cf61dfd02d90f04940885f12ca3a1bb845698 (patch)
treea5a90eea5da3c30e64f9e6f11cbc205ea85d2622 /src
parentb1f2f05c926f3e36755bb3b2711bd1732c062047 (diff)
downloadstrongswan-4f3cf61dfd02d90f04940885f12ca3a1bb845698.tar.bz2
strongswan-4f3cf61dfd02d90f04940885f12ca3a1bb845698.tar.xz
Reply with received configuration payload identifier in Mode Config
Diffstat (limited to 'src')
-rw-r--r--src/libcharon/sa/ikev1/tasks/mode_config.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/libcharon/sa/ikev1/tasks/mode_config.c b/src/libcharon/sa/ikev1/tasks/mode_config.c
index e99d07428..ab3a81386 100644
--- a/src/libcharon/sa/ikev1/tasks/mode_config.c
+++ b/src/libcharon/sa/ikev1/tasks/mode_config.c
@@ -50,6 +50,11 @@ struct private_mode_config_t {
* list of attributes requested and its handler, entry_t
*/
linked_list_t *requested;
+
+ /**
+ * Identifier to include in response
+ */
+ u_int16_t identifier;
};
/**
@@ -203,6 +208,8 @@ static void process_payloads(private_mode_config_t *this, message_t *message)
switch (cp->get_type(cp))
{
case CFG_REQUEST:
+ this->identifier = cp->get_identifier(cp);
+ /* FALL */
case CFG_REPLY:
attributes = cp->create_attribute_enumerator(cp);
while (attributes->enumerate(attributes, &ca))
@@ -339,6 +346,7 @@ METHOD(task_t, build_r, status_t,
if (cp)
{
+ cp->set_identifier(cp, this->identifier);
message->add_payload(message, (payload_t*)cp);
}
DESTROY_IF(vip);