aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/libcharon/encoding/payloads/eap_payload.c12
-rw-r--r--src/libcharon/encoding/payloads/eap_payload.h13
2 files changed, 23 insertions, 2 deletions
diff --git a/src/libcharon/encoding/payloads/eap_payload.c b/src/libcharon/encoding/payloads/eap_payload.c
index eafb668b6..cacaef222 100644
--- a/src/libcharon/encoding/payloads/eap_payload.c
+++ b/src/libcharon/encoding/payloads/eap_payload.c
@@ -284,6 +284,18 @@ eap_payload_t *eap_payload_create_data(chunk_t data)
/*
* Described in header
*/
+eap_payload_t *eap_payload_create_data_own(chunk_t data)
+{
+ eap_payload_t *this = eap_payload_create();
+
+ this->set_data(this, data);
+ free(data.ptr);
+ return this;
+}
+
+/*
+ * Described in header
+ */
eap_payload_t *eap_payload_create_code(eap_code_t code, u_int8_t identifier)
{
chunk_t data;
diff --git a/src/libcharon/encoding/payloads/eap_payload.h b/src/libcharon/encoding/payloads/eap_payload.h
index 0bde4b15e..60d9c99d2 100644
--- a/src/libcharon/encoding/payloads/eap_payload.h
+++ b/src/libcharon/encoding/payloads/eap_payload.h
@@ -95,18 +95,27 @@ struct eap_payload_t {
/**
* Creates an empty eap_payload_t object.
*
- * @return eap_payload_t object
+ * @return eap_payload_t object
*/
eap_payload_t *eap_payload_create(void);
/**
* Creates an eap_payload_t object with data.
*
- * @return eap_payload_t object
+ * @param data data, gets cloned
+ * @return eap_payload_t object
*/
eap_payload_t *eap_payload_create_data(chunk_t data);
/**
+ * Creates an eap_payload_t object with data, owning the data.
+ *
+ * @param data data on heap, gets owned and freed
+ * @return eap_payload_t object
+ */
+eap_payload_t *eap_payload_create_data_own(chunk_t data);
+
+/**
* Creates an eap_payload_t object with a code.
*
* Could should be either EAP_SUCCESS/EAP_FAILURE, use