aboutsummaryrefslogtreecommitdiffstats
path: root/Source/charon/encoding/payloads/id_payload.c
diff options
context:
space:
mode:
Diffstat (limited to 'Source/charon/encoding/payloads/id_payload.c')
-rw-r--r--Source/charon/encoding/payloads/id_payload.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/Source/charon/encoding/payloads/id_payload.c b/Source/charon/encoding/payloads/id_payload.c
index 285791279..9560d4f87 100644
--- a/Source/charon/encoding/payloads/id_payload.c
+++ b/Source/charon/encoding/payloads/id_payload.c
@@ -214,11 +214,20 @@ static void set_data (private_id_payload_t *this, chunk_t data)
this->payload_length = ID_PAYLOAD_HEADER_LENGTH + this->id_data.len;
}
+
/**
- * Implementation of id_payload_t.get_data.
+ * Implementation of id_payload_t.get_data_clone.
*/
static chunk_t get_data (private_id_payload_t *this)
{
+ return (this->id_data);
+}
+
+/**
+ * Implementation of id_payload_t.get_data_clone.
+ */
+static chunk_t get_data_clone (private_id_payload_t *this)
+{
chunk_t cloned_data;
if (this->id_data.ptr == NULL)
{
@@ -288,6 +297,8 @@ id_payload_t *id_payload_create(bool is_initiator)
this->public.get_id_type = (id_type_t (*) (id_payload_t *)) get_id_type;
this->public.set_data = (void (*) (id_payload_t *,chunk_t)) set_data;
this->public.get_data = (chunk_t (*) (id_payload_t *)) get_data;
+ this->public.get_data_clone = (chunk_t (*) (id_payload_t *)) get_data_clone;
+
this->public.get_initiator = (bool (*) (id_payload_t *)) get_initiator;
this->public.set_initiator = (void (*) (id_payload_t *,bool)) set_initiator;
this->public.get_identification = (identification_t * (*) (id_payload_t *this)) get_identification;