ike: Reuse interface ID during CHILD_SA rekeyings
[strongswan.git] / src / libcharon / sa / ikev2 / tasks / child_create.h
index 938b843..eae1f35 100644 (file)
@@ -1,6 +1,7 @@
 /*
 /*
+ * Copyright (C) 2018-2019 Tobias Brunner
  * Copyright (C) 2007 Martin Willi
  * Copyright (C) 2007 Martin Willi
- * Hochschule fuer Technik Rapperswil
+ * HSR Hochschule fuer Technik Rapperswil
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License as published by the
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License as published by the
@@ -15,7 +16,7 @@
 
 /**
  * @defgroup child_create child_create
 
 /**
  * @defgroup child_create child_create
- * @{ @ingroup tasks
+ * @{ @ingroup tasks_v2
  */
 
 #ifndef CHILD_CREATE_H_
  */
 
 #ifndef CHILD_CREATE_H_
@@ -49,7 +50,32 @@ struct child_create_t {
         *
         * @param reqid         reqid to use
         */
         *
         * @param reqid         reqid to use
         */
-       void (*use_reqid) (child_create_t *this, u_int32_t reqid);
+       void (*use_reqid) (child_create_t *this, uint32_t reqid);
+
+       /**
+        * Use specific mark values to override configuration.
+        *
+        * @param in            inbound mark value
+        * @param out           outbound mark value
+        */
+       void (*use_marks)(child_create_t *this, uint32_t in, uint32_t out);
+
+       /**
+        * Use specific interface IDs, overriding configuration.
+        *
+        * @param in                    inbound interface ID
+        * @param out                   outbound interface ID
+        */
+       void (*use_if_ids)(child_create_t *this, uint32_t in, uint32_t out);
+
+       /**
+        * Initially propose a specific DH group to override configuration.
+        *
+        * This is used during rekeying to prefer the previously negotiated group.
+        *
+        * @param dh_group      DH group to use
+        */
+       void (*use_dh_group)(child_create_t *this, diffie_hellman_group_t dh_group);
 
        /**
         * Get the lower of the two nonces, used for rekey collisions.
 
        /**
         * Get the lower of the two nonces, used for rekey collisions.
@@ -64,6 +90,13 @@ struct child_create_t {
         * @return                      child_sa
         */
        child_sa_t* (*get_child) (child_create_t *this);
         * @return                      child_sa
         */
        child_sa_t* (*get_child) (child_create_t *this);
+
+       /**
+        * Enforce a specific CHILD_SA config as responder.
+        *
+        * @param cfg           configuration to enforce, reference gets owned
+        */
+       void (*set_config)(child_create_t *this, child_cfg_t *cfg);
 };
 
 /**
 };
 
 /**