]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
ike-sa: Accept optional CPU ID when initiating CHILD_SAs
authorTobias Brunner <tobias@strongswan.org>
Wed, 19 May 2021 13:11:53 +0000 (15:11 +0200)
committerTobias Brunner <tobias@strongswan.org>
Wed, 28 May 2025 14:35:26 +0000 (16:35 +0200)
src/libcharon/sa/ike_sa.h
src/libcharon/sa/ikev1/tasks/quick_delete.c
src/libcharon/sa/ikev2/task_manager_v2.c
src/libcharon/sa/ikev2/tasks/child_delete.c
src/libcharon/sa/trap_manager.c

index c6fa62ff3e10c1159202f8749314ed4acee66dc8..e3d4098a043707db72fc704b8671d0a5ad6fa25d 100644 (file)
@@ -406,6 +406,8 @@ extern enum_name_t *ike_sa_state_names;
 struct child_init_args_t {
        /** Reqid to use for CHILD_SA, 0 to assign automatically */
        uint32_t reqid;
+       /** Optional CPU ID to use for CHILD_SA, CPU_ID_MAX if unspecified */
+       uint32_t cpu;
        /** Optional source of triggering packet */
        traffic_selector_t *src;
        /** Optional destination of triggering packet */
index 0da50ed405f1df405db7ccd713e2bacd3cb4b44e..265d36c39639feb7a4013d2b579f72550a73ca73 100644 (file)
@@ -152,6 +152,7 @@ static status_t delete_child(private_quick_delete_t *this,
                {
                        child_init_args_t args = {
                                .reqid = child_sa->get_reqid_ref(child_sa),
+                               .cpu = child_sa->get_cpu(child_sa),
                        };
                        action_t action;
 
index d46559182f8481574254350a6223c21a1639d3bf..0f3b937fdd53667e07ce518c8ff85491a262d299 100644 (file)
@@ -2208,6 +2208,8 @@ static void trigger_mbb_reauth(private_task_manager_t *this)
                                                                child_sa->get_mark(child_sa, TRUE).value,
                                                                child_sa->get_mark(child_sa, FALSE).value);
                child_create->use_label(child_create, child_sa->get_label(child_sa));
+               child_create->use_per_cpu(child_create, child_sa->use_per_cpu(child_sa),
+                                                                 child_sa->get_cpu(child_sa));
                /* interface IDs are not migrated as the new CHILD_SAs on old and new
                 * IKE_SA go though regular updown events */
                new->queue_task(new, &child_create->task);
@@ -2387,6 +2389,8 @@ METHOD(task_manager_t, queue_child, void,
                        charon->kernel->release_reqid(charon->kernel, reqid);
                }
                task->use_label(task, child_sa->get_label(child_sa));
+               task->use_per_cpu(task, child_sa->use_per_cpu(child_sa),
+                                                 child_sa->get_cpu(child_sa));
        }
        else if (args)
        {
@@ -2394,6 +2398,7 @@ METHOD(task_manager_t, queue_child, void,
                                                                   args->dst, args->seq);
                task->use_reqid(task, args->reqid);
                task->use_label(task, args->label);
+               task->use_per_cpu(task, FALSE, args->cpu);
        }
        else
        {
index 7987bdd534e56d742317020297da363296704eff..c319d8e25b7c2455eadc7fd906704030c7538c55 100644 (file)
@@ -171,6 +171,8 @@ static void queue_child_create(ike_sa_t *ike_sa, child_sa_t *child_sa)
                charon->kernel->release_reqid(charon->kernel, reqid);
        }
        child_create->use_label(child_create, child_sa->get_label(child_sa));
+       child_create->use_per_cpu(child_create, child_sa->use_per_cpu(child_sa),
+                                                         child_sa->get_cpu(child_sa));
        ike_sa->queue_task(ike_sa, (task_t*)child_create);
 }
 
index 0855e5517200f703b9647467712c288f62e86e41..c550695a4662abc58a905593581f13e04d63cea8 100644 (file)
@@ -643,6 +643,7 @@ METHOD(trap_manager_t, acquire, void,
        {
                child_init_args_t args = {
                        .reqid = allocated_reqid,
+                       .cpu = CPU_ID_MAX,
                        .src = data->src,
                        .dst = data->dst,
                        .label = data->label,