]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
trap-manager: Add support to handle acquires for per-CPU SAs
authorTobias Brunner <tobias@strongswan.org>
Thu, 20 May 2021 07:46:55 +0000 (09:46 +0200)
committerTobias Brunner <tobias@strongswan.org>
Wed, 28 May 2025 14:35:27 +0000 (16:35 +0200)
src/libcharon/sa/trap_manager.c

index c550695a4662abc58a905593581f13e04d63cea8..17953010a102e99e329e7dfb1d4bd8edf63365d3 100644 (file)
@@ -159,11 +159,12 @@ static void destroy_acquire(acquire_t *this)
 CALLBACK(acquire_by_reqid, bool,
        acquire_t *this, va_list args)
 {
-       uint32_t reqid;
+       uint32_t reqid, cpu;
        sec_label_t *label;
 
-       VA_ARGS_VGET(args, reqid, label);
-       return this->reqid == reqid && sec_labels_equal(this->data->label, label);
+       VA_ARGS_VGET(args, reqid, cpu, label);
+       return this->reqid == reqid && this->data->cpu == cpu &&
+                  sec_labels_equal(this->data->label, label);
 }
 
 CALLBACK(acquire_by_dst, bool,
@@ -573,7 +574,8 @@ METHOD(trap_manager_t, acquire, void,
        else
        {
                this->acquires->find_first(this->acquires, acquire_by_reqid,
-                                                                  (void**)&acquire, reqid, data->label);
+                                                                  (void**)&acquire, reqid, data->cpu,
+                                                                       data->label);
        }
        if (!acquire)
        {
@@ -643,7 +645,7 @@ METHOD(trap_manager_t, acquire, void,
        {
                child_init_args_t args = {
                        .reqid = allocated_reqid,
-                       .cpu = CPU_ID_MAX,
+                       .cpu = data->cpu,
                        .src = data->src,
                        .dst = data->dst,
                        .label = data->label,