aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2011-11-15 14:03:24 +0100
committerMartin Willi <martin@revosec.ch>2012-03-20 17:30:39 +0100
commit867701bc6ddce3a5c4024a22b4715936bfcbb13e (patch)
treef6c47467d5e8bd2388e42a4866513c913ce88cd5
parent526b5afb4510163372f7981e57d69fad3ea53906 (diff)
downloadstrongswan-867701bc6ddce3a5c4024a22b4715936bfcbb13e.tar.bz2
strongswan-867701bc6ddce3a5c4024a22b4715936bfcbb13e.tar.xz
Accept and process IKEv1 messages in receiver
-rw-r--r--src/libcharon/network/receiver.c25
1 files changed, 18 insertions, 7 deletions
diff --git a/src/libcharon/network/receiver.c b/src/libcharon/network/receiver.c
index ec30fca61..3e75d9b04 100644
--- a/src/libcharon/network/receiver.c
+++ b/src/libcharon/network/receiver.c
@@ -162,6 +162,7 @@ static void send_notify(message_t *request, notify_type_t type, chunk_t data)
response->destroy(response);
}
}
+ /* TODO-IKEv1: send IKEv1 specific notifies */
}
/**
@@ -371,16 +372,26 @@ static job_requeue_t receive_packets(private_receiver_t *this)
}
/* check IKE major version */
- if (message->get_major_version(message) != IKEV2_MAJOR_VERSION)
+ switch (message->get_major_version(message))
{
- DBG1(DBG_NET, "received unsupported IKE version %d.%d from %H, "
- "sending INVALID_MAJOR_VERSION", message->get_major_version(message),
- message->get_minor_version(message), packet->get_source(packet));
- send_notify(message, INVALID_MAJOR_VERSION, chunk_empty);
- message->destroy(message);
- return JOB_REQUEUE_DIRECT;
+ case IKEV2_MAJOR_VERSION:
+ break;
+#ifdef USE_IKEV1
+ case IKEV1_MAJOR_VERSION:
+ break;
+#endif /* USE_IKEV1 */
+ default:
+ DBG1(DBG_NET, "received unsupported IKE version %d.%d from %H, "
+ "sending INVALID_MAJOR_VERSION",
+ message->get_major_version(message),
+ message->get_minor_version(message),
+ packet->get_source(packet));
+ send_notify(message, INVALID_MAJOR_VERSION, chunk_empty);
+ message->destroy(message);
+ return JOB_REQUEUE_DIRECT;
}
+ /* TODO-IKEv1: drop too agressive mainmodes */
if (message->get_request(message) &&
message->get_exchange_type(message) == IKE_SA_INIT)
{