]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
Reuse reqid for trap policies installed for dpd|closeaction=hold
authorTobias Brunner <tobias@strongswan.org>
Sat, 29 Jun 2013 16:33:37 +0000 (18:33 +0200)
committerAndreas Steffen <andreas.steffen@strongswan.org>
Mon, 1 Jul 2013 07:58:25 +0000 (09:58 +0200)
src/libcharon/plugins/ha/ha_tunnel.c
src/libcharon/plugins/stroke/stroke_control.c
src/libcharon/processing/jobs/start_action_job.c
src/libcharon/sa/ike_sa.c
src/libcharon/sa/ikev2/tasks/child_delete.c
src/libcharon/sa/trap_manager.c
src/libcharon/sa/trap_manager.h

index e6a09a76e7ca9e2acda01e9f0bbd9acc9d0c7155..4e656e73b25e600707640c5915973fe88ec5e874 100644 (file)
@@ -245,7 +245,7 @@ static void setup_tunnel(private_ha_tunnel_t *this,
        charon->backends->add_backend(charon->backends, &this->backend.public);
 
        /* install an acquiring trap */
-       this->trap = charon->traps->install(charon->traps, peer_cfg, child_cfg);
+       this->trap = charon->traps->install(charon->traps, peer_cfg, child_cfg, 0);
 }
 
 METHOD(ha_tunnel_t, destroy, void,
index 91130d1ee0ef293fa2cc07028abb16517b17ce29..fdd1635a6a3954beade40fcd31e6de94c25768a7 100644 (file)
@@ -603,7 +603,7 @@ static void charon_route(peer_cfg_t *peer_cfg, child_cfg_t *child_cfg,
        }
        else
        {
-               if (charon->traps->install(charon->traps, peer_cfg, child_cfg))
+               if (charon->traps->install(charon->traps, peer_cfg, child_cfg, 0))
                {
                        fprintf(out, "'%s' routed\n", name);
                }
index bc4aaf6d6fa89716ddb0d5bbf5d807bfaf764d7a..981473b5c898209de805dd521526687475d9770b 100644 (file)
@@ -73,7 +73,7 @@ METHOD(job_t, execute, job_requeue_t,
                                        else
                                        {
                                                charon->traps->install(charon->traps, peer_cfg,
-                                                                                                                         child_cfg);
+                                                                                          child_cfg, 0);
                                        }
                                        break;
                                case ACTION_NONE:
index e25191782ed43011047ab4ffd54e15537865c3ea..22b9e43480874fa356b3e2383db8e466ee71a03c 100644 (file)
@@ -1575,7 +1575,8 @@ METHOD(ike_sa_t, reestablish, status_t,
                                        break;
                                case ACTION_ROUTE:
                                        charon->traps->install(charon->traps, this->peer_cfg,
-                                                                                  child_sa->get_config(child_sa));
+                                                                                  child_sa->get_config(child_sa),
+                                                                                  child_sa->get_reqid(child_sa));
                                        break;
                                default:
                                        break;
index 9e53d037e73988adb4360c94e7a8dc4500416a5f..5e696775c76520ca74584f307db6325c427fb1cf 100644 (file)
@@ -227,7 +227,8 @@ static status_t destroy_and_reestablish(private_child_delete_t *this)
                                        break;
                                case ACTION_ROUTE:
                                        charon->traps->install(charon->traps,
-                                                       this->ike_sa->get_peer_cfg(this->ike_sa), child_cfg);
+                                                       this->ike_sa->get_peer_cfg(this->ike_sa), child_cfg,
+                                                       child_sa->get_reqid(child_sa));
                                        break;
                                default:
                                        break;
index ab638ff3e0e9d0db9f14d1f5d4396339f65315da..37426fc474c9f9963a064cb0f90c96e8aa36381e 100644 (file)
@@ -92,7 +92,8 @@ static void destroy_entry(entry_t *entry)
 }
 
 METHOD(trap_manager_t, install, u_int32_t,
-       private_trap_manager_t *this, peer_cfg_t *peer, child_cfg_t *child)
+       private_trap_manager_t *this, peer_cfg_t *peer, child_cfg_t *child,
+       u_int32_t reqid)
 {
        entry_t *entry, *found = NULL;
        ike_cfg_t *ike_cfg;
@@ -101,7 +102,6 @@ METHOD(trap_manager_t, install, u_int32_t,
        linked_list_t *my_ts, *other_ts, *list;
        enumerator_t *enumerator;
        status_t status;
-       u_int32_t reqid = 0;
 
        /* try to resolve addresses */
        ike_cfg = peer->get_ike_cfg(peer);
index 97de45645a821a7cc014ab2fc7ec4cc5cb016fb8..0491107fd8bc44e419d02fe23f43ab83d30eba20 100644 (file)
@@ -37,10 +37,11 @@ struct trap_manager_t {
         *
         * @param peer          peer configuration to initiate on trap
         * @param child         child configuration to install as a trap
+        * @param reqid         optional reqid to use
         * @return                      reqid of installed CHILD_SA, 0 if failed
         */
        u_int32_t (*install)(trap_manager_t *this, peer_cfg_t *peer,
-                                                child_cfg_t *child);
+                                                child_cfg_t *child, u_int32_t reqid);
 
        /**
         * Uninstall a trap policy.