aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcharon/encoding
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2011-12-13 17:12:23 +0100
committerTobias Brunner <tobias@strongswan.org>2012-03-20 17:31:21 +0100
commit33493a5253ef541b519cb9391ab9f7493fd9b262 (patch)
tree80bc13313995cce4a229144b1e76081a563c11ed /src/libcharon/encoding
parent0b0191e143b1c3b6ecef62c702aed16ebdd7c5d3 (diff)
downloadstrongswan-33493a5253ef541b519cb9391ab9f7493fd9b262.tar.bz2
strongswan-33493a5253ef541b519cb9391ab9f7493fd9b262.tar.xz
Added method to get encoded version if ID_V1 payload.
Diffstat (limited to 'src/libcharon/encoding')
-rwxr-xr-xsrc/libcharon/encoding/payloads/id_payload.c10
-rw-r--r--src/libcharon/encoding/payloads/id_payload.h7
2 files changed, 17 insertions, 0 deletions
diff --git a/src/libcharon/encoding/payloads/id_payload.c b/src/libcharon/encoding/payloads/id_payload.c
index 4d5cd05fe..02b07d691 100755
--- a/src/libcharon/encoding/payloads/id_payload.c
+++ b/src/libcharon/encoding/payloads/id_payload.c
@@ -327,6 +327,15 @@ METHOD(id_payload_t, get_ts, traffic_selector_t*,
return NULL;
}
+METHOD(id_payload_t, get_encoded, chunk_t,
+ private_id_payload_t *this)
+{
+ u_int16_t port = htons(this->port);
+ return chunk_cat("cccc", chunk_from_thing(this->id_type),
+ chunk_from_thing(this->protocol_id),
+ chunk_from_thing(port), this->id_data);
+}
+
METHOD2(payload_t, id_payload_t, destroy, void,
private_id_payload_t *this)
{
@@ -354,6 +363,7 @@ id_payload_t *id_payload_create(payload_type_t type)
.destroy = _destroy,
},
.get_identification = _get_identification,
+ .get_encoded = _get_encoded,
.get_ts = _get_ts,
.destroy = _destroy,
},
diff --git a/src/libcharon/encoding/payloads/id_payload.h b/src/libcharon/encoding/payloads/id_payload.h
index 22016bc19..94ed1cb38 100644
--- a/src/libcharon/encoding/payloads/id_payload.h
+++ b/src/libcharon/encoding/payloads/id_payload.h
@@ -55,6 +55,13 @@ struct id_payload_t {
traffic_selector_t* (*get_ts)(id_payload_t *this);
/**
+ * Get encoded payload without fixed payload header (used for IKEv1).
+ *
+ * @return encoded payload (gets allocated)
+ */
+ chunk_t (*get_encoded)(id_payload_t *this);
+
+ /**
* Destroys an id_payload_t object.
*/
void (*destroy) (id_payload_t *this);