]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
Added a message method to set the "higher version supported" flag
authorMartin Willi <martin@revosec.ch>
Wed, 24 Nov 2010 16:45:12 +0000 (17:45 +0100)
committerMartin Willi <martin@revosec.ch>
Wed, 5 Jan 2011 15:45:52 +0000 (16:45 +0100)
src/libcharon/encoding/message.c
src/libcharon/encoding/message.h
src/libcharon/encoding/payloads/ike_header.c
src/libcharon/encoding/payloads/ike_header.h

index 9d66df573fee1fe9e0a795a6597377c45ca7686e..c9959ab9210a86a34276b9af45d6b1e453963cc8 100644 (file)
@@ -490,6 +490,11 @@ struct private_message_t {
         */
        bool is_request;
 
+       /**
+        * Higher version supported?
+        */
+       bool version_flag;
+
        /**
         * Reserved bits in IKE header
         */
@@ -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,
index 0cc00acba17c2935da25e8da11e0b6e6ec286cb7..a04048ed018b0862d434574ea6d2ae86a37c63c7 100644 (file)
@@ -153,6 +153,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.
         *
index d061bd25adee7840ffa4aa139f0a49835d6a25ce..e035b2ba1572c93535e4ef9b9f4888b9416c1c6a 100644 (file)
@@ -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,
index 7bb33a5861b69d8d0609092e4528741eacb59d68..f52c852c56ed0b22f8ccaa0d15be6a031028dc2d 100644 (file)
@@ -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.
         *
@@ -183,6 +184,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.
         *