]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
kernel-interface: Optionally pass CPU ID for which an acquire was triggered
authorTobias Brunner <tobias@strongswan.org>
Mon, 26 Sep 2022 14:47:46 +0000 (16:47 +0200)
committerTobias Brunner <tobias@strongswan.org>
Thu, 11 Apr 2024 06:02:45 +0000 (08:02 +0200)
src/charon-tkm/src/ees/ees_callbacks.c
src/libcharon/kernel/kernel_listener.h
src/libcharon/plugins/kernel_libipsec/kernel_libipsec_ipsec.c
src/libcharon/plugins/kernel_netlink/kernel_netlink_ipsec.c
src/libcharon/plugins/kernel_pfkey/kernel_pfkey_ipsec.c
src/libcharon/plugins/kernel_wfp/kernel_wfp_ipsec.c

index c276a8ee71b312714d292989ecbf44ab67e21233..74da4b61f8a675a2a0b1144bdd615a92eafec1c1 100644 (file)
@@ -25,7 +25,9 @@
 
 void charon_esa_acquire(result_type *res, const sp_id_type sp_id)
 {
-       kernel_acquire_data_t data = {};
+       kernel_acquire_data_t data = {
+               .cpu = CPU_ID_MAX,
+       };
 
        DBG1(DBG_KNL, "ees: acquire received for reqid %u", sp_id);
        charon->kernel->acquire(charon->kernel, sp_id, &data);
index caea63fbc1324dbe857c0e445c00ff0df360b8c4..52456f76217a32edee56541cc1e1d09d9f360b1e 100644 (file)
@@ -40,6 +40,8 @@ struct kernel_acquire_data_t {
        traffic_selector_t *dst;
        /** Optional security label of the triggering packet */
        sec_label_t *label;
+       /** Optional CPU ID of the triggering packet, CPU_ID_MAX if none */
+       uint32_t cpu;
 };
 
 /**
index b0fb2f970b07dabc8bcf15416b09ea2986ea37f2..215eaa153d486458c9053e48165bc43ed914e127 100644 (file)
@@ -238,7 +238,9 @@ static void expire(uint8_t protocol, uint32_t spi, host_t *dst, bool hard)
  */
 static void acquire(uint32_t reqid)
 {
-       kernel_acquire_data_t data = {};
+       kernel_acquire_data_t data = {
+               .cpu = CPU_ID_MAX,
+       };
 
        charon->kernel->acquire(charon->kernel, reqid, &data);
 }
index 844116f7d40844521b4d1162744ed67c3b4279c9..fafe8e9aeb574089a4f90f2044993a70034f2d23 100644 (file)
@@ -963,7 +963,9 @@ static void process_acquire(private_kernel_netlink_ipsec_t *this,
        struct xfrm_user_acquire *acquire;
        struct rtattr *rta;
        size_t rtasize;
-       kernel_acquire_data_t data = {};
+       kernel_acquire_data_t data = {
+               .cpu = CPU_ID_MAX,
+       };
        chunk_t label = chunk_empty;
        uint32_t reqid = 0;
        uint8_t proto;
index 9bb67cfce910f60a725dcfeb718ac7beea36f6fd..5aea063dc59e25cadfc7d15c66cb49446f6b0481 100644 (file)
@@ -1319,7 +1319,9 @@ static void process_acquire(private_kernel_pfkey_ipsec_t *this,
                                                        struct sadb_msg* msg)
 {
        pfkey_msg_t response;
-       kernel_acquire_data_t data = {};
+       kernel_acquire_data_t data = {
+               .cpu = CPU_ID_MAX,
+       };
        uint32_t index, reqid = 0;
        policy_entry_t *policy;
        policy_sa_t *sa;
index a60dbe6637c043b1a6cb3bfc3fb38be03bd376a0..23ae82bbc89a3c04cc12e127f82715baaa326208 100644 (file)
@@ -1637,7 +1637,9 @@ static u_int hash_trap(trap_t *trap)
 static void acquire(private_kernel_wfp_ipsec_t *this, UINT64 filter_id,
                                        traffic_selector_t *src, traffic_selector_t *dst)
 {
-       kernel_acquire_data_t data = {};
+       kernel_acquire_data_t data = {
+               .cpu = CPU_ID_MAX,
+       };
        uint32_t reqid = 0;
        trap_t *trap, key = {
                .filter_id = filter_id,