aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcharon/encoding
diff options
context:
space:
mode:
Diffstat (limited to 'src/libcharon/encoding')
-rw-r--r--src/libcharon/encoding/payloads/unknown_payload.c16
-rw-r--r--src/libcharon/encoding/payloads/unknown_payload.h15
2 files changed, 29 insertions, 2 deletions
diff --git a/src/libcharon/encoding/payloads/unknown_payload.c b/src/libcharon/encoding/payloads/unknown_payload.c
index defc5d361..7fa381632 100644
--- a/src/libcharon/encoding/payloads/unknown_payload.c
+++ b/src/libcharon/encoding/payloads/unknown_payload.c
@@ -179,3 +179,19 @@ unknown_payload_t *unknown_payload_create(payload_type_t type)
return &this->public;
}
+
+
+/*
+ * Described in header
+ */
+unknown_payload_t *unknown_payload_create_data(payload_type_t type,
+ bool critical, chunk_t data)
+{
+ private_unknown_payload_t *this;
+
+ this = (private_unknown_payload_t*)unknown_payload_create(type);
+ this->data = data;
+ this->critical = critical;
+
+ return &this->public;
+}
diff --git a/src/libcharon/encoding/payloads/unknown_payload.h b/src/libcharon/encoding/payloads/unknown_payload.h
index 1f42fcf09..5ae85331b 100644
--- a/src/libcharon/encoding/payloads/unknown_payload.h
+++ b/src/libcharon/encoding/payloads/unknown_payload.h
@@ -72,9 +72,20 @@ struct unknown_payload_t {
/**
* Creates an empty unknown_payload_t.
*
- * @param type of the payload
- * @return unknown_payload_t object
+ * @param type of the payload
+ * @return unknown_payload_t object
*/
unknown_payload_t *unknown_payload_create(payload_type_t type);
+/**
+ * Create an unknown payload with data.
+ *
+ * @param type type of payload to create
+ * @param critical TRUE to set critical bit
+ * @param data data to set for this payload, gets owned by payload
+ * @return payload object
+ */
+unknown_payload_t *unknown_payload_create_data(payload_type_t type,
+ bool critical, chunk_t data);
+
#endif /** UNKNOWN_PAYLOAD_H_ @}*/