diff options
Diffstat (limited to 'Source/charon/encoding')
-rw-r--r-- | Source/charon/encoding/message.c | 9 | ||||
-rw-r--r-- | Source/charon/encoding/message.h | 8 |
2 files changed, 17 insertions, 0 deletions
diff --git a/Source/charon/encoding/message.c b/Source/charon/encoding/message.c index bcc34ca96..84f174365 100644 --- a/Source/charon/encoding/message.c +++ b/Source/charon/encoding/message.c @@ -631,6 +631,14 @@ static status_t generate(private_message_t *this, crypter_t *crypter, signer_t* } /** + * Implementation of message_t.get_packet. + */ +static packet_t *get_packet (private_message_t *this) +{ + return this->packet->clone(this->packet); +} + +/** * Implementation of message_t.parse_header. */ static status_t parse_header(private_message_t *this) @@ -1154,6 +1162,7 @@ message_t *message_create_from_packet(packet_t *packet) this->public.parse_header = (status_t (*) (message_t *)) parse_header; this->public.parse_body = (status_t (*) (message_t *,crypter_t*,signer_t*)) parse_body; this->public.verify = (status_t (*) (message_t*)) verify; + this->public.get_packet = (packet_t * (*) (message_t*)) get_packet; this->public.destroy = (void(*)(message_t*))destroy; /* private values */ diff --git a/Source/charon/encoding/message.h b/Source/charon/encoding/message.h index 8d420fbe2..dfbb10da9 100644 --- a/Source/charon/encoding/message.h +++ b/Source/charon/encoding/message.h @@ -282,6 +282,14 @@ struct message_t { iterator_t * (*get_payload_iterator) (message_t *this); /** + * Returns a clone of the internal stored packet_t object. + * + * @param this message_t object + * @return packet_t object as clone of internal one + */ + packet_t * (*get_packet) (message_t *this); + + /** * @brief Destroys a message and all including objects. * * @param this message_t object |