From: Tobias Brunner Date: Mon, 26 Sep 2022 14:47:46 +0000 (+0200) Subject: kernel-interface: Optionally pass CPU ID for which an acquire was triggered X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=df7cd8a270ebb0dffb47bb9e744dda10fdca5036;p=thirdparty%2Fstrongswan.git kernel-interface: Optionally pass CPU ID for which an acquire was triggered --- diff --git a/src/charon-tkm/src/ees/ees_callbacks.c b/src/charon-tkm/src/ees/ees_callbacks.c index c276a8ee71..74da4b61f8 100644 --- a/src/charon-tkm/src/ees/ees_callbacks.c +++ b/src/charon-tkm/src/ees/ees_callbacks.c @@ -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); diff --git a/src/libcharon/kernel/kernel_listener.h b/src/libcharon/kernel/kernel_listener.h index caea63fbc1..52456f7621 100644 --- a/src/libcharon/kernel/kernel_listener.h +++ b/src/libcharon/kernel/kernel_listener.h @@ -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; }; /** diff --git a/src/libcharon/plugins/kernel_libipsec/kernel_libipsec_ipsec.c b/src/libcharon/plugins/kernel_libipsec/kernel_libipsec_ipsec.c index b0fb2f970b..215eaa153d 100644 --- a/src/libcharon/plugins/kernel_libipsec/kernel_libipsec_ipsec.c +++ b/src/libcharon/plugins/kernel_libipsec/kernel_libipsec_ipsec.c @@ -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); } diff --git a/src/libcharon/plugins/kernel_netlink/kernel_netlink_ipsec.c b/src/libcharon/plugins/kernel_netlink/kernel_netlink_ipsec.c index 844116f7d4..fafe8e9aeb 100644 --- a/src/libcharon/plugins/kernel_netlink/kernel_netlink_ipsec.c +++ b/src/libcharon/plugins/kernel_netlink/kernel_netlink_ipsec.c @@ -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; diff --git a/src/libcharon/plugins/kernel_pfkey/kernel_pfkey_ipsec.c b/src/libcharon/plugins/kernel_pfkey/kernel_pfkey_ipsec.c index 9bb67cfce9..5aea063dc5 100644 --- a/src/libcharon/plugins/kernel_pfkey/kernel_pfkey_ipsec.c +++ b/src/libcharon/plugins/kernel_pfkey/kernel_pfkey_ipsec.c @@ -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; diff --git a/src/libcharon/plugins/kernel_wfp/kernel_wfp_ipsec.c b/src/libcharon/plugins/kernel_wfp/kernel_wfp_ipsec.c index a60dbe6637..23ae82bbc8 100644 --- a/src/libcharon/plugins/kernel_wfp/kernel_wfp_ipsec.c +++ b/src/libcharon/plugins/kernel_wfp/kernel_wfp_ipsec.c @@ -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,