Add reqid field and getter function to child_cfg_t.
authorReto Buerki <buerki@swiss-it.ch>
Thu, 22 Apr 2010 15:03:29 +0000 (17:03 +0200)
committerMartin Willi <martin@revosec.ch>
Tue, 4 May 2010 12:38:34 +0000 (14:38 +0200)
src/libcharon/config/child_cfg.c
src/libcharon/config/child_cfg.h
src/libcharon/plugins/ha/ha_tunnel.c
src/libcharon/plugins/load_tester/load_tester_config.c
src/libcharon/plugins/medcli/medcli_config.c
src/libcharon/plugins/nm/nm_service.c
src/libcharon/plugins/sql/sql_config.c
src/libcharon/plugins/stroke/stroke_config.c
src/libcharon/plugins/uci/uci_config.c

index 8410b3f..ba35a08 100644 (file)
@@ -112,6 +112,11 @@ struct private_child_cfg_t {
        u_int32_t inactivity;
 
        /**
+        * Reqid to install CHIL_SA with
+        */
+       u_int32_t reqid;
+
+       /**
         * set up IPsec transport SA in MIPv6 proxy mode
         */
        bool proxy_mode;
@@ -446,6 +451,14 @@ static u_int32_t get_inactivity(private_child_cfg_t *this)
 }
 
 /**
+ * Implementation of child_cfg_t.get_reqid.
+ */
+static u_int32_t get_reqid(private_child_cfg_t *this)
+{
+       return this->reqid;
+}
+
+/**
  * Implementation of child_cfg_t.set_mipv6_options.
  */
 static void set_mipv6_options(private_child_cfg_t *this, bool proxy_mode,
@@ -506,7 +519,7 @@ child_cfg_t *child_cfg_create(char *name, lifetime_cfg_t *lifetime,
                                                          char *updown, bool hostaccess,
                                                          ipsec_mode_t mode, action_t dpd_action,
                                                          action_t close_action, bool ipcomp,
-                                                         u_int32_t inactivity)
+                                                         u_int32_t inactivity, u_int32_t reqid)
 {
        private_child_cfg_t *this = malloc_thing(private_child_cfg_t);
 
@@ -526,6 +539,7 @@ child_cfg_t *child_cfg_create(char *name, lifetime_cfg_t *lifetime,
        this->public.set_mipv6_options = (void (*) (child_cfg_t*,bool,bool))set_mipv6_options;
        this->public.use_ipcomp = (bool (*) (child_cfg_t *))use_ipcomp;
        this->public.get_inactivity = (u_int32_t (*) (child_cfg_t *))get_inactivity;
+       this->public.get_reqid = (u_int32_t (*) (child_cfg_t *))get_reqid;
        this->public.use_proxy_mode = (bool (*) (child_cfg_t *))use_proxy_mode;
        this->public.install_policy = (bool (*) (child_cfg_t *))install_policy;
        this->public.get_ref = (child_cfg_t* (*) (child_cfg_t*))get_ref;
@@ -539,6 +553,7 @@ child_cfg_t *child_cfg_create(char *name, lifetime_cfg_t *lifetime,
        this->close_action = close_action;
        this->use_ipcomp = ipcomp;
        this->inactivity = inactivity;
+       this->reqid = reqid;
        this->proxy_mode = FALSE;
        this->install_policy = TRUE;
        this->refcount = 1;
index c6186ea..db86cd6 100644 (file)
@@ -239,6 +239,13 @@ struct child_cfg_t {
        u_int32_t (*get_inactivity)(child_cfg_t *this);
 
        /**
+        * Specific reqid to use for CHILD_SA
+        *
+        * @return                              reqid
+        */
+       u_int32_t (*get_reqid)(child_cfg_t *this);
+
+       /**
         * Sets two options needed for Mobile IPv6 interoperability
         *
         * @param proxy_mode    use IPsec transport proxy mode (default FALSE)
@@ -299,12 +306,13 @@ struct child_cfg_t {
  * @param close_action         close action
  * @param ipcomp                       use IPComp, if peer supports it
  * @param inactivity           inactivity timeout in s before closing a CHILD_SA
- * @return                                     child_cfg_t object
+ * @param reqid                                specific reqid to use for CHILD_SA, 0 for auto assign
+ * @return                                     child_cfg_t object
  */
 child_cfg_t *child_cfg_create(char *name, lifetime_cfg_t *lifetime,
                                                          char *updown, bool hostaccess,
                                                          ipsec_mode_t mode, action_t dpd_action,
                                                          action_t close_action, bool ipcomp,
-                                                         u_int32_t inactivity);
+                                                         u_int32_t inactivity, u_int32_t reqid);
 
 #endif /** CHILD_CFG_H_ @}*/
index b3511e5..faa3b2c 100644 (file)
@@ -234,7 +234,7 @@ static void setup_tunnel(private_ha_tunnel_t *this,
        peer_cfg->add_auth_cfg(peer_cfg, auth_cfg, FALSE);
 
        child_cfg = child_cfg_create("ha", &lifetime, NULL, TRUE,
-                                               MODE_TRANSPORT, ACTION_NONE, ACTION_NONE, FALSE, 0);
+                                               MODE_TRANSPORT, ACTION_NONE, ACTION_NONE, FALSE, 0, 0);
        ts = traffic_selector_create_dynamic(IPPROTO_UDP, HA_PORT, HA_PORT);
        child_cfg->add_traffic_selector(child_cfg, TRUE, ts);
        ts = traffic_selector_create_dynamic(IPPROTO_ICMP, 0, 65535);
index c1f98f2..b9a6f05 100644 (file)
@@ -224,7 +224,7 @@ static peer_cfg_t* generate_config(private_load_tester_config_t *this, uint num)
        }
 
        child_cfg = child_cfg_create("load-test", &lifetime, NULL, TRUE,
-                                                                MODE_TUNNEL, ACTION_NONE, ACTION_NONE, FALSE, 0);
+                                                       MODE_TUNNEL, ACTION_NONE, ACTION_NONE, FALSE, 0, 0);
        proposal = proposal_create_from_string(PROTO_ESP, "aes128-sha1");
        child_cfg->add_proposal(child_cfg, proposal);
        ts = traffic_selector_create_dynamic(0, 0, 65535);
index e355d55..7b9b5aa 100644 (file)
@@ -182,7 +182,7 @@ static peer_cfg_t *get_peer_cfg_by_name(private_medcli_config_t *this, char *nam
        peer_cfg->add_auth_cfg(peer_cfg, auth, FALSE);
 
        child_cfg = child_cfg_create(name, &lifetime, NULL, TRUE,
-                                                         MODE_TUNNEL, ACTION_NONE, ACTION_NONE, FALSE, 0);
+                                                       MODE_TUNNEL, ACTION_NONE, ACTION_NONE, FALSE, 0, 0);
        child_cfg->add_proposal(child_cfg, proposal_create_default(PROTO_ESP));
        child_cfg->add_traffic_selector(child_cfg, TRUE, ts_from_string(local_net));
        child_cfg->add_traffic_selector(child_cfg, FALSE, ts_from_string(remote_net));
@@ -260,7 +260,7 @@ static bool peer_enumerator_enumerate(peer_enumerator_t *this, peer_cfg_t **cfg)
        this->current->add_auth_cfg(this->current, auth, FALSE);
 
        child_cfg = child_cfg_create(name, &lifetime, NULL, TRUE, MODE_TUNNEL,
-                                                                ACTION_NONE, ACTION_NONE, FALSE, 0);
+                                                                ACTION_NONE, ACTION_NONE, FALSE, 0, 0);
        child_cfg->add_proposal(child_cfg, proposal_create_default(PROTO_ESP));
        child_cfg->add_traffic_selector(child_cfg, TRUE, ts_from_string(local_net));
        child_cfg->add_traffic_selector(child_cfg, FALSE, ts_from_string(remote_net));
index cdf7dc9..d9badec 100644 (file)
@@ -444,7 +444,7 @@ static gboolean connect_(NMVPNPlugin *plugin, NMConnection *connection,
 
        child_cfg = child_cfg_create(priv->name, &lifetime,
                                                                 NULL, TRUE, MODE_TUNNEL, /* updown, hostaccess */
-                                                                ACTION_NONE, ACTION_NONE, ipcomp, 0);
+                                                                ACTION_NONE, ACTION_NONE, ipcomp, 0, 0);
        child_cfg->add_proposal(child_cfg, proposal_create_default(PROTO_ESP));
        ts = traffic_selector_create_dynamic(0, 0, 65535);
        child_cfg->add_traffic_selector(child_cfg, TRUE, ts);
index 2336689..8893bea 100644 (file)
@@ -134,7 +134,7 @@ static child_cfg_t *build_child_cfg(private_sql_config_t *this, enumerator_t *e)
                        .time = { .life = lifetime, .rekey = rekeytime, .jitter = jitter }
                };
                child_cfg = child_cfg_create(name, &lft, updown, hostaccess, mode,
-                                                                        dpd, close, ipcomp, 0);
+                                                                        dpd, close, ipcomp, 0, 0);
                /* TODO: read proposal from db */
                child_cfg->add_proposal(child_cfg, proposal_create_default(PROTO_ESP));
                add_traffic_selectors(this, child_cfg, id);
index bbc1e7a..c86d145 100644 (file)
@@ -787,7 +787,7 @@ static child_cfg_t *build_child_cfg(private_stroke_config_t *this,
                                msg->add_conn.name, &lifetime,
                                msg->add_conn.me.updown, msg->add_conn.me.hostaccess,
                                msg->add_conn.mode, dpd, dpd, msg->add_conn.ipcomp,
-                               msg->add_conn.inactivity);
+                               msg->add_conn.inactivity, msg->add_conn.reqid);
        child_cfg->set_mipv6_options(child_cfg, msg->add_conn.proxy_mode,
                                                                                        msg->add_conn.install_policy);
        add_ts(this, &msg->add_conn.me, child_cfg, TRUE);
index bd58afb..00d05c4 100644 (file)
@@ -196,7 +196,7 @@ static bool peer_enumerator_enumerate(peer_enumerator_t *this, peer_cfg_t **cfg)
                this->peer_cfg->add_auth_cfg(this->peer_cfg, auth, FALSE);
 
                child_cfg = child_cfg_create(name, &lifetime, NULL, TRUE, MODE_TUNNEL,
-                                                                        ACTION_NONE, ACTION_NONE, FALSE, 0);
+                                                                        ACTION_NONE, ACTION_NONE, FALSE, 0, 0);
                child_cfg->add_proposal(child_cfg, create_proposal(esp_proposal, PROTO_ESP));
                child_cfg->add_traffic_selector(child_cfg, TRUE, create_ts(local_net));
                child_cfg->add_traffic_selector(child_cfg, FALSE, create_ts(remote_net));