From e9a7c9822d44aa2161616074d5b0b74ba0f59a60 Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Fri, 26 Jul 2024 18:07:23 +0200 Subject: [PATCH] ike-sa: Assign function pointers for mediation extension separately Using preprocessor directives in calls of function-like macros is not recommended as it might lead to undefined behavior. --- src/libcharon/sa/ike_sa.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/libcharon/sa/ike_sa.c b/src/libcharon/sa/ike_sa.c index a8cda54bf..c9b2a6c08 100644 --- a/src/libcharon/sa/ike_sa.c +++ b/src/libcharon/sa/ike_sa.c @@ -3203,17 +3203,6 @@ ike_sa_t * ike_sa_create(ike_sa_id_t *ike_sa_id, bool initiator, .queue_task = _queue_task, .queue_task_delayed = _queue_task_delayed, .adopt_child_tasks = _adopt_child_tasks, -#ifdef ME - .act_as_mediation_server = _act_as_mediation_server, - .get_server_reflexive_host = _get_server_reflexive_host, - .set_server_reflexive_host = _set_server_reflexive_host, - .get_connect_id = _get_connect_id, - .initiate_mediation = _initiate_mediation, - .initiate_mediated = _initiate_mediated, - .relay = _relay, - .callback = _callback, - .respond = _respond, -#endif /* ME */ }, .ike_sa_id = ike_sa_id->clone(ike_sa_id), .version = version, @@ -3245,6 +3234,18 @@ ike_sa_t * ike_sa_create(ike_sa_id_t *ike_sa_id, bool initiator, "%s.follow_redirects", TRUE, lib->ns), ); +#ifdef ME + this->public.act_as_mediation_server = _act_as_mediation_server; + this->public.get_server_reflexive_host = _get_server_reflexive_host; + this->public.set_server_reflexive_host = _set_server_reflexive_host; + this->public.get_connect_id = _get_connect_id; + this->public.initiate_mediation = _initiate_mediation; + this->public.initiate_mediated = _initiate_mediated; + this->public.relay = _relay; + this->public.callback = _callback; + this->public.respond = _respond; +#endif /* ME */ + if (version == IKEV2) { /* always supported with IKEv2 */ enable_extension(this, EXT_DPD);