IKEv1 ConfigMode: Added TRANSACTION exchange type. Added attribute_payload (IKEv2 equiv cp_payload) and data_attribute (IKEv2 equiv configuration_attribute) payload types. Did not combine with IKEv2 because it wasn't trivial to do so. This might be a task worth investigating in the future, because there is a decent amount of shared code here.
This commit is contained in:
@@ -20,6 +20,7 @@
|
||||
|
||||
#include <encoding/payloads/ike_header.h>
|
||||
#include <encoding/payloads/sa_payload.h>
|
||||
|
||||
#include <encoding/payloads/nonce_payload.h>
|
||||
#include <encoding/payloads/id_payload.h>
|
||||
#include <encoding/payloads/ke_payload.h>
|
||||
@@ -37,10 +38,12 @@
|
||||
#include <encoding/payloads/hash_payload.h>
|
||||
#include <encoding/payloads/unknown_payload.h>
|
||||
|
||||
#include <encoding/payloads/attribute_payload_v1.h>
|
||||
#include <encoding/payloads/data_attribute_v1.h>
|
||||
|
||||
ENUM_BEGIN(payload_type_names, NO_PAYLOAD, NO_PAYLOAD,
|
||||
"NO_PAYLOAD");
|
||||
ENUM_NEXT(payload_type_names, SECURITY_ASSOCIATION_V1, VENDOR_ID_V1, NO_PAYLOAD,
|
||||
ENUM_NEXT(payload_type_names, SECURITY_ASSOCIATION_V1, ATTRIBUTE_V1, NO_PAYLOAD,
|
||||
"SECURITY_ASSOCIATION_V1",
|
||||
"PROPOSAL_V1",
|
||||
"TRANSFORM_V1",
|
||||
@@ -53,8 +56,9 @@ ENUM_NEXT(payload_type_names, SECURITY_ASSOCIATION_V1, VENDOR_ID_V1, NO_PAYLOAD,
|
||||
"NONCE_V1",
|
||||
"NOTIFY_V1",
|
||||
"DELETE_V1",
|
||||
"VENDOR_ID_V1");
|
||||
ENUM_NEXT(payload_type_names, SECURITY_ASSOCIATION, EXTENSIBLE_AUTHENTICATION, VENDOR_ID_V1,
|
||||
"VENDOR_ID_V1",
|
||||
"ATTRIBUTE_V1");
|
||||
ENUM_NEXT(payload_type_names, SECURITY_ASSOCIATION, EXTENSIBLE_AUTHENTICATION, ATTRIBUTE_V1,
|
||||
"SECURITY_ASSOCIATION",
|
||||
"KEY_EXCHANGE",
|
||||
"ID_INITIATOR",
|
||||
@@ -74,7 +78,7 @@ ENUM_NEXT(payload_type_names, SECURITY_ASSOCIATION, EXTENSIBLE_AUTHENTICATION, V
|
||||
#ifdef ME
|
||||
ENUM_NEXT(payload_type_names, ID_PEER, ID_PEER, EXTENSIBLE_AUTHENTICATION,
|
||||
"ID_PEER");
|
||||
ENUM_NEXT(payload_type_names, HEADER, ENCRYPTED_V1, ID_PEER,
|
||||
ENUM_NEXT(payload_type_names, HEADER, DATA_ATTRIBUTE_V1, ID_PEER,
|
||||
"HEADER",
|
||||
"PROPOSAL_SUBSTRUCTURE",
|
||||
"PROPOSAL_SUBSTRUCTURE_V1",
|
||||
@@ -84,9 +88,10 @@ ENUM_NEXT(payload_type_names, HEADER, ENCRYPTED_V1, ID_PEER,
|
||||
"TRANSFORM_ATTRIBUTE_V1",
|
||||
"TRAFFIC_SELECTOR_SUBSTRUCTURE",
|
||||
"CONFIGURATION_ATTRIBUTE",
|
||||
"ENCRYPTED_V1");
|
||||
"ENCRYPTED_V1",
|
||||
"DATA_ATTRIBUTE_V1");
|
||||
#else
|
||||
ENUM_NEXT(payload_type_names, HEADER, ENCRYPTED_V1, EXTENSIBLE_AUTHENTICATION,
|
||||
ENUM_NEXT(payload_type_names, HEADER, DATA_ATTRIBUTE_V1, EXTENSIBLE_AUTHENTICATION,
|
||||
"HEADER",
|
||||
"PROPOSAL_SUBSTRUCTURE",
|
||||
"PROPOSAL_SUBSTRUCTURE_V1",
|
||||
@@ -96,9 +101,10 @@ ENUM_NEXT(payload_type_names, HEADER, ENCRYPTED_V1, EXTENSIBLE_AUTHENTICATION,
|
||||
"TRANSFORM_ATTRIBUTE_V1",
|
||||
"TRAFFIC_SELECTOR_SUBSTRUCTURE",
|
||||
"CONFIGURATION_ATTRIBUTE",
|
||||
"ENCRYPTED_V1");
|
||||
"ENCRYPTED_V1",
|
||||
"DATA_ATTRIBUTE_V1");
|
||||
#endif /* ME */
|
||||
ENUM_END(payload_type_names, ENCRYPTED_V1);
|
||||
ENUM_END(payload_type_names, DATA_ATTRIBUTE_V1);
|
||||
|
||||
/* short forms of payload names */
|
||||
ENUM_BEGIN(payload_type_short_names, NO_PAYLOAD, NO_PAYLOAD,
|
||||
@@ -137,7 +143,7 @@ ENUM_NEXT(payload_type_short_names, SECURITY_ASSOCIATION, EXTENSIBLE_AUTHENTICAT
|
||||
#ifdef ME
|
||||
ENUM_NEXT(payload_type_short_names, ID_PEER, ID_PEER, EXTENSIBLE_AUTHENTICATION,
|
||||
"IDp");
|
||||
ENUM_NEXT(payload_type_short_names, HEADER, ENCRYPTED_V1, ID_PEER,
|
||||
ENUM_NEXT(payload_type_short_names, HEADER, DATA_ATTRIBUTE_V1, ID_PEER,
|
||||
"HDR",
|
||||
"PROP",
|
||||
"PROP",
|
||||
@@ -147,9 +153,10 @@ ENUM_NEXT(payload_type_short_names, HEADER, ENCRYPTED_V1, ID_PEER,
|
||||
"TRANSATTR",
|
||||
"TSSUB",
|
||||
"CATTR",
|
||||
"E");
|
||||
"E",
|
||||
"DATAATTR");
|
||||
#else
|
||||
ENUM_NEXT(payload_type_short_names, HEADER, ENCRYPTED_V1, EXTENSIBLE_AUTHENTICATION,
|
||||
ENUM_NEXT(payload_type_short_names, HEADER, DATA_ATTRIBUTE_V1, EXTENSIBLE_AUTHENTICATION,
|
||||
"HDR",
|
||||
"PROP",
|
||||
"PROP",
|
||||
@@ -159,9 +166,10 @@ ENUM_NEXT(payload_type_short_names, HEADER, ENCRYPTED_V1, EXTENSIBLE_AUTHENTICAT
|
||||
"TRANSATTR",
|
||||
"TSSUB",
|
||||
"CATTR",
|
||||
"E");
|
||||
"E",
|
||||
"DATAATTR");
|
||||
#endif /* ME */
|
||||
ENUM_END(payload_type_short_names, ENCRYPTED_V1);
|
||||
ENUM_END(payload_type_short_names, DATA_ATTRIBUTE_V1);
|
||||
|
||||
/*
|
||||
* see header
|
||||
@@ -197,7 +205,8 @@ payload_t *payload_create(payload_type_t type)
|
||||
case AUTHENTICATION:
|
||||
return (payload_t*)auth_payload_create();
|
||||
case CERTIFICATE:
|
||||
return (payload_t*)cert_payload_create();
|
||||
case CERTIFICATE_V1:
|
||||
return (payload_t*)cert_payload_create(type);
|
||||
case CERTIFICATE_REQUEST:
|
||||
return (payload_t*)certreq_payload_create();
|
||||
case TRAFFIC_SELECTOR_SUBSTRUCTURE:
|
||||
@@ -229,6 +238,10 @@ payload_t *payload_create(payload_type_t type)
|
||||
case ENCRYPTED:
|
||||
case ENCRYPTED_V1:
|
||||
return (payload_t*)encryption_payload_create(type);
|
||||
case ATTRIBUTE_V1:
|
||||
return (payload_t*)attribute_payload_v1_create();
|
||||
case DATA_ATTRIBUTE_V1:
|
||||
return (payload_t*)data_attribute_v1_create();
|
||||
default:
|
||||
return (payload_t*)unknown_payload_create(type);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user