Use vendor id payload for IKEv1 payloads, too
[strongswan.git] / src / libcharon / encoding / payloads / vendor_id_payload.c
index e9e80e9..3dab394 100644 (file)
@@ -55,6 +55,11 @@ struct private_vendor_id_payload_t {
         * The contained data.
         */
        chunk_t data;
+
+       /**
+        * Either a IKEv1 or a IKEv2 vendor ID payload
+        */
+       payload_type_t type;
 };
 
 /**
@@ -111,7 +116,7 @@ METHOD(payload_t, get_encoding_rules, void,
 METHOD(payload_t, get_type, payload_type_t,
        private_vendor_id_payload_t *this)
 {
-       return VENDOR_ID;
+       return this->type;
 }
 
 METHOD(payload_t, get_next_type, payload_type_t,
@@ -148,7 +153,8 @@ METHOD2(payload_t, vendor_id_payload_t, destroy, void,
 /*
  * Described in header
  */
-vendor_id_payload_t *vendor_id_payload_create_data(chunk_t data)
+vendor_id_payload_t *vendor_id_payload_create_data(payload_type_t type,
+                                                                                                  chunk_t data)
 {
        private_vendor_id_payload_t *this;
 
@@ -169,6 +175,7 @@ vendor_id_payload_t *vendor_id_payload_create_data(chunk_t data)
                .next_payload = NO_PAYLOAD,
                .payload_length = VENDOR_ID_PAYLOAD_HEADER_LENGTH + data.len,
                .data = data,
+               .type = type,
        );
        return &this->public;
 }
@@ -176,7 +183,7 @@ vendor_id_payload_t *vendor_id_payload_create_data(chunk_t data)
 /*
  * Described in header
  */
-vendor_id_payload_t *vendor_id_payload_create()
+vendor_id_payload_t *vendor_id_payload_create(payload_type_t type)
 {
-       return vendor_id_payload_create_data(chunk_empty);
+       return vendor_id_payload_create_data(type, chunk_empty);
 }