Accept and process IKEv1 messages in receiver

This commit is contained in:
Martin Willi
2012-03-20 17:30:39 +01:00
parent 526b5afb45
commit 867701bc6d
+18 -7
View File
@@ -162,6 +162,7 @@ static void send_notify(message_t *request, notify_type_t type, chunk_t data)
response->destroy(response); 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 */ /* 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, " case IKEV2_MAJOR_VERSION:
"sending INVALID_MAJOR_VERSION", message->get_major_version(message), break;
message->get_minor_version(message), packet->get_source(packet)); #ifdef USE_IKEV1
send_notify(message, INVALID_MAJOR_VERSION, chunk_empty); case IKEV1_MAJOR_VERSION:
message->destroy(message); break;
return JOB_REQUEUE_DIRECT; #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) && if (message->get_request(message) &&
message->get_exchange_type(message) == IKE_SA_INIT) message->get_exchange_type(message) == IKE_SA_INIT)
{ {