]> 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>
Wed, 28 May 2025 14:35:27 +0000 (16:35 +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 55f952a1712d118b859bb7ba955a508963dab685..eee9235dbc3ddeb0583c3c5077315c931ff62cc9 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;
        /** Optional sequence number associated with the acquire */
        uint32_t seq;
 };
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 fd47e4068045fc04ad9e0946caacd56c1ebcb738..2e47ecc5c874862914cb2670a7ddb0b17e4ee75b 100644 (file)
@@ -974,7 +974,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 f9ac579ad271e4aa2a165829234398fae707e62f..469b4b9cc6ddc903ae6f2abe0401c7bb1bc2d65c 100644 (file)
@@ -1324,7 +1324,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;
        uint8_t mode = 0;
        policy_entry_t *policy;
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,