diff options
| author | Tobias Brunner <tobias@strongswan.org> | 2011-12-13 17:12:23 +0100 |
|---|---|---|
| committer | Tobias Brunner <tobias@strongswan.org> | 2012-03-20 17:31:21 +0100 |
| commit | 33493a5253ef541b519cb9391ab9f7493fd9b262 (patch) | |
| tree | 80bc13313995cce4a229144b1e76081a563c11ed /src/libcharon/encoding | |
| parent | 0b0191e143b1c3b6ecef62c702aed16ebdd7c5d3 (diff) | |
| download | strongswan-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-x | src/libcharon/encoding/payloads/id_payload.c | 10 | ||||
| -rw-r--r-- | src/libcharon/encoding/payloads/id_payload.h | 7 |
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); |
