diff options
Diffstat (limited to 'src/charon/encoding')
-rw-r--r-- | src/charon/encoding/message.c | 22 | ||||
-rw-r--r-- | src/charon/encoding/message.h | 9 | ||||
-rw-r--r-- | src/charon/encoding/payloads/notify_payload.c | 3 | ||||
-rw-r--r-- | src/charon/encoding/payloads/notify_payload.h | 3 |
4 files changed, 32 insertions, 5 deletions
diff --git a/src/charon/encoding/message.c b/src/charon/encoding/message.c index ece29094f..031382cee 100644 --- a/src/charon/encoding/message.c +++ b/src/charon/encoding/message.c @@ -6,6 +6,7 @@ */ /* + * Copyright (C) 2006 Tobias Brunner, Daniel Roethlisberger * Copyright (C) 2005 Jan Hutter, Martin Willi * Hochschule fuer Technik Rapperswil * @@ -439,6 +440,14 @@ static u_int32_t get_message_id (private_message_t *this) } /** + * Implementation of message_t.get_initiator_spi. + */ +static u_int64_t get_initiator_spi (private_message_t *this) +{ + return (this->ike_sa_id->get_initiator_spi(this->ike_sa_id)); +} + +/** * Implementation of message_t.get_responder_spi. */ static u_int64_t get_responder_spi (private_message_t *this) @@ -826,11 +835,13 @@ static status_t parse_body(private_message_t *this, crypter_t *crypter, signer_t } if (current_payload_type == ENCRYPTED) - status = this->decrypt_payloads(this,crypter,signer); - if (status != SUCCESS) { - this->logger->log(this->logger, ERROR, "could not decrypt payloads"); - return status; + status = this->decrypt_payloads(this,crypter,signer); + if (status != SUCCESS) + { + this->logger->log(this->logger, ERROR, "Could not decrypt payloads"); + return status; + } } status = this->verify(this); @@ -1202,7 +1213,8 @@ message_t *message_create_from_packet(packet_t *packet) this->public.get_minor_version = (u_int8_t(*)(message_t*))get_minor_version; this->public.set_message_id = (void(*)(message_t*, u_int32_t))set_message_id; this->public.get_message_id = (u_int32_t(*)(message_t*))get_message_id; - this->public.get_responder_spi = (u_int64_t(*)(message_t*))get_responder_spi; + this->public.get_initiator_spi = (u_int64_t(*)(message_t*))get_initiator_spi; + this->public.get_responder_spi = (u_int64_t(*)(message_t*))get_responder_spi; this->public.set_ike_sa_id = (void(*)(message_t*, ike_sa_id_t *))set_ike_sa_id; this->public.get_ike_sa_id = (status_t(*)(message_t*, ike_sa_id_t **))get_ike_sa_id; this->public.set_exchange_type = (void(*)(message_t*, exchange_type_t))set_exchange_type; diff --git a/src/charon/encoding/message.h b/src/charon/encoding/message.h index 4b3f8e997..e32cf68d4 100644 --- a/src/charon/encoding/message.h +++ b/src/charon/encoding/message.h @@ -6,6 +6,7 @@ */ /* + * Copyright (C) 2006 Tobias Brunner, Daniel Roethlisberger * Copyright (C) 2005 Jan Hutter, Martin Willi * Hochschule fuer Technik Rapperswil * @@ -101,6 +102,14 @@ struct message_t { u_int32_t (*get_message_id) (message_t *this); /** + * @brief Gets the initiator SPI of the message. + * + * @param this message_t object + * @return initiator spi of the message + */ + u_int64_t (*get_initiator_spi) (message_t *this); + + /** * @brief Gets the responder SPI of the message. * * @param this message_t object diff --git a/src/charon/encoding/payloads/notify_payload.c b/src/charon/encoding/payloads/notify_payload.c index 575b4e5c9..4242b4c1e 100644 --- a/src/charon/encoding/payloads/notify_payload.c +++ b/src/charon/encoding/payloads/notify_payload.c @@ -6,6 +6,7 @@ */ /* + * Copyright (C) 2006 Tobias Brunner, Daniel Roethlisberger * Copyright (C) 2005 Jan Hutter, Martin Willi * Hochschule fuer Technik Rapperswil * @@ -48,6 +49,8 @@ mapping_t notify_message_type_m[] = { {INVALID_SELECTORS, "INVALID_SELECTORS"}, {INITIAL_CONTACT, "INITIAL_CONTACT"}, {SET_WINDOW_SIZE, "SET_WINDOW_SIZE"}, + {NAT_DETECTION_SOURCE_IP, "NAT_DETECTION_SOURCE_IP"}, + {NAT_DETECTION_DESTINATION_IP, "NAT_DETECTION_DESTINATION_IP"}, {MAPPING_END, NULL} }; diff --git a/src/charon/encoding/payloads/notify_payload.h b/src/charon/encoding/payloads/notify_payload.h index e15493691..2d2e4ba45 100644 --- a/src/charon/encoding/payloads/notify_payload.h +++ b/src/charon/encoding/payloads/notify_payload.h @@ -6,6 +6,7 @@ */ /* + * Copyright (C) 2006 Tobias Brunner, Daniel Roethlisberger * Copyright (C) 2005 Jan Hutter, Martin Willi * Hochschule fuer Technik Rapperswil * @@ -65,6 +66,8 @@ enum notify_message_type_t { INITIAL_CONTACT = 16384, SET_WINDOW_SIZE = 16385, + NAT_DETECTION_SOURCE_IP = 16388, + NAT_DETECTION_DESTINATION_IP = 16389, REKEY_SA = 16393, }; |