child-sa: Use any fixed reqid configured on the CHILD_SA config
authorMartin Willi <martin@revosec.ch>
Mon, 1 Jun 2015 08:10:19 +0000 (10:10 +0200)
committerTobias Brunner <tobias@strongswan.org>
Fri, 5 Jun 2015 11:44:42 +0000 (13:44 +0200)
Global reqid allocation (94eb09ac) broke fixed reqid allocation. Resupport them
by bypassing allocation in the kernel if a fixed reqid has been configured.

Fixes #976.

src/libcharon/sa/child_sa.c

index e0db2e6..94cf07c 100644 (file)
@@ -698,7 +698,7 @@ METHOD(child_sa_t, install, status_t,
        this->proposal->get_algorithm(this->proposal, EXTENDED_SEQUENCE_NUMBERS,
                                                                  &esn, NULL);
 
-       if (!this->reqid_allocated)
+       if (!this->reqid_allocated && !this->reqid)
        {
                status = hydra->kernel_interface->alloc_reqid(hydra->kernel_interface,
                                                        my_ts, other_ts, this->mark_in, this->mark_out,
@@ -826,7 +826,7 @@ METHOD(child_sa_t, add_policies, status_t,
        traffic_selector_t *my_ts, *other_ts;
        status_t status = SUCCESS;
 
-       if (!this->reqid_allocated)
+       if (!this->reqid_allocated && !this->reqid)
        {
                /* trap policy, get or confirm reqid */
                status = hydra->kernel_interface->alloc_reqid(