Added additional IKEv1 payload and encoding identifiers
This commit is contained in:
@@ -521,6 +521,19 @@ METHOD(parser_t, parse_payload, status_t,
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case TRANSFORMS_V1:
|
||||||
|
{
|
||||||
|
if (payload_length <
|
||||||
|
spi_size + PROPOSAL_SUBSTRUCTURE_HEADER_LENGTH ||
|
||||||
|
!parse_list(this, rule_number, output + rule->offset,
|
||||||
|
TRANSFORM_SUBSTRUCTURE_V1, payload_length - spi_size -
|
||||||
|
PROPOSAL_SUBSTRUCTURE_HEADER_LENGTH))
|
||||||
|
{
|
||||||
|
pld->destroy(pld);
|
||||||
|
return PARSE_ERROR;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
case TRANSFORM_ATTRIBUTES:
|
case TRANSFORM_ATTRIBUTES:
|
||||||
{
|
{
|
||||||
if (payload_length < TRANSFORM_SUBSTRUCTURE_HEADER_LENGTH ||
|
if (payload_length < TRANSFORM_SUBSTRUCTURE_HEADER_LENGTH ||
|
||||||
@@ -533,6 +546,18 @@ METHOD(parser_t, parse_payload, status_t,
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case TRANSFORM_ATTRIBUTES_V1:
|
||||||
|
{
|
||||||
|
if (payload_length < TRANSFORM_SUBSTRUCTURE_HEADER_LENGTH ||
|
||||||
|
!parse_list(this, rule_number, output + rule->offset,
|
||||||
|
TRANSFORM_ATTRIBUTE_V1,
|
||||||
|
payload_length - TRANSFORM_SUBSTRUCTURE_HEADER_LENGTH))
|
||||||
|
{
|
||||||
|
pld->destroy(pld);
|
||||||
|
return PARSE_ERROR;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
case CONFIGURATION_ATTRIBUTES:
|
case CONFIGURATION_ATTRIBUTES:
|
||||||
{
|
{
|
||||||
if (payload_length < CP_PAYLOAD_HEADER_LENGTH ||
|
if (payload_length < CP_PAYLOAD_HEADER_LENGTH ||
|
||||||
|
|||||||
@@ -32,8 +32,11 @@ ENUM(encoding_type_names, U_INT_4, ENCRYPTED_DATA,
|
|||||||
"KEY_EXCHANGE_DATA",
|
"KEY_EXCHANGE_DATA",
|
||||||
"NOTIFICATION_DATA",
|
"NOTIFICATION_DATA",
|
||||||
"PROPOSALS",
|
"PROPOSALS",
|
||||||
|
"PROPOSALS_V1",
|
||||||
"TRANSFORMS",
|
"TRANSFORMS",
|
||||||
|
"TRANSFORMS_V1",
|
||||||
"TRANSFORM_ATTRIBUTES",
|
"TRANSFORM_ATTRIBUTES",
|
||||||
|
"TRANSFORM_ATTRIBUTES_V1",
|
||||||
"CONFIGURATION_ATTRIBUTES",
|
"CONFIGURATION_ATTRIBUTES",
|
||||||
"CONFIGURATION_ATTRIBUTE_VALUE",
|
"CONFIGURATION_ATTRIBUTE_VALUE",
|
||||||
"ATTRIBUTE_FORMAT",
|
"ATTRIBUTE_FORMAT",
|
||||||
|
|||||||
@@ -237,6 +237,11 @@ enum encoding_type_t {
|
|||||||
*/
|
*/
|
||||||
TRANSFORMS,
|
TRANSFORMS,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Same as TRANSFORMS, but for IKEv1 in a PROPOSAL_SUBSTRUCTURE_V1.
|
||||||
|
*/
|
||||||
|
TRANSFORMS_V1,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Representating one or more Attributes of a transform substructure.
|
* Representating one or more Attributes of a transform substructure.
|
||||||
*
|
*
|
||||||
@@ -250,6 +255,11 @@ enum encoding_type_t {
|
|||||||
*/
|
*/
|
||||||
TRANSFORM_ATTRIBUTES,
|
TRANSFORM_ATTRIBUTES,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Same as TRANSFORM_ATTRIBUTES, but for IKEv1 in TRANSFORMS_V1.
|
||||||
|
*/
|
||||||
|
TRANSFORM_ATTRIBUTES_V1,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Representating one or more Attributes of a configuration payload.
|
* Representating one or more Attributes of a configuration payload.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -76,16 +76,22 @@ ENUM_NEXT(payload_type_names, ID_PEER, ID_PEER, EXTENSIBLE_AUTHENTICATION,
|
|||||||
ENUM_NEXT(payload_type_names, HEADER, CONFIGURATION_ATTRIBUTE, ID_PEER,
|
ENUM_NEXT(payload_type_names, HEADER, CONFIGURATION_ATTRIBUTE, ID_PEER,
|
||||||
"HEADER",
|
"HEADER",
|
||||||
"PROPOSAL_SUBSTRUCTURE",
|
"PROPOSAL_SUBSTRUCTURE",
|
||||||
|
"PROPOSAL_SUBSTRUCTURE_V1",
|
||||||
"TRANSFORM_SUBSTRUCTURE",
|
"TRANSFORM_SUBSTRUCTURE",
|
||||||
|
"TRANSFORM_SUBSTRUCTURE_V1",
|
||||||
"TRANSFORM_ATTRIBUTE",
|
"TRANSFORM_ATTRIBUTE",
|
||||||
|
"TRANSFORM_ATTRIBUTE_V1",
|
||||||
"TRAFFIC_SELECTOR_SUBSTRUCTURE",
|
"TRAFFIC_SELECTOR_SUBSTRUCTURE",
|
||||||
"CONFIGURATION_ATTRIBUTE");
|
"CONFIGURATION_ATTRIBUTE");
|
||||||
#else
|
#else
|
||||||
ENUM_NEXT(payload_type_names, HEADER, CONFIGURATION_ATTRIBUTE, EXTENSIBLE_AUTHENTICATION,
|
ENUM_NEXT(payload_type_names, HEADER, CONFIGURATION_ATTRIBUTE, EXTENSIBLE_AUTHENTICATION,
|
||||||
"HEADER",
|
"HEADER",
|
||||||
"PROPOSAL_SUBSTRUCTURE",
|
"PROPOSAL_SUBSTRUCTURE",
|
||||||
|
"PROPOSAL_SUBSTRUCTURE_V1",
|
||||||
"TRANSFORM_SUBSTRUCTURE",
|
"TRANSFORM_SUBSTRUCTURE",
|
||||||
|
"TRANSFORM_SUBSTRUCTURE_V1",
|
||||||
"TRANSFORM_ATTRIBUTE",
|
"TRANSFORM_ATTRIBUTE",
|
||||||
|
"TRANSFORM_ATTRIBUTE_V1",
|
||||||
"TRAFFIC_SELECTOR_SUBSTRUCTURE",
|
"TRAFFIC_SELECTOR_SUBSTRUCTURE",
|
||||||
"CONFIGURATION_ATTRIBUTE");
|
"CONFIGURATION_ATTRIBUTE");
|
||||||
#endif /* ME */
|
#endif /* ME */
|
||||||
@@ -131,18 +137,24 @@ ENUM_NEXT(payload_type_short_names, ID_PEER, ID_PEER, EXTENSIBLE_AUTHENTICATION,
|
|||||||
ENUM_NEXT(payload_type_short_names, HEADER, CONFIGURATION_ATTRIBUTE, ID_PEER,
|
ENUM_NEXT(payload_type_short_names, HEADER, CONFIGURATION_ATTRIBUTE, ID_PEER,
|
||||||
"HDR",
|
"HDR",
|
||||||
"PROP",
|
"PROP",
|
||||||
|
"PROP",
|
||||||
|
"TRANS",
|
||||||
"TRANS",
|
"TRANS",
|
||||||
"TRANSATTR",
|
"TRANSATTR",
|
||||||
|
"TRANSATTR",
|
||||||
"TSSUB",
|
"TSSUB",
|
||||||
"CPATTR");
|
"CATTR");
|
||||||
#else
|
#else
|
||||||
ENUM_NEXT(payload_type_short_names, HEADER, CONFIGURATION_ATTRIBUTE, EXTENSIBLE_AUTHENTICATION,
|
ENUM_NEXT(payload_type_short_names, HEADER, CONFIGURATION_ATTRIBUTE, EXTENSIBLE_AUTHENTICATION,
|
||||||
"HDR",
|
"HDR",
|
||||||
"PROP",
|
"PROP",
|
||||||
|
"PROP",
|
||||||
|
"TRANS",
|
||||||
"TRANS",
|
"TRANS",
|
||||||
"TRANSATTR",
|
"TRANSATTR",
|
||||||
|
"TRANSATTR",
|
||||||
"TSSUB",
|
"TSSUB",
|
||||||
"CPATTR");
|
"CATTR");
|
||||||
#endif /* ME */
|
#endif /* ME */
|
||||||
ENUM_END(payload_type_short_names, CONFIGURATION_ATTRIBUTE);
|
ENUM_END(payload_type_short_names, CONFIGURATION_ATTRIBUTE);
|
||||||
|
|
||||||
@@ -159,21 +171,22 @@ payload_t *payload_create(payload_type_t type)
|
|||||||
case SECURITY_ASSOCIATION_V1:
|
case SECURITY_ASSOCIATION_V1:
|
||||||
return (payload_t*)sa_payload_create(type);
|
return (payload_t*)sa_payload_create(type);
|
||||||
case PROPOSAL_SUBSTRUCTURE:
|
case PROPOSAL_SUBSTRUCTURE:
|
||||||
return (payload_t*)proposal_substructure_create();
|
case PROPOSAL_SUBSTRUCTURE_V1:
|
||||||
|
return (payload_t*)proposal_substructure_create(type);
|
||||||
case TRANSFORM_SUBSTRUCTURE:
|
case TRANSFORM_SUBSTRUCTURE:
|
||||||
return (payload_t*)transform_substructure_create();
|
case TRANSFORM_SUBSTRUCTURE_V1:
|
||||||
|
return (payload_t*)transform_substructure_create(type);
|
||||||
case TRANSFORM_ATTRIBUTE:
|
case TRANSFORM_ATTRIBUTE:
|
||||||
return (payload_t*)transform_attribute_create();
|
case TRANSFORM_ATTRIBUTE_V1:
|
||||||
|
return (payload_t*)transform_attribute_create(type);
|
||||||
case NONCE:
|
case NONCE:
|
||||||
return (payload_t*)nonce_payload_create();
|
return (payload_t*)nonce_payload_create();
|
||||||
case ID_INITIATOR:
|
case ID_INITIATOR:
|
||||||
return (payload_t*)id_payload_create(ID_INITIATOR);
|
|
||||||
case ID_RESPONDER:
|
case ID_RESPONDER:
|
||||||
return (payload_t*)id_payload_create(ID_RESPONDER);
|
|
||||||
#ifdef ME
|
#ifdef ME
|
||||||
case ID_PEER:
|
case ID_PEER:
|
||||||
return (payload_t*)id_payload_create(ID_PEER);
|
|
||||||
#endif /* ME */
|
#endif /* ME */
|
||||||
|
return (payload_t*)id_payload_create(type);
|
||||||
case AUTHENTICATION:
|
case AUTHENTICATION:
|
||||||
return (payload_t*)auth_payload_create();
|
return (payload_t*)auth_payload_create();
|
||||||
case CERTIFICATE:
|
case CERTIFICATE:
|
||||||
|
|||||||
@@ -203,58 +203,50 @@ enum payload_type_t {
|
|||||||
/**
|
/**
|
||||||
* Header has a value of PRIVATE USE space.
|
* Header has a value of PRIVATE USE space.
|
||||||
*
|
*
|
||||||
* This payload type is not sent over wire and just
|
* This type and all the following are never sent over wire and are
|
||||||
* used internally to handle IKEv2-Header like a payload.
|
* used internally only.
|
||||||
*/
|
*/
|
||||||
HEADER = 256,
|
HEADER = 256,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PROPOSAL_SUBSTRUCTURE has a value of PRIVATE USE space.
|
* PROPOSAL_SUBSTRUCTURE, IKEv2 proposals in a SA payload.
|
||||||
*
|
|
||||||
* This payload type is not sent over wire and just
|
|
||||||
* used internally to handle a proposal substructure like a payload.
|
|
||||||
*/
|
*/
|
||||||
PROPOSAL_SUBSTRUCTURE = 257,
|
PROPOSAL_SUBSTRUCTURE,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TRANSFORM_SUBSTRUCTURE has a value of PRIVATE USE space.
|
* PROPOSAL_SUBSTRUCTURE_V1, IKEv1 proposals in a SA payload.
|
||||||
*
|
|
||||||
* This payload type is not sent over wire and just
|
|
||||||
* used internally to handle a transform substructure like a payload.
|
|
||||||
*/
|
*/
|
||||||
TRANSFORM_SUBSTRUCTURE = 258,
|
PROPOSAL_SUBSTRUCTURE_V1,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TRANSFORM_ATTRIBUTE has a value of PRIVATE USE space.
|
* TRANSFORM_SUBSTRUCTURE, IKEv2 transforms in a proposal substructure.
|
||||||
*
|
|
||||||
* This payload type is not sent over wire and just
|
|
||||||
* used internally to handle a transform attribute like a payload.
|
|
||||||
*/
|
*/
|
||||||
TRANSFORM_ATTRIBUTE = 259,
|
TRANSFORM_SUBSTRUCTURE,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TRAFFIC_SELECTOR_SUBSTRUCTURE has a value of PRIVATE USE space.
|
* TRANSFORM_SUBSTRUCTURE_V1, IKEv1 transforms in a proposal substructure.
|
||||||
*
|
|
||||||
* This payload type is not sent over wire and just
|
|
||||||
* used internally to handle a transform selector like a payload.
|
|
||||||
*/
|
*/
|
||||||
TRAFFIC_SELECTOR_SUBSTRUCTURE = 260,
|
TRANSFORM_SUBSTRUCTURE_V1,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CONFIGURATION_ATTRIBUTE has a value of PRIVATE USE space.
|
* TRANSFORM_ATTRIBUTE, IKEv2 attribute in a transform.
|
||||||
*
|
|
||||||
* This payload type is not sent over wire and just
|
|
||||||
* used internally to handle a transform attribute like a payload.
|
|
||||||
*/
|
*/
|
||||||
CONFIGURATION_ATTRIBUTE = 261,
|
TRANSFORM_ATTRIBUTE,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PROPOSAL_SUBSTRUCTURE has a value of PRIVATE USE space.
|
* TRANSFORM_ATTRIBUTE_V1, IKEv1 attribute in a transform.
|
||||||
*
|
|
||||||
* This payload type is not sent over wire and just
|
|
||||||
* used internally to handle a proposal substructure like a payload.
|
|
||||||
*/
|
*/
|
||||||
PROPOSAL_SUBSTRUCTURE_V1 = 262,
|
TRANSFORM_ATTRIBUTE_V1,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TRAFFIC_SELECTOR_SUBSTRUCTURE, traffic selector in a TS payload.
|
||||||
|
*/
|
||||||
|
TRAFFIC_SELECTOR_SUBSTRUCTURE,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CONFIGURATION_ATTRIBUTE, attribute in a configuration payload.
|
||||||
|
*/
|
||||||
|
CONFIGURATION_ATTRIBUTE,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user