Use the vararg list constructor in quick mode task
[strongswan.git] / src / libcharon / sa / ike_sa_id.h
index a833aa9..227683d 100644 (file)
@@ -1,4 +1,5 @@
 /*
+ * Copyright (C) 2012 Tobias Brunner
  * Copyright (C) 2005-2006 Martin Willi
  * Copyright (C) 2005 Jan Hutter
  * Hochschule fuer Technik Rapperswil
@@ -29,49 +30,58 @@ typedef struct ike_sa_id_t ike_sa_id_t;
 /**
  * An object of type ike_sa_id_t is used to identify an IKE_SA.
  *
- * An IKE_SA is identified by its initiator and responder spi's.
- * Additionaly it contains the role of the actual running IKEv2-Daemon
- * for the specific IKE_SA (original initiator or responder).
+ * An IKE_SA is identified by its initiator and responder SPIs.
+ * Additionally, it contains the major IKE version of the IKE_SA and, for IKEv2,
+ * the role of the daemon (original initiator or responder).
  */
 struct ike_sa_id_t {
 
        /**
+        * Get the major IKE version of this IKE_SA.
+        *
+        * @return                                      IKE version
+        */
+       u_int8_t (*get_ike_version) (ike_sa_id_t *this);
+
+       /**
         * Set the SPI of the responder.
         *
         * This function is called when a request or reply of a IKE_SA_INIT is received.
         *
-        * @param responder_spi         SPI of responder to set
+        * @param responder_spi         SPI of responder to set
         */
        void (*set_responder_spi) (ike_sa_id_t *this, u_int64_t responder_spi);
 
        /**
         * Set the SPI of the initiator.
         *
-        * @param initiator_spi         SPI to set
+        * @param initiator_spi         SPI to set
         */
        void (*set_initiator_spi) (ike_sa_id_t *this, u_int64_t initiator_spi);
 
        /**
         * Get the initiator SPI.
         *
-        * @return                                      SPI of the initiator
+        * @return                                      SPI of the initiator
         */
        u_int64_t (*get_initiator_spi) (ike_sa_id_t *this);
 
        /**
         * Get the responder SPI.
         *
-        * @return                                      SPI of the responder
+        * @return                                      SPI of the responder
         */
        u_int64_t (*get_responder_spi) (ike_sa_id_t *this);
 
        /**
         * Check if two ike_sa_id_t objects are equal.
         *
-        * Two ike_sa_id_t objects are equal if both SPI values and the role matches.
+        * Two ike_sa_id_t objects are equal if version and both SPI values match.
+        * The role is not compared.
         *
-        * @param other                         ike_sa_id_t object to check if equal
-        * @return                                      TRUE if given ike_sa_id_t are equal, FALSE otherwise
+        * @param other                         ike_sa_id_t object to check if equal
+        * @return                                      TRUE if given ike_sa_id_t are equal,
+        *                                                      FALSE otherwise
         */
        bool (*equals) (ike_sa_id_t *this, ike_sa_id_t *other);
 
@@ -81,28 +91,28 @@ struct ike_sa_id_t {
         *
         * After calling this function, both objects are equal.
         *
-        * @param other                         ike_sa_id_t object from which values will be taken
+        * @param other                 ike_sa_id_t object from which values will be taken
         */
        void (*replace_values) (ike_sa_id_t *this, ike_sa_id_t *other);
 
        /**
         * Get the initiator flag.
         *
-        * @return                                      TRUE if we are the original initator
+        * @return                                      TRUE if we are the original initiator
         */
        bool (*is_initiator) (ike_sa_id_t *this);
 
        /**
-        * Switche the original initiator flag.
+        * Switch the original initiator flag.
         *
-        * @return                                      TRUE if we are the original initator after switch, FALSE otherwise
+        * @return                                      new value if initiator flag.
         */
        bool (*switch_initiator) (ike_sa_id_t *this);
 
        /**
         * Clones a given ike_sa_id_t object.
         *
-        * @return                                      cloned ike_sa_id_t object
+        * @return                                      cloned ike_sa_id_t object
         */
        ike_sa_id_t *(*clone) (ike_sa_id_t *this);
 
@@ -113,14 +123,15 @@ struct ike_sa_id_t {
 };
 
 /**
- * Creates an ike_sa_id_t object with specific SPI's and defined role.
+ * Creates an ike_sa_id_t object.
  *
+ * @param ike_version                  major IKE version
  * @param initiator_spi                        initiators SPI
  * @param responder_spi                        responders SPI
  * @param is_initiaor                  TRUE if we are the original initiator
  * @return                                             ike_sa_id_t object
  */
-ike_sa_id_t * ike_sa_id_create(u_int64_t initiator_spi, u_int64_t responder_spi,
-                                                          bool is_initiaor);
+ike_sa_id_t * ike_sa_id_create(u_int8_t ike_version, u_int64_t initiator_spi,
+                                                          u_int64_t responder_spi, bool is_initiaor);
 
 #endif /** IKE_SA_ID_H_ @}*/