diff options
author | Martin Willi <martin@revosec.ch> | 2010-11-24 17:45:12 +0100 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2011-01-05 16:45:52 +0100 |
commit | 2813be18f5978b430b960c9584a7b33c2c46e1e5 (patch) | |
tree | 144cce0f70d87b078258362ffb3b85cf4b9fdcea /src/libcharon/encoding | |
parent | 357e960e40f47e2c14b796981b3e610c78f6e0e5 (diff) | |
download | strongswan-2813be18f5978b430b960c9584a7b33c2c46e1e5.tar.bz2 strongswan-2813be18f5978b430b960c9584a7b33c2c46e1e5.tar.xz |
Added a message method to set the "higher version supported" flag
Diffstat (limited to 'src/libcharon/encoding')
-rw-r--r-- | src/libcharon/encoding/message.c | 13 | ||||
-rw-r--r-- | src/libcharon/encoding/message.h | 5 | ||||
-rw-r--r-- | src/libcharon/encoding/payloads/ike_header.c | 7 | ||||
-rw-r--r-- | src/libcharon/encoding/payloads/ike_header.h | 8 |
4 files changed, 33 insertions, 0 deletions
diff --git a/src/libcharon/encoding/message.c b/src/libcharon/encoding/message.c index 9d66df573..c9959ab92 100644 --- a/src/libcharon/encoding/message.c +++ b/src/libcharon/encoding/message.c @@ -491,6 +491,11 @@ struct private_message_t { bool is_request; /** + * Higher version supported? + */ + bool version_flag; + + /** * Reserved bits in IKE header */ bool reserved[5]; @@ -658,6 +663,12 @@ METHOD(message_t, get_request, bool, return this->is_request; } +METHOD(message_t, set_version_flag, void, + private_message_t *this) +{ + this->version_flag = TRUE; +} + METHOD(message_t, get_reserved_header_bit, bool, private_message_t *this, u_int nr) { @@ -1105,6 +1116,7 @@ METHOD(message_t, generate, status_t, ike_header->set_exchange_type(ike_header, this->exchange_type); ike_header->set_message_id(ike_header, this->message_id); ike_header->set_response_flag(ike_header, !this->is_request); + ike_header->set_version_flag(ike_header, this->version_flag); ike_header->set_initiator_flag(ike_header, this->ike_sa_id->is_initiator(this->ike_sa_id)); ike_header->set_initiator_spi(ike_header, @@ -1497,6 +1509,7 @@ message_t *message_create_from_packet(packet_t *packet) .get_first_payload_type = _get_first_payload_type, .set_request = _set_request, .get_request = _get_request, + .set_version_flag = _set_version_flag, .get_reserved_header_bit = _get_reserved_header_bit, .set_reserved_header_bit = _set_reserved_header_bit, .add_payload = _add_payload, diff --git a/src/libcharon/encoding/message.h b/src/libcharon/encoding/message.h index 0cc00acba..a04048ed0 100644 --- a/src/libcharon/encoding/message.h +++ b/src/libcharon/encoding/message.h @@ -154,6 +154,11 @@ struct message_t { bool (*get_request) (message_t *this); /** + * Set the version flag in the IKE header. + */ + void (*set_version_flag)(message_t *this); + + /** * Get a reserved bit in the IKE header. * * @param nr reserved bit to get in IKE header, 0-4 diff --git a/src/libcharon/encoding/payloads/ike_header.c b/src/libcharon/encoding/payloads/ike_header.c index d061bd25a..e035b2ba1 100644 --- a/src/libcharon/encoding/payloads/ike_header.c +++ b/src/libcharon/encoding/payloads/ike_header.c @@ -292,6 +292,12 @@ METHOD(ike_header_t, get_version_flag, bool, return this->flags.version; } +METHOD(ike_header_t, set_version_flag, void, + private_ike_header_t *this, bool version) +{ + this->flags.version = version; +} + METHOD(ike_header_t, get_initiator_flag, bool, private_ike_header_t *this) { @@ -363,6 +369,7 @@ ike_header_t *ike_header_create() .get_response_flag = _get_response_flag, .set_response_flag = _set_response_flag, .get_version_flag = _get_version_flag, + .set_version_flag = _set_version_flag, .get_initiator_flag = _get_initiator_flag, .set_initiator_flag = _set_initiator_flag, .get_exchange_type = _get_exchange_type, diff --git a/src/libcharon/encoding/payloads/ike_header.h b/src/libcharon/encoding/payloads/ike_header.h index 7bb33a586..f52c852c5 100644 --- a/src/libcharon/encoding/payloads/ike_header.h +++ b/src/libcharon/encoding/payloads/ike_header.h @@ -176,6 +176,7 @@ struct ike_header_t { * @param response response flag */ void (*set_response_flag) (ike_header_t *this, bool response); + /** * Get "higher version supported"-flag. * @@ -184,6 +185,13 @@ struct ike_header_t { bool (*get_version_flag) (ike_header_t *this); /** + * Set the "higher version supported"-flag. + * + * @param version flag value + */ + void (*set_version_flag)(ike_header_t *this, bool version); + + /** * Get the initiator flag. * * @return initiator flag |