From: Tobias Brunner Date: Tue, 13 Dec 2011 16:12:23 +0000 (+0100) Subject: Added method to get encoded version if ID_V1 payload. X-Git-Tag: 5.0.0~338^2~9^2~222 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=33493a5253ef541b519cb9391ab9f7493fd9b262;p=thirdparty%2Fstrongswan.git Added method to get encoded version if ID_V1 payload. --- diff --git a/src/libcharon/encoding/payloads/id_payload.c b/src/libcharon/encoding/payloads/id_payload.c index 4d5cd05fe4..02b07d6911 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 22016bc199..94ed1cb38e 100644 --- a/src/libcharon/encoding/payloads/id_payload.h +++ b/src/libcharon/encoding/payloads/id_payload.h @@ -54,6 +54,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. */