4 * @brief Generic constructor to the payload_t interface.
10 * Copyright (C) 2005 Jan Hutter, Martin Willi
11 * Hochschule fuer Technik Rapperswil
13 * This program is free software; you can redistribute it and/or modify it
14 * under the terms of the GNU General Public License as published by the
15 * Free Software Foundation; either version 2 of the License, or (at your
16 * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
18 * This program is distributed in the hope that it will be useful, but
19 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
20 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
27 #include <encoding/payloads/ike_header.h>
28 #include <encoding/payloads/sa_payload.h>
29 #include <encoding/payloads/nonce_payload.h>
30 #include <encoding/payloads/id_payload.h>
31 #include <encoding/payloads/ke_payload.h>
32 #include <encoding/payloads/notify_payload.h>
33 #include <encoding/payloads/auth_payload.h>
34 #include <encoding/payloads/cert_payload.h>
35 #include <encoding/payloads/certreq_payload.h>
36 #include <encoding/payloads/encryption_payload.h>
37 #include <encoding/payloads/ts_payload.h>
38 #include <encoding/payloads/delete_payload.h>
39 #include <encoding/payloads/vendor_id_payload.h>
40 #include <encoding/payloads/cp_payload.h>
41 #include <encoding/payloads/configuration_attribute.h>
42 #include <encoding/payloads/eap_payload.h>
43 #include <encoding/payloads/unknown_payload.h>
46 * build the mappings for payload_type_t
48 mapping_t payload_type_m
[] = {
49 {NO_PAYLOAD
, "NO_PAYLOAD"},
50 {SECURITY_ASSOCIATION
, "SECURITY_ASSOCIATION"},
51 {KEY_EXCHANGE
, "KEY_EXCHANGE"},
52 {ID_INITIATOR
, "ID_INITIATOR"},
53 {ID_RESPONDER
, "ID_RESPONDER"},
54 {CERTIFICATE
, "CERTIFICATE"},
55 {CERTIFICATE_REQUEST
, "CERTIFICATE_REQUEST"},
56 {AUTHENTICATION
, "AUTHENTICATION"},
60 {VENDOR_ID
, "VENDOR_ID"},
61 {TRAFFIC_SELECTOR_INITIATOR
, "TRAFFIC_SELECTOR_INITIATOR"},
62 {TRAFFIC_SELECTOR_RESPONDER
, "TRAFFIC_SELECTOR_RESPONDER"},
63 {ENCRYPTED
, "ENCRYPTED"},
64 {CONFIGURATION
, "CONFIGURATION"},
65 {EXTENSIBLE_AUTHENTICATION
, "EXTENSIBLE_AUTHENTICATION"},
67 {PROPOSAL_SUBSTRUCTURE
, "PROPOSAL_SUBSTRUCTURE"},
68 {TRANSFORM_SUBSTRUCTURE
, "TRANSFORM_SUBSTRUCTURE"},
69 {TRANSFORM_ATTRIBUTE
, "TRANSFORM_ATTRIBUTE"},
70 {TRAFFIC_SELECTOR_SUBSTRUCTURE
, "TRAFFIC_SELECTOR_SUBSTRUCTURE"},
71 {CONFIGURATION_ATTRIBUTE
,"CONFIGURATION_ATTRIBUTE"},
72 {UNKNOWN_PAYLOAD
,"UNKNOWN_PAYLOAD"},
79 payload_t
*payload_create(payload_type_t type
)
84 return (payload_t
*)ike_header_create();
85 case SECURITY_ASSOCIATION
:
86 return (payload_t
*)sa_payload_create();
87 case PROPOSAL_SUBSTRUCTURE
:
88 return (payload_t
*)proposal_substructure_create();
89 case TRANSFORM_SUBSTRUCTURE
:
90 return (payload_t
*)transform_substructure_create();
91 case TRANSFORM_ATTRIBUTE
:
92 return (payload_t
*)transform_attribute_create();
94 return (payload_t
*)nonce_payload_create();
96 return (payload_t
*)id_payload_create(TRUE
);
98 return (payload_t
*)id_payload_create(FALSE
);
100 return (payload_t
*)auth_payload_create();
102 return (payload_t
*)cert_payload_create();
103 case CERTIFICATE_REQUEST
:
104 return (payload_t
*)certreq_payload_create();
105 case TRAFFIC_SELECTOR_SUBSTRUCTURE
:
106 return (payload_t
*)traffic_selector_substructure_create();
107 case TRAFFIC_SELECTOR_INITIATOR
:
108 return (payload_t
*)ts_payload_create(TRUE
);
109 case TRAFFIC_SELECTOR_RESPONDER
:
110 return (payload_t
*)ts_payload_create(FALSE
);
112 return (payload_t
*)ke_payload_create();
114 return (payload_t
*)notify_payload_create();
116 return (payload_t
*)delete_payload_create();
118 return (payload_t
*)vendor_id_payload_create();
120 return (payload_t
*)cp_payload_create();
121 case CONFIGURATION_ATTRIBUTE
:
122 return (payload_t
*)configuration_attribute_create();
123 case EXTENSIBLE_AUTHENTICATION
:
124 return (payload_t
*)eap_payload_create();
126 return (payload_t
*)encryption_payload_create();
128 return (payload_t
*)unknown_payload_create();