From 1b551a9bfdd8f427596cd54048bf8d58ebc373e1 Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Mon, 11 Aug 2025 15:55:03 +0200 Subject: [PATCH 1/4] plugin-loader: Don't prevent dynamic linking in addition to static constructors When built with static plugins and constructors, we might still want to be able to load external plugins. Fixes: d860c26e9533 ("plugin-loader: Properly support compilation without dlopen()/dlsym() etc.") --- src/libstrongswan/plugins/plugin_loader.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/libstrongswan/plugins/plugin_loader.c b/src/libstrongswan/plugins/plugin_loader.c index 786b18332..0d4659f12 100644 --- a/src/libstrongswan/plugins/plugin_loader.c +++ b/src/libstrongswan/plugins/plugin_loader.c @@ -46,6 +46,9 @@ typedef struct plugin_entry_t plugin_entry_t; * Statically registered constructors */ static hashtable_t *plugin_constructors = NULL; + +#elif !defined(HAVE_DLADDR) +#error Neither dynamic linking nor static plugin constructors are supported! #endif /** @@ -373,13 +376,12 @@ static status_t create_plugin(private_plugin_loader_t *this, void *handle, { constructor = plugin_constructors->get(plugin_constructors, name); } -#elif defined(HAVE_DLADDR) +#endif +#ifdef HAVE_DLADDR if (!constructor) { constructor = dlsym(handle, create); } -#else - #error Neither dynamic linking nor static plugin constructors are supported! #endif if (!constructor) { From d087c349b461f1007d6a4e608e6aa2ca18756c8a Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Mon, 11 Aug 2025 16:28:14 +0200 Subject: [PATCH 2/4] plugin: Add macro to define plugin version and constructor --- src/libstrongswan/plugins/plugin.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/libstrongswan/plugins/plugin.h b/src/libstrongswan/plugins/plugin.h index a6387a46b..dbb8f7b6f 100644 --- a/src/libstrongswan/plugins/plugin.h +++ b/src/libstrongswan/plugins/plugin.h @@ -1,4 +1,5 @@ /* + * Copyright (C) 2010-2025 Tobias Brunner * Copyright (C) 2008 Martin Willi * * Copyright (C) secunet Security Networks AG @@ -63,7 +64,6 @@ struct plugin_t { void (*destroy)(plugin_t *this); }; - /** * Plugin constructor function definition. * @@ -75,4 +75,11 @@ struct plugin_t { */ typedef plugin_t *(*plugin_constructor_t)(void); +/** + * Macro to simplify defining a plugin version and constructor. + */ +#define PLUGIN_DEFINE(name) \ + const char *name##_plugin_version = VERSION; \ + plugin_t *name##_plugin_create() + #endif /** PLUGIN_H_ @}*/ From 5cab5672e7288aeb3da81eec989e995cb20d4b08 Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Mon, 11 Aug 2025 16:35:32 +0200 Subject: [PATCH 3/4] Define plugin version in all existing plugins --- src/libcharon/plugins/addrblock/addrblock_plugin.c | 2 +- src/libcharon/plugins/android_dns/android_dns_plugin.c | 2 +- src/libcharon/plugins/android_log/android_log_plugin.c | 2 +- src/libcharon/plugins/attr/attr_plugin.c | 2 +- src/libcharon/plugins/attr_sql/attr_sql_plugin.c | 2 +- src/libcharon/plugins/bypass_lan/bypass_lan_plugin.c | 2 +- src/libcharon/plugins/certexpire/certexpire_plugin.c | 2 +- src/libcharon/plugins/connmark/connmark_plugin.c | 2 +- src/libcharon/plugins/counters/counters_plugin.c | 2 +- src/libcharon/plugins/coupling/coupling_plugin.c | 2 +- src/libcharon/plugins/dhcp/dhcp_plugin.c | 2 +- src/libcharon/plugins/dnscert/dnscert_plugin.c | 2 +- src/libcharon/plugins/duplicheck/duplicheck_plugin.c | 2 +- src/libcharon/plugins/eap_aka/eap_aka_plugin.c | 2 +- src/libcharon/plugins/eap_aka_3gpp/eap_aka_3gpp_plugin.c | 2 +- src/libcharon/plugins/eap_aka_3gpp2/eap_aka_3gpp2_plugin.c | 2 +- src/libcharon/plugins/eap_dynamic/eap_dynamic_plugin.c | 2 +- src/libcharon/plugins/eap_gtc/eap_gtc_plugin.c | 2 +- src/libcharon/plugins/eap_identity/eap_identity_plugin.c | 2 +- src/libcharon/plugins/eap_md5/eap_md5_plugin.c | 2 +- src/libcharon/plugins/eap_mschapv2/eap_mschapv2_plugin.c | 2 +- src/libcharon/plugins/eap_peap/eap_peap_plugin.c | 2 +- src/libcharon/plugins/eap_radius/eap_radius_plugin.c | 2 +- src/libcharon/plugins/eap_sim/eap_sim_plugin.c | 2 +- src/libcharon/plugins/eap_sim_file/eap_sim_file_plugin.c | 2 +- src/libcharon/plugins/eap_sim_pcsc/eap_sim_pcsc_plugin.c | 2 +- .../plugins/eap_simaka_pseudonym/eap_simaka_pseudonym_plugin.c | 2 +- .../plugins/eap_simaka_reauth/eap_simaka_reauth_plugin.c | 2 +- src/libcharon/plugins/eap_simaka_sql/eap_simaka_sql_plugin.c | 2 +- src/libcharon/plugins/eap_tls/eap_tls_plugin.c | 2 +- src/libcharon/plugins/eap_tnc/eap_tnc_plugin.c | 2 +- src/libcharon/plugins/eap_ttls/eap_ttls_plugin.c | 2 +- src/libcharon/plugins/error_notify/error_notify_plugin.c | 2 +- src/libcharon/plugins/ext_auth/ext_auth_plugin.c | 2 +- src/libcharon/plugins/farp/farp_plugin.c | 2 +- src/libcharon/plugins/forecast/forecast_plugin.c | 2 +- src/libcharon/plugins/ha/ha_plugin.c | 2 +- src/libcharon/plugins/ipseckey/ipseckey_plugin.c | 2 +- src/libcharon/plugins/kernel_iph/kernel_iph_plugin.c | 2 +- src/libcharon/plugins/kernel_libipsec/kernel_libipsec_plugin.c | 2 +- src/libcharon/plugins/kernel_netlink/kernel_netlink_plugin.c | 2 +- src/libcharon/plugins/kernel_pfkey/kernel_pfkey_plugin.c | 2 +- src/libcharon/plugins/kernel_pfroute/kernel_pfroute_plugin.c | 2 +- src/libcharon/plugins/kernel_wfp/kernel_wfp_plugin.c | 2 +- src/libcharon/plugins/led/led_plugin.c | 2 +- src/libcharon/plugins/load_tester/load_tester_plugin.c | 2 +- src/libcharon/plugins/lookip/lookip_plugin.c | 2 +- src/libcharon/plugins/medcli/medcli_plugin.c | 2 +- src/libcharon/plugins/medsrv/medsrv_plugin.c | 2 +- src/libcharon/plugins/osx_attr/osx_attr_plugin.c | 2 +- src/libcharon/plugins/p_cscf/p_cscf_plugin.c | 2 +- src/libcharon/plugins/radattr/radattr_plugin.c | 2 +- src/libcharon/plugins/resolve/resolve_plugin.c | 2 +- src/libcharon/plugins/save_keys/save_keys_plugin.c | 2 +- src/libcharon/plugins/selinux/selinux_plugin.c | 2 +- src/libcharon/plugins/smp/smp.c | 2 +- src/libcharon/plugins/socket_default/socket_default_plugin.c | 2 +- src/libcharon/plugins/socket_dynamic/socket_dynamic_plugin.c | 2 +- src/libcharon/plugins/socket_win/socket_win_plugin.c | 2 +- src/libcharon/plugins/sql/sql_plugin.c | 2 +- src/libcharon/plugins/stroke/stroke_plugin.c | 2 +- src/libcharon/plugins/systime_fix/systime_fix_plugin.c | 2 +- src/libcharon/plugins/tnc_ifmap/tnc_ifmap_plugin.c | 2 +- src/libcharon/plugins/tnc_pdp/tnc_pdp_plugin.c | 2 +- src/libcharon/plugins/unity/unity_plugin.c | 2 +- src/libcharon/plugins/updown/updown_plugin.c | 2 +- src/libcharon/plugins/vici/vici_plugin.c | 2 +- src/libcharon/plugins/whitelist/whitelist_plugin.c | 2 +- src/libcharon/plugins/xauth_eap/xauth_eap_plugin.c | 2 +- src/libcharon/plugins/xauth_generic/xauth_generic_plugin.c | 2 +- src/libcharon/plugins/xauth_noauth/xauth_noauth_plugin.c | 2 +- src/libcharon/plugins/xauth_pam/xauth_pam_plugin.c | 2 +- src/libstrongswan/plugins/acert/acert_plugin.c | 2 +- src/libstrongswan/plugins/aes/aes_plugin.c | 2 +- src/libstrongswan/plugins/aesni/aesni_plugin.c | 2 +- src/libstrongswan/plugins/af_alg/af_alg_plugin.c | 2 +- src/libstrongswan/plugins/agent/agent_plugin.c | 2 +- src/libstrongswan/plugins/blowfish/blowfish_plugin.c | 2 +- src/libstrongswan/plugins/botan/botan_plugin.c | 2 +- src/libstrongswan/plugins/ccm/ccm_plugin.c | 2 +- src/libstrongswan/plugins/chapoly/chapoly_plugin.c | 2 +- src/libstrongswan/plugins/cmac/cmac_plugin.c | 2 +- src/libstrongswan/plugins/constraints/constraints_plugin.c | 2 +- src/libstrongswan/plugins/ctr/ctr_plugin.c | 2 +- src/libstrongswan/plugins/curl/curl_plugin.c | 2 +- src/libstrongswan/plugins/curve25519/curve25519_plugin.c | 2 +- src/libstrongswan/plugins/des/des_plugin.c | 2 +- src/libstrongswan/plugins/dnskey/dnskey_plugin.c | 2 +- src/libstrongswan/plugins/drbg/drbg_plugin.c | 2 +- src/libstrongswan/plugins/files/files_plugin.c | 2 +- src/libstrongswan/plugins/fips_prf/fips_prf_plugin.c | 2 +- src/libstrongswan/plugins/gcm/gcm_plugin.c | 2 +- src/libstrongswan/plugins/gcrypt/gcrypt_plugin.c | 2 +- src/libstrongswan/plugins/gmp/gmp_plugin.c | 2 +- src/libstrongswan/plugins/hmac/hmac_plugin.c | 2 +- src/libstrongswan/plugins/kdf/kdf_plugin.c | 2 +- src/libstrongswan/plugins/keychain/keychain_plugin.c | 2 +- src/libstrongswan/plugins/ldap/ldap_plugin.c | 2 +- src/libstrongswan/plugins/md4/md4_plugin.c | 2 +- src/libstrongswan/plugins/md5/md5_plugin.c | 2 +- src/libstrongswan/plugins/mgf1/mgf1_plugin.c | 2 +- src/libstrongswan/plugins/ml/ml_plugin.c | 2 +- src/libstrongswan/plugins/mysql/mysql_plugin.c | 2 +- src/libstrongswan/plugins/nonce/nonce_plugin.c | 2 +- src/libstrongswan/plugins/openssl/openssl_plugin.c | 2 +- src/libstrongswan/plugins/openxpki/openxpki_plugin.c | 2 +- src/libstrongswan/plugins/padlock/padlock_plugin.c | 2 +- src/libstrongswan/plugins/pem/pem_plugin.c | 2 +- src/libstrongswan/plugins/pgp/pgp_plugin.c | 2 +- src/libstrongswan/plugins/pkcs1/pkcs1_plugin.c | 2 +- src/libstrongswan/plugins/pkcs11/pkcs11_plugin.c | 2 +- src/libstrongswan/plugins/pkcs12/pkcs12_plugin.c | 2 +- src/libstrongswan/plugins/pkcs7/pkcs7_plugin.c | 2 +- src/libstrongswan/plugins/pkcs8/pkcs8_plugin.c | 2 +- src/libstrongswan/plugins/pubkey/pubkey_plugin.c | 2 +- src/libstrongswan/plugins/random/random_plugin.c | 2 +- src/libstrongswan/plugins/rc2/rc2_plugin.c | 2 +- src/libstrongswan/plugins/rdrand/rdrand_plugin.c | 2 +- src/libstrongswan/plugins/revocation/revocation_plugin.c | 2 +- src/libstrongswan/plugins/sha1/sha1_plugin.c | 2 +- src/libstrongswan/plugins/sha2/sha2_plugin.c | 2 +- src/libstrongswan/plugins/sha3/sha3_plugin.c | 3 +-- src/libstrongswan/plugins/soup/soup_plugin.c | 2 +- src/libstrongswan/plugins/sqlite/sqlite_plugin.c | 2 +- src/libstrongswan/plugins/sshkey/sshkey_plugin.c | 2 +- src/libstrongswan/plugins/test_vectors/test_vectors_plugin.c | 2 +- src/libstrongswan/plugins/unbound/unbound_plugin.c | 2 +- src/libstrongswan/plugins/winhttp/winhttp_plugin.c | 2 +- src/libstrongswan/plugins/wolfssl/wolfssl_plugin.c | 2 +- src/libstrongswan/plugins/x509/x509_plugin.c | 2 +- src/libstrongswan/plugins/xcbc/xcbc_plugin.c | 2 +- src/libtnccs/plugins/tnc_imc/tnc_imc_plugin.c | 2 +- src/libtnccs/plugins/tnc_imv/tnc_imv_plugin.c | 2 +- src/libtnccs/plugins/tnc_tnccs/tnc_tnccs_plugin.c | 2 +- src/libtnccs/plugins/tnccs_11/tnccs_11_plugin.c | 2 +- src/libtnccs/plugins/tnccs_20/tnccs_20_plugin.c | 2 +- src/libtnccs/plugins/tnccs_dynamic/tnccs_dynamic_plugin.c | 2 +- src/libtpmtss/plugins/tpm/tpm_plugin.c | 2 +- 138 files changed, 138 insertions(+), 139 deletions(-) diff --git a/src/libcharon/plugins/addrblock/addrblock_plugin.c b/src/libcharon/plugins/addrblock/addrblock_plugin.c index 70693f865..296e1fb42 100644 --- a/src/libcharon/plugins/addrblock/addrblock_plugin.c +++ b/src/libcharon/plugins/addrblock/addrblock_plugin.c @@ -94,7 +94,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *addrblock_plugin_create() +PLUGIN_DEFINE(addrblock) { private_addrblock_plugin_t *this; diff --git a/src/libcharon/plugins/android_dns/android_dns_plugin.c b/src/libcharon/plugins/android_dns/android_dns_plugin.c index f94a6a892..bde0656b0 100644 --- a/src/libcharon/plugins/android_dns/android_dns_plugin.c +++ b/src/libcharon/plugins/android_dns/android_dns_plugin.c @@ -83,7 +83,7 @@ METHOD(plugin_t, destroy, void, /** * See header */ -plugin_t *android_dns_plugin_create() +PLUGIN_DEFINE(android_dns) { private_android_dns_plugin_t *this; diff --git a/src/libcharon/plugins/android_log/android_log_plugin.c b/src/libcharon/plugins/android_log/android_log_plugin.c index 4648da61a..ed4297481 100644 --- a/src/libcharon/plugins/android_log/android_log_plugin.c +++ b/src/libcharon/plugins/android_log/android_log_plugin.c @@ -66,7 +66,7 @@ METHOD(plugin_t, destroy, void, /** * See header */ -plugin_t *android_log_plugin_create() +PLUGIN_DEFINE(android_log) { private_android_log_plugin_t *this; diff --git a/src/libcharon/plugins/attr/attr_plugin.c b/src/libcharon/plugins/attr/attr_plugin.c index 3c895d7af..63a0ab04e 100644 --- a/src/libcharon/plugins/attr/attr_plugin.c +++ b/src/libcharon/plugins/attr/attr_plugin.c @@ -90,7 +90,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *attr_plugin_create() +PLUGIN_DEFINE(attr) { private_attr_plugin_t *this; diff --git a/src/libcharon/plugins/attr_sql/attr_sql_plugin.c b/src/libcharon/plugins/attr_sql/attr_sql_plugin.c index 824fc39c4..2425c8cde 100644 --- a/src/libcharon/plugins/attr_sql/attr_sql_plugin.c +++ b/src/libcharon/plugins/attr_sql/attr_sql_plugin.c @@ -110,7 +110,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *attr_sql_plugin_create() +PLUGIN_DEFINE(attr_sql) { private_attr_sql_plugin_t *this; diff --git a/src/libcharon/plugins/bypass_lan/bypass_lan_plugin.c b/src/libcharon/plugins/bypass_lan/bypass_lan_plugin.c index 5935aeaeb..a46167af5 100644 --- a/src/libcharon/plugins/bypass_lan/bypass_lan_plugin.c +++ b/src/libcharon/plugins/bypass_lan/bypass_lan_plugin.c @@ -90,7 +90,7 @@ METHOD(plugin_t, destroy, void, /** * Plugin constructor */ -plugin_t *bypass_lan_plugin_create() +PLUGIN_DEFINE(bypass_lan) { private_bypass_lan_plugin_t *this; diff --git a/src/libcharon/plugins/certexpire/certexpire_plugin.c b/src/libcharon/plugins/certexpire/certexpire_plugin.c index a7ecb11eb..9d312e7b0 100644 --- a/src/libcharon/plugins/certexpire/certexpire_plugin.c +++ b/src/libcharon/plugins/certexpire/certexpire_plugin.c @@ -89,7 +89,7 @@ METHOD(plugin_t, destroy, void, /** * Plugin constructor */ -plugin_t *certexpire_plugin_create() +PLUGIN_DEFINE(certexpire) { private_certexpire_plugin_t *this; diff --git a/src/libcharon/plugins/connmark/connmark_plugin.c b/src/libcharon/plugins/connmark/connmark_plugin.c index 013c59778..cf0636b5a 100644 --- a/src/libcharon/plugins/connmark/connmark_plugin.c +++ b/src/libcharon/plugins/connmark/connmark_plugin.c @@ -81,7 +81,7 @@ METHOD(plugin_t, destroy, void, /** * Plugin constructor */ -plugin_t *connmark_plugin_create() +PLUGIN_DEFINE(connmark) { private_connmark_plugin_t *this; diff --git a/src/libcharon/plugins/counters/counters_plugin.c b/src/libcharon/plugins/counters/counters_plugin.c index 3e1ecbbbc..6b5dac20f 100644 --- a/src/libcharon/plugins/counters/counters_plugin.c +++ b/src/libcharon/plugins/counters/counters_plugin.c @@ -83,7 +83,7 @@ METHOD(plugin_t, destroy, void, /* * Described in header */ -plugin_t *counters_plugin_create() +PLUGIN_DEFINE(counters) { private_counters_plugin_t *this; diff --git a/src/libcharon/plugins/coupling/coupling_plugin.c b/src/libcharon/plugins/coupling/coupling_plugin.c index d09dedc70..cb8911a4e 100644 --- a/src/libcharon/plugins/coupling/coupling_plugin.c +++ b/src/libcharon/plugins/coupling/coupling_plugin.c @@ -92,7 +92,7 @@ METHOD(plugin_t, destroy, void, /** * Plugin constructor */ -plugin_t *coupling_plugin_create() +PLUGIN_DEFINE(coupling) { private_coupling_plugin_t *this; diff --git a/src/libcharon/plugins/dhcp/dhcp_plugin.c b/src/libcharon/plugins/dhcp/dhcp_plugin.c index 9d7bb1a05..03cafe821 100644 --- a/src/libcharon/plugins/dhcp/dhcp_plugin.c +++ b/src/libcharon/plugins/dhcp/dhcp_plugin.c @@ -101,7 +101,7 @@ METHOD(plugin_t, destroy, void, /** * Plugin constructor. */ -plugin_t *dhcp_plugin_create() +PLUGIN_DEFINE(dhcp) { private_dhcp_plugin_t *this; diff --git a/src/libcharon/plugins/dnscert/dnscert_plugin.c b/src/libcharon/plugins/dnscert/dnscert_plugin.c index 44ff0ddb3..92c2bc111 100644 --- a/src/libcharon/plugins/dnscert/dnscert_plugin.c +++ b/src/libcharon/plugins/dnscert/dnscert_plugin.c @@ -148,7 +148,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *dnscert_plugin_create() +PLUGIN_DEFINE(dnscert) { private_dnscert_plugin_t *this; diff --git a/src/libcharon/plugins/duplicheck/duplicheck_plugin.c b/src/libcharon/plugins/duplicheck/duplicheck_plugin.c index 5cc0b45b0..dabced096 100644 --- a/src/libcharon/plugins/duplicheck/duplicheck_plugin.c +++ b/src/libcharon/plugins/duplicheck/duplicheck_plugin.c @@ -89,7 +89,7 @@ METHOD(plugin_t, destroy, void, /** * Plugin constructor */ -plugin_t *duplicheck_plugin_create() +PLUGIN_DEFINE(duplicheck) { private_duplicheck_plugin_t *this; diff --git a/src/libcharon/plugins/eap_aka/eap_aka_plugin.c b/src/libcharon/plugins/eap_aka/eap_aka_plugin.c index f0167ee5d..070aef11b 100644 --- a/src/libcharon/plugins/eap_aka/eap_aka_plugin.c +++ b/src/libcharon/plugins/eap_aka/eap_aka_plugin.c @@ -81,7 +81,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *eap_aka_plugin_create() +PLUGIN_DEFINE(eap_aka) { private_eap_aka_plugin_t *this; diff --git a/src/libcharon/plugins/eap_aka_3gpp/eap_aka_3gpp_plugin.c b/src/libcharon/plugins/eap_aka_3gpp/eap_aka_3gpp_plugin.c index 38a82ea78..9f7ba2b0f 100644 --- a/src/libcharon/plugins/eap_aka_3gpp/eap_aka_3gpp_plugin.c +++ b/src/libcharon/plugins/eap_aka_3gpp/eap_aka_3gpp_plugin.c @@ -147,7 +147,7 @@ METHOD(plugin_t, destroy, void, private_eap_aka_3gpp_t *this) /** * See header */ -plugin_t *eap_aka_3gpp_plugin_create() +PLUGIN_DEFINE(eap_aka_3gpp) { private_eap_aka_3gpp_t *this; diff --git a/src/libcharon/plugins/eap_aka_3gpp2/eap_aka_3gpp2_plugin.c b/src/libcharon/plugins/eap_aka_3gpp2/eap_aka_3gpp2_plugin.c index 7b9c7d544..00f924ce0 100644 --- a/src/libcharon/plugins/eap_aka_3gpp2/eap_aka_3gpp2_plugin.c +++ b/src/libcharon/plugins/eap_aka_3gpp2/eap_aka_3gpp2_plugin.c @@ -126,7 +126,7 @@ METHOD(plugin_t, destroy, void, /** * See header */ -plugin_t *eap_aka_3gpp2_plugin_create() +PLUGIN_DEFINE(eap_aka_3gpp2) { private_eap_aka_3gpp2_t *this; diff --git a/src/libcharon/plugins/eap_dynamic/eap_dynamic_plugin.c b/src/libcharon/plugins/eap_dynamic/eap_dynamic_plugin.c index 2c2fd09af..65c336ce3 100644 --- a/src/libcharon/plugins/eap_dynamic/eap_dynamic_plugin.c +++ b/src/libcharon/plugins/eap_dynamic/eap_dynamic_plugin.c @@ -46,7 +46,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *eap_dynamic_plugin_create() +PLUGIN_DEFINE(eap_dynamic) { eap_dynamic_plugin_t *this; diff --git a/src/libcharon/plugins/eap_gtc/eap_gtc_plugin.c b/src/libcharon/plugins/eap_gtc/eap_gtc_plugin.c index 02be5a76d..d10a63b9b 100644 --- a/src/libcharon/plugins/eap_gtc/eap_gtc_plugin.c +++ b/src/libcharon/plugins/eap_gtc/eap_gtc_plugin.c @@ -48,7 +48,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *eap_gtc_plugin_create() +PLUGIN_DEFINE(eap_gtc) { eap_gtc_plugin_t *this; diff --git a/src/libcharon/plugins/eap_identity/eap_identity_plugin.c b/src/libcharon/plugins/eap_identity/eap_identity_plugin.c index ee90ac8ee..6977760af 100644 --- a/src/libcharon/plugins/eap_identity/eap_identity_plugin.c +++ b/src/libcharon/plugins/eap_identity/eap_identity_plugin.c @@ -47,7 +47,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *eap_identity_plugin_create() +PLUGIN_DEFINE(eap_identity) { eap_identity_plugin_t *this; diff --git a/src/libcharon/plugins/eap_md5/eap_md5_plugin.c b/src/libcharon/plugins/eap_md5/eap_md5_plugin.c index fa96d5b58..60b682a2f 100644 --- a/src/libcharon/plugins/eap_md5/eap_md5_plugin.c +++ b/src/libcharon/plugins/eap_md5/eap_md5_plugin.c @@ -51,7 +51,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *eap_md5_plugin_create() +PLUGIN_DEFINE(eap_md5) { eap_md5_plugin_t *this; diff --git a/src/libcharon/plugins/eap_mschapv2/eap_mschapv2_plugin.c b/src/libcharon/plugins/eap_mschapv2/eap_mschapv2_plugin.c index 36df791cc..a5b201fa9 100644 --- a/src/libcharon/plugins/eap_mschapv2/eap_mschapv2_plugin.c +++ b/src/libcharon/plugins/eap_mschapv2/eap_mschapv2_plugin.c @@ -56,7 +56,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *eap_mschapv2_plugin_create() +PLUGIN_DEFINE(eap_mschapv2) { eap_mschapv2_plugin_t *this; diff --git a/src/libcharon/plugins/eap_peap/eap_peap_plugin.c b/src/libcharon/plugins/eap_peap/eap_peap_plugin.c index 4ae9993e3..577e06200 100644 --- a/src/libcharon/plugins/eap_peap/eap_peap_plugin.c +++ b/src/libcharon/plugins/eap_peap/eap_peap_plugin.c @@ -57,7 +57,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *eap_peap_plugin_create() +PLUGIN_DEFINE(eap_peap) { eap_peap_plugin_t *this; diff --git a/src/libcharon/plugins/eap_radius/eap_radius_plugin.c b/src/libcharon/plugins/eap_radius/eap_radius_plugin.c index 55d5e032c..1197a901e 100644 --- a/src/libcharon/plugins/eap_radius/eap_radius_plugin.c +++ b/src/libcharon/plugins/eap_radius/eap_radius_plugin.c @@ -346,7 +346,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *eap_radius_plugin_create() +PLUGIN_DEFINE(eap_radius) { private_eap_radius_plugin_t *this; diff --git a/src/libcharon/plugins/eap_sim/eap_sim_plugin.c b/src/libcharon/plugins/eap_sim/eap_sim_plugin.c index b0cd5ff04..aa485702b 100644 --- a/src/libcharon/plugins/eap_sim/eap_sim_plugin.c +++ b/src/libcharon/plugins/eap_sim/eap_sim_plugin.c @@ -81,7 +81,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *eap_sim_plugin_create() +PLUGIN_DEFINE(eap_sim) { private_eap_sim_plugin_t *this; diff --git a/src/libcharon/plugins/eap_sim_file/eap_sim_file_plugin.c b/src/libcharon/plugins/eap_sim_file/eap_sim_file_plugin.c index 0a8b63161..549bca77c 100644 --- a/src/libcharon/plugins/eap_sim_file/eap_sim_file_plugin.c +++ b/src/libcharon/plugins/eap_sim_file/eap_sim_file_plugin.c @@ -127,7 +127,7 @@ METHOD(plugin_t, destroy, void, /** * See header */ -plugin_t *eap_sim_file_plugin_create() +PLUGIN_DEFINE(eap_sim_file) { private_eap_sim_file_t *this; diff --git a/src/libcharon/plugins/eap_sim_pcsc/eap_sim_pcsc_plugin.c b/src/libcharon/plugins/eap_sim_pcsc/eap_sim_pcsc_plugin.c index 898e85345..a3152d423 100644 --- a/src/libcharon/plugins/eap_sim_pcsc/eap_sim_pcsc_plugin.c +++ b/src/libcharon/plugins/eap_sim_pcsc/eap_sim_pcsc_plugin.c @@ -71,7 +71,7 @@ METHOD(plugin_t, destroy, void, /** * See header */ -plugin_t *eap_sim_pcsc_plugin_create() +PLUGIN_DEFINE(eap_sim_pcsc) { private_eap_sim_pcsc_plugin_t *this; diff --git a/src/libcharon/plugins/eap_simaka_pseudonym/eap_simaka_pseudonym_plugin.c b/src/libcharon/plugins/eap_simaka_pseudonym/eap_simaka_pseudonym_plugin.c index f0b1a04e6..c9863aa66 100644 --- a/src/libcharon/plugins/eap_simaka_pseudonym/eap_simaka_pseudonym_plugin.c +++ b/src/libcharon/plugins/eap_simaka_pseudonym/eap_simaka_pseudonym_plugin.c @@ -109,7 +109,7 @@ METHOD(plugin_t, destroy, void, /** * See header */ -plugin_t *eap_simaka_pseudonym_plugin_create() +PLUGIN_DEFINE(eap_simaka_pseudonym) { private_eap_simaka_pseudonym_t *this; diff --git a/src/libcharon/plugins/eap_simaka_reauth/eap_simaka_reauth_plugin.c b/src/libcharon/plugins/eap_simaka_reauth/eap_simaka_reauth_plugin.c index 9d30641b2..125dfa66e 100644 --- a/src/libcharon/plugins/eap_simaka_reauth/eap_simaka_reauth_plugin.c +++ b/src/libcharon/plugins/eap_simaka_reauth/eap_simaka_reauth_plugin.c @@ -109,7 +109,7 @@ METHOD(plugin_t, destroy, void, /** * See header */ -plugin_t *eap_simaka_reauth_plugin_create() +PLUGIN_DEFINE(eap_simaka_reauth) { private_eap_simaka_reauth_t *this; diff --git a/src/libcharon/plugins/eap_simaka_sql/eap_simaka_sql_plugin.c b/src/libcharon/plugins/eap_simaka_sql/eap_simaka_sql_plugin.c index 95998b4ca..0b25159f3 100644 --- a/src/libcharon/plugins/eap_simaka_sql/eap_simaka_sql_plugin.c +++ b/src/libcharon/plugins/eap_simaka_sql/eap_simaka_sql_plugin.c @@ -149,7 +149,7 @@ METHOD(plugin_t, destroy, void, /** * See header */ -plugin_t *eap_simaka_sql_plugin_create() +PLUGIN_DEFINE(eap_simaka_sql) { private_eap_simaka_sql_t *this; diff --git a/src/libcharon/plugins/eap_tls/eap_tls_plugin.c b/src/libcharon/plugins/eap_tls/eap_tls_plugin.c index cfc3b8c00..a65d98fe0 100644 --- a/src/libcharon/plugins/eap_tls/eap_tls_plugin.c +++ b/src/libcharon/plugins/eap_tls/eap_tls_plugin.c @@ -55,7 +55,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *eap_tls_plugin_create() +PLUGIN_DEFINE(eap_tls) { eap_tls_plugin_t *this; diff --git a/src/libcharon/plugins/eap_tnc/eap_tnc_plugin.c b/src/libcharon/plugins/eap_tnc/eap_tnc_plugin.c index c39f53149..0e181087f 100644 --- a/src/libcharon/plugins/eap_tnc/eap_tnc_plugin.c +++ b/src/libcharon/plugins/eap_tnc/eap_tnc_plugin.c @@ -59,7 +59,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *eap_tnc_plugin_create() +PLUGIN_DEFINE(eap_tnc) { eap_tnc_plugin_t *this; diff --git a/src/libcharon/plugins/eap_ttls/eap_ttls_plugin.c b/src/libcharon/plugins/eap_ttls/eap_ttls_plugin.c index e7f04d75b..c9cddf028 100644 --- a/src/libcharon/plugins/eap_ttls/eap_ttls_plugin.c +++ b/src/libcharon/plugins/eap_ttls/eap_ttls_plugin.c @@ -57,7 +57,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *eap_ttls_plugin_create() +PLUGIN_DEFINE(eap_ttls) { eap_ttls_plugin_t *this; diff --git a/src/libcharon/plugins/error_notify/error_notify_plugin.c b/src/libcharon/plugins/error_notify/error_notify_plugin.c index 200ba1a5e..fb5bdf077 100644 --- a/src/libcharon/plugins/error_notify/error_notify_plugin.c +++ b/src/libcharon/plugins/error_notify/error_notify_plugin.c @@ -89,7 +89,7 @@ METHOD(plugin_t, destroy, void, /** * Plugin constructor */ -plugin_t *error_notify_plugin_create() +PLUGIN_DEFINE(error_notify) { private_error_notify_plugin_t *this; diff --git a/src/libcharon/plugins/ext_auth/ext_auth_plugin.c b/src/libcharon/plugins/ext_auth/ext_auth_plugin.c index ec6113983..51f2b1c25 100644 --- a/src/libcharon/plugins/ext_auth/ext_auth_plugin.c +++ b/src/libcharon/plugins/ext_auth/ext_auth_plugin.c @@ -136,7 +136,7 @@ METHOD(plugin_t, destroy, void, /** * Plugin constructor */ -plugin_t *ext_auth_plugin_create() +PLUGIN_DEFINE(ext_auth) { private_ext_auth_plugin_t *this; diff --git a/src/libcharon/plugins/farp/farp_plugin.c b/src/libcharon/plugins/farp/farp_plugin.c index dd547ce68..e44c65574 100644 --- a/src/libcharon/plugins/farp/farp_plugin.c +++ b/src/libcharon/plugins/farp/farp_plugin.c @@ -89,7 +89,7 @@ METHOD(plugin_t, destroy, void, /** * Plugin constructor */ -plugin_t *farp_plugin_create() +PLUGIN_DEFINE(farp) { private_farp_plugin_t *this; diff --git a/src/libcharon/plugins/forecast/forecast_plugin.c b/src/libcharon/plugins/forecast/forecast_plugin.c index 511060577..49f6dd0f6 100644 --- a/src/libcharon/plugins/forecast/forecast_plugin.c +++ b/src/libcharon/plugins/forecast/forecast_plugin.c @@ -93,7 +93,7 @@ METHOD(plugin_t, destroy, void, /** * Plugin constructor */ -plugin_t *forecast_plugin_create() +PLUGIN_DEFINE(forecast) { private_forecast_plugin_t *this; diff --git a/src/libcharon/plugins/ha/ha_plugin.c b/src/libcharon/plugins/ha/ha_plugin.c index f67021b15..fc2814036 100644 --- a/src/libcharon/plugins/ha/ha_plugin.c +++ b/src/libcharon/plugins/ha/ha_plugin.c @@ -213,7 +213,7 @@ METHOD(plugin_t, destroy, void, /** * Plugin constructor */ -plugin_t *ha_plugin_create() +PLUGIN_DEFINE(ha) { private_ha_plugin_t *this; diff --git a/src/libcharon/plugins/ipseckey/ipseckey_plugin.c b/src/libcharon/plugins/ipseckey/ipseckey_plugin.c index 8db2df345..23c5c30eb 100644 --- a/src/libcharon/plugins/ipseckey/ipseckey_plugin.c +++ b/src/libcharon/plugins/ipseckey/ipseckey_plugin.c @@ -126,7 +126,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *ipseckey_plugin_create() +PLUGIN_DEFINE(ipseckey) { private_ipseckey_plugin_t *this; diff --git a/src/libcharon/plugins/kernel_iph/kernel_iph_plugin.c b/src/libcharon/plugins/kernel_iph/kernel_iph_plugin.c index ef999cc43..7ad84d110 100644 --- a/src/libcharon/plugins/kernel_iph/kernel_iph_plugin.c +++ b/src/libcharon/plugins/kernel_iph/kernel_iph_plugin.c @@ -57,7 +57,7 @@ METHOD(plugin_t, destroy, void, /* * See header file */ -plugin_t *kernel_iph_plugin_create() +PLUGIN_DEFINE(kernel_iph) { private_kernel_iph_plugin_t *this; diff --git a/src/libcharon/plugins/kernel_libipsec/kernel_libipsec_plugin.c b/src/libcharon/plugins/kernel_libipsec/kernel_libipsec_plugin.c index f539693eb..e7d0259af 100644 --- a/src/libcharon/plugins/kernel_libipsec/kernel_libipsec_plugin.c +++ b/src/libcharon/plugins/kernel_libipsec/kernel_libipsec_plugin.c @@ -110,7 +110,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *kernel_libipsec_plugin_create() +PLUGIN_DEFINE(kernel_libipsec) { private_kernel_libipsec_plugin_t *this; diff --git a/src/libcharon/plugins/kernel_netlink/kernel_netlink_plugin.c b/src/libcharon/plugins/kernel_netlink/kernel_netlink_plugin.c index de36b7714..5605942c4 100644 --- a/src/libcharon/plugins/kernel_netlink/kernel_netlink_plugin.c +++ b/src/libcharon/plugins/kernel_netlink/kernel_netlink_plugin.c @@ -82,7 +82,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *kernel_netlink_plugin_create() +PLUGIN_DEFINE(kernel_netlink) { private_kernel_netlink_plugin_t *this; diff --git a/src/libcharon/plugins/kernel_pfkey/kernel_pfkey_plugin.c b/src/libcharon/plugins/kernel_pfkey/kernel_pfkey_plugin.c index e0043fb3f..bed86c0e5 100644 --- a/src/libcharon/plugins/kernel_pfkey/kernel_pfkey_plugin.c +++ b/src/libcharon/plugins/kernel_pfkey/kernel_pfkey_plugin.c @@ -57,7 +57,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *kernel_pfkey_plugin_create() +PLUGIN_DEFINE(kernel_pfkey) { private_kernel_pfkey_plugin_t *this; diff --git a/src/libcharon/plugins/kernel_pfroute/kernel_pfroute_plugin.c b/src/libcharon/plugins/kernel_pfroute/kernel_pfroute_plugin.c index a334a14f3..442a6ed75 100644 --- a/src/libcharon/plugins/kernel_pfroute/kernel_pfroute_plugin.c +++ b/src/libcharon/plugins/kernel_pfroute/kernel_pfroute_plugin.c @@ -57,7 +57,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *kernel_pfroute_plugin_create() +PLUGIN_DEFINE(kernel_pfroute) { private_kernel_pfroute_plugin_t *this; diff --git a/src/libcharon/plugins/kernel_wfp/kernel_wfp_plugin.c b/src/libcharon/plugins/kernel_wfp/kernel_wfp_plugin.c index 6b6e56d17..b0e6cea71 100644 --- a/src/libcharon/plugins/kernel_wfp/kernel_wfp_plugin.c +++ b/src/libcharon/plugins/kernel_wfp/kernel_wfp_plugin.c @@ -60,7 +60,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *kernel_wfp_plugin_create() +PLUGIN_DEFINE(kernel_wfp) { private_kernel_wfp_plugin_t *this; diff --git a/src/libcharon/plugins/led/led_plugin.c b/src/libcharon/plugins/led/led_plugin.c index b88887d13..f4daec0ae 100644 --- a/src/libcharon/plugins/led/led_plugin.c +++ b/src/libcharon/plugins/led/led_plugin.c @@ -82,7 +82,7 @@ METHOD(plugin_t, destroy, void, /** * Plugin constructor */ -plugin_t *led_plugin_create() +PLUGIN_DEFINE(led) { private_led_plugin_t *this; diff --git a/src/libcharon/plugins/load_tester/load_tester_plugin.c b/src/libcharon/plugins/load_tester/load_tester_plugin.c index 695e75b83..a7a8d0c94 100644 --- a/src/libcharon/plugins/load_tester/load_tester_plugin.c +++ b/src/libcharon/plugins/load_tester/load_tester_plugin.c @@ -266,7 +266,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *load_tester_plugin_create() +PLUGIN_DEFINE(load_tester) { private_load_tester_plugin_t *this; diff --git a/src/libcharon/plugins/lookip/lookip_plugin.c b/src/libcharon/plugins/lookip/lookip_plugin.c index c9f4c6a59..4158c9f90 100644 --- a/src/libcharon/plugins/lookip/lookip_plugin.c +++ b/src/libcharon/plugins/lookip/lookip_plugin.c @@ -89,7 +89,7 @@ METHOD(plugin_t, destroy, void, /** * Plugin constructor */ -plugin_t *lookip_plugin_create() +PLUGIN_DEFINE(lookip) { private_lookip_plugin_t *this; diff --git a/src/libcharon/plugins/medcli/medcli_plugin.c b/src/libcharon/plugins/medcli/medcli_plugin.c index b38b61804..b5cbe7da3 100644 --- a/src/libcharon/plugins/medcli/medcli_plugin.c +++ b/src/libcharon/plugins/medcli/medcli_plugin.c @@ -129,7 +129,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *medcli_plugin_create() +PLUGIN_DEFINE(medcli) { private_medcli_plugin_t *this; diff --git a/src/libcharon/plugins/medsrv/medsrv_plugin.c b/src/libcharon/plugins/medsrv/medsrv_plugin.c index b94605c52..2ffd5e5f1 100644 --- a/src/libcharon/plugins/medsrv/medsrv_plugin.c +++ b/src/libcharon/plugins/medsrv/medsrv_plugin.c @@ -119,7 +119,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *medsrv_plugin_create() +PLUGIN_DEFINE(medsrv) { private_medsrv_plugin_t *this; diff --git a/src/libcharon/plugins/osx_attr/osx_attr_plugin.c b/src/libcharon/plugins/osx_attr/osx_attr_plugin.c index 0f3010a6e..1588a6b98 100644 --- a/src/libcharon/plugins/osx_attr/osx_attr_plugin.c +++ b/src/libcharon/plugins/osx_attr/osx_attr_plugin.c @@ -83,7 +83,7 @@ METHOD(plugin_t, destroy, void, /** * See header */ -plugin_t *osx_attr_plugin_create() +PLUGIN_DEFINE(osx_attr) { private_osx_attr_plugin_t *this; diff --git a/src/libcharon/plugins/p_cscf/p_cscf_plugin.c b/src/libcharon/plugins/p_cscf/p_cscf_plugin.c index 838637013..fb9c10785 100644 --- a/src/libcharon/plugins/p_cscf/p_cscf_plugin.c +++ b/src/libcharon/plugins/p_cscf/p_cscf_plugin.c @@ -83,7 +83,7 @@ METHOD(plugin_t, destroy, void, /** * See header */ -plugin_t *p_cscf_plugin_create() +PLUGIN_DEFINE(p_cscf) { private_p_cscf_plugin_t *this; diff --git a/src/libcharon/plugins/radattr/radattr_plugin.c b/src/libcharon/plugins/radattr/radattr_plugin.c index 54c4a2a05..a6f247e33 100644 --- a/src/libcharon/plugins/radattr/radattr_plugin.c +++ b/src/libcharon/plugins/radattr/radattr_plugin.c @@ -82,7 +82,7 @@ METHOD(plugin_t, destroy, void, /** * Plugin constructor */ -plugin_t *radattr_plugin_create() +PLUGIN_DEFINE(radattr) { private_radattr_plugin_t *this; diff --git a/src/libcharon/plugins/resolve/resolve_plugin.c b/src/libcharon/plugins/resolve/resolve_plugin.c index 60164e2c5..ee5fc4235 100644 --- a/src/libcharon/plugins/resolve/resolve_plugin.c +++ b/src/libcharon/plugins/resolve/resolve_plugin.c @@ -83,7 +83,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *resolve_plugin_create() +PLUGIN_DEFINE(resolve) { private_resolve_plugin_t *this; diff --git a/src/libcharon/plugins/save_keys/save_keys_plugin.c b/src/libcharon/plugins/save_keys/save_keys_plugin.c index 93db5bcac..d0c5858f0 100644 --- a/src/libcharon/plugins/save_keys/save_keys_plugin.c +++ b/src/libcharon/plugins/save_keys/save_keys_plugin.c @@ -88,7 +88,7 @@ METHOD(plugin_t, destroy, void, /** * Plugin constructor. */ -plugin_t *save_keys_plugin_create() +PLUGIN_DEFINE(save_keys) { private_save_keys_plugin_t *this; diff --git a/src/libcharon/plugins/selinux/selinux_plugin.c b/src/libcharon/plugins/selinux/selinux_plugin.c index 520fae5ff..3a96189b4 100644 --- a/src/libcharon/plugins/selinux/selinux_plugin.c +++ b/src/libcharon/plugins/selinux/selinux_plugin.c @@ -81,7 +81,7 @@ METHOD(plugin_t, destroy, void, /* * Described in header */ -plugin_t *selinux_plugin_create() +PLUGIN_DEFINE(selinux) { private_selinux_plugin_t *this; diff --git a/src/libcharon/plugins/smp/smp.c b/src/libcharon/plugins/smp/smp.c index d2afea708..eaff8da7e 100644 --- a/src/libcharon/plugins/smp/smp.c +++ b/src/libcharon/plugins/smp/smp.c @@ -741,7 +741,7 @@ METHOD(plugin_t, destroy, void, /* * Described in header file */ -plugin_t *smp_plugin_create() +PLUGIN_DEFINE(smp) { struct sockaddr_un unix_addr = { AF_UNIX, IPSEC_PIDDIR "/charon.xml"}; private_smp_t *this; diff --git a/src/libcharon/plugins/socket_default/socket_default_plugin.c b/src/libcharon/plugins/socket_default/socket_default_plugin.c index dd987b224..dd0291f01 100644 --- a/src/libcharon/plugins/socket_default/socket_default_plugin.c +++ b/src/libcharon/plugins/socket_default/socket_default_plugin.c @@ -61,7 +61,7 @@ METHOD(plugin_t, get_features, int, /* * see header file */ -plugin_t *socket_default_plugin_create() +PLUGIN_DEFINE(socket_default) { private_socket_default_plugin_t *this; diff --git a/src/libcharon/plugins/socket_dynamic/socket_dynamic_plugin.c b/src/libcharon/plugins/socket_dynamic/socket_dynamic_plugin.c index a5888cc44..13bf35ef5 100644 --- a/src/libcharon/plugins/socket_dynamic/socket_dynamic_plugin.c +++ b/src/libcharon/plugins/socket_dynamic/socket_dynamic_plugin.c @@ -61,7 +61,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *socket_dynamic_plugin_create() +PLUGIN_DEFINE(socket_dynamic) { private_socket_dynamic_plugin_t *this; diff --git a/src/libcharon/plugins/socket_win/socket_win_plugin.c b/src/libcharon/plugins/socket_win/socket_win_plugin.c index 34aebdd7b..0dc6648a9 100644 --- a/src/libcharon/plugins/socket_win/socket_win_plugin.c +++ b/src/libcharon/plugins/socket_win/socket_win_plugin.c @@ -59,7 +59,7 @@ METHOD(plugin_t, get_features, int, /** * Create instance of socket-win plugin */ -plugin_t *socket_win_plugin_create() +PLUGIN_DEFINE(socket_win) { private_socket_win_plugin_t *this; diff --git a/src/libcharon/plugins/sql/sql_plugin.c b/src/libcharon/plugins/sql/sql_plugin.c index 6c93a63b9..020637a4c 100644 --- a/src/libcharon/plugins/sql/sql_plugin.c +++ b/src/libcharon/plugins/sql/sql_plugin.c @@ -130,7 +130,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *sql_plugin_create() +PLUGIN_DEFINE(sql) { private_sql_plugin_t *this; diff --git a/src/libcharon/plugins/stroke/stroke_plugin.c b/src/libcharon/plugins/stroke/stroke_plugin.c index b81da396c..221ea6fda 100644 --- a/src/libcharon/plugins/stroke/stroke_plugin.c +++ b/src/libcharon/plugins/stroke/stroke_plugin.c @@ -92,7 +92,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *stroke_plugin_create() +PLUGIN_DEFINE(stroke) { private_stroke_plugin_t *this; diff --git a/src/libcharon/plugins/systime_fix/systime_fix_plugin.c b/src/libcharon/plugins/systime_fix/systime_fix_plugin.c index bbebf82da..a05041ae1 100644 --- a/src/libcharon/plugins/systime_fix/systime_fix_plugin.c +++ b/src/libcharon/plugins/systime_fix/systime_fix_plugin.c @@ -294,7 +294,7 @@ METHOD(plugin_t, destroy, void, /** * Plugin constructor */ -plugin_t *systime_fix_plugin_create() +PLUGIN_DEFINE(systime_fix) { private_systime_fix_plugin_t *this; diff --git a/src/libcharon/plugins/tnc_ifmap/tnc_ifmap_plugin.c b/src/libcharon/plugins/tnc_ifmap/tnc_ifmap_plugin.c index bd806fada..af97ccc05 100644 --- a/src/libcharon/plugins/tnc_ifmap/tnc_ifmap_plugin.c +++ b/src/libcharon/plugins/tnc_ifmap/tnc_ifmap_plugin.c @@ -111,7 +111,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *tnc_ifmap_plugin_create() +PLUGIN_DEFINE(tnc_ifmap) { private_tnc_ifmap_plugin_t *this; diff --git a/src/libcharon/plugins/tnc_pdp/tnc_pdp_plugin.c b/src/libcharon/plugins/tnc_pdp/tnc_pdp_plugin.c index c42b991c7..737d2bfb6 100644 --- a/src/libcharon/plugins/tnc_pdp/tnc_pdp_plugin.c +++ b/src/libcharon/plugins/tnc_pdp/tnc_pdp_plugin.c @@ -89,7 +89,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *tnc_pdp_plugin_create() +PLUGIN_DEFINE(tnc_pdp) { private_tnc_pdp_plugin_t *this; diff --git a/src/libcharon/plugins/unity/unity_plugin.c b/src/libcharon/plugins/unity/unity_plugin.c index 1d309d818..679bc1d6c 100644 --- a/src/libcharon/plugins/unity/unity_plugin.c +++ b/src/libcharon/plugins/unity/unity_plugin.c @@ -104,7 +104,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *unity_plugin_create() +PLUGIN_DEFINE(unity) { private_unity_plugin_t *this; diff --git a/src/libcharon/plugins/updown/updown_plugin.c b/src/libcharon/plugins/updown/updown_plugin.c index 90e3376e6..4cd647b6b 100644 --- a/src/libcharon/plugins/updown/updown_plugin.c +++ b/src/libcharon/plugins/updown/updown_plugin.c @@ -101,7 +101,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *updown_plugin_create() +PLUGIN_DEFINE(updown) { private_updown_plugin_t *this; diff --git a/src/libcharon/plugins/vici/vici_plugin.c b/src/libcharon/plugins/vici/vici_plugin.c index d834140c6..e829f8acc 100644 --- a/src/libcharon/plugins/vici/vici_plugin.c +++ b/src/libcharon/plugins/vici/vici_plugin.c @@ -189,7 +189,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *vici_plugin_create() +PLUGIN_DEFINE(vici) { private_vici_plugin_t *this; diff --git a/src/libcharon/plugins/whitelist/whitelist_plugin.c b/src/libcharon/plugins/whitelist/whitelist_plugin.c index 253f8a840..5c05f6632 100644 --- a/src/libcharon/plugins/whitelist/whitelist_plugin.c +++ b/src/libcharon/plugins/whitelist/whitelist_plugin.c @@ -89,7 +89,7 @@ METHOD(plugin_t, destroy, void, /** * Plugin constructor */ -plugin_t *whitelist_plugin_create() +PLUGIN_DEFINE(whitelist) { private_whitelist_plugin_t *this; diff --git a/src/libcharon/plugins/xauth_eap/xauth_eap_plugin.c b/src/libcharon/plugins/xauth_eap/xauth_eap_plugin.c index 0f25577a2..9a2de0534 100644 --- a/src/libcharon/plugins/xauth_eap/xauth_eap_plugin.c +++ b/src/libcharon/plugins/xauth_eap/xauth_eap_plugin.c @@ -45,7 +45,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *xauth_eap_plugin_create() +PLUGIN_DEFINE(xauth_eap) { xauth_eap_plugin_t *this; diff --git a/src/libcharon/plugins/xauth_generic/xauth_generic_plugin.c b/src/libcharon/plugins/xauth_generic/xauth_generic_plugin.c index 549fc380c..2789754e2 100644 --- a/src/libcharon/plugins/xauth_generic/xauth_generic_plugin.c +++ b/src/libcharon/plugins/xauth_generic/xauth_generic_plugin.c @@ -47,7 +47,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *xauth_generic_plugin_create() +PLUGIN_DEFINE(xauth_generic) { xauth_generic_plugin_t *this; diff --git a/src/libcharon/plugins/xauth_noauth/xauth_noauth_plugin.c b/src/libcharon/plugins/xauth_noauth/xauth_noauth_plugin.c index 42b2de4e0..e529db451 100644 --- a/src/libcharon/plugins/xauth_noauth/xauth_noauth_plugin.c +++ b/src/libcharon/plugins/xauth_noauth/xauth_noauth_plugin.c @@ -45,7 +45,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *xauth_noauth_plugin_create() +PLUGIN_DEFINE(xauth_noauth) { xauth_noauth_plugin_t *this; diff --git a/src/libcharon/plugins/xauth_pam/xauth_pam_plugin.c b/src/libcharon/plugins/xauth_pam/xauth_pam_plugin.c index 0b71f2396..b001f3894 100644 --- a/src/libcharon/plugins/xauth_pam/xauth_pam_plugin.c +++ b/src/libcharon/plugins/xauth_pam/xauth_pam_plugin.c @@ -97,7 +97,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *xauth_pam_plugin_create() +PLUGIN_DEFINE(xauth_pam) { private_xauth_pam_plugin_t *this; diff --git a/src/libstrongswan/plugins/acert/acert_plugin.c b/src/libstrongswan/plugins/acert/acert_plugin.c index d025bc337..1f73a3cc8 100644 --- a/src/libstrongswan/plugins/acert/acert_plugin.c +++ b/src/libstrongswan/plugins/acert/acert_plugin.c @@ -81,7 +81,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *acert_plugin_create() +PLUGIN_DEFINE(acert) { private_acert_plugin_t *this; diff --git a/src/libstrongswan/plugins/aes/aes_plugin.c b/src/libstrongswan/plugins/aes/aes_plugin.c index 89a80557c..b02cc2c40 100644 --- a/src/libstrongswan/plugins/aes/aes_plugin.c +++ b/src/libstrongswan/plugins/aes/aes_plugin.c @@ -61,7 +61,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *aes_plugin_create() +PLUGIN_DEFINE(aes) { private_aes_plugin_t *this; diff --git a/src/libstrongswan/plugins/aesni/aesni_plugin.c b/src/libstrongswan/plugins/aesni/aesni_plugin.c index 245621297..77e715b86 100644 --- a/src/libstrongswan/plugins/aesni/aesni_plugin.c +++ b/src/libstrongswan/plugins/aesni/aesni_plugin.c @@ -112,7 +112,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *aesni_plugin_create() +PLUGIN_DEFINE(aesni) { private_aesni_plugin_t *this; diff --git a/src/libstrongswan/plugins/af_alg/af_alg_plugin.c b/src/libstrongswan/plugins/af_alg/af_alg_plugin.c index 647241b5f..1323f9b5f 100644 --- a/src/libstrongswan/plugins/af_alg/af_alg_plugin.c +++ b/src/libstrongswan/plugins/af_alg/af_alg_plugin.c @@ -92,7 +92,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *af_alg_plugin_create() +PLUGIN_DEFINE(af_alg) { private_af_alg_plugin_t *this; diff --git a/src/libstrongswan/plugins/agent/agent_plugin.c b/src/libstrongswan/plugins/agent/agent_plugin.c index 9e39d5155..574100a73 100644 --- a/src/libstrongswan/plugins/agent/agent_plugin.c +++ b/src/libstrongswan/plugins/agent/agent_plugin.c @@ -60,7 +60,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *agent_plugin_create() +PLUGIN_DEFINE(agent) { private_agent_plugin_t *this; diff --git a/src/libstrongswan/plugins/blowfish/blowfish_plugin.c b/src/libstrongswan/plugins/blowfish/blowfish_plugin.c index 2adf84f52..ae2173b6d 100644 --- a/src/libstrongswan/plugins/blowfish/blowfish_plugin.c +++ b/src/libstrongswan/plugins/blowfish/blowfish_plugin.c @@ -57,7 +57,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *blowfish_plugin_create() +PLUGIN_DEFINE(blowfish) { private_blowfish_plugin_t *this; diff --git a/src/libstrongswan/plugins/botan/botan_plugin.c b/src/libstrongswan/plugins/botan/botan_plugin.c index 5a702775b..b07ab67ca 100644 --- a/src/libstrongswan/plugins/botan/botan_plugin.c +++ b/src/libstrongswan/plugins/botan/botan_plugin.c @@ -391,7 +391,7 @@ METHOD(plugin_t, destroy, void, /* * Described in header */ -plugin_t *botan_plugin_create() +PLUGIN_DEFINE(botan) { private_botan_plugin_t *this; diff --git a/src/libstrongswan/plugins/ccm/ccm_plugin.c b/src/libstrongswan/plugins/ccm/ccm_plugin.c index a6954268e..7f3bddb86 100644 --- a/src/libstrongswan/plugins/ccm/ccm_plugin.c +++ b/src/libstrongswan/plugins/ccm/ccm_plugin.c @@ -94,7 +94,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *ccm_plugin_create() +PLUGIN_DEFINE(ccm) { private_ccm_plugin_t *this; diff --git a/src/libstrongswan/plugins/chapoly/chapoly_plugin.c b/src/libstrongswan/plugins/chapoly/chapoly_plugin.c index 7840526f7..e42d3098e 100644 --- a/src/libstrongswan/plugins/chapoly/chapoly_plugin.c +++ b/src/libstrongswan/plugins/chapoly/chapoly_plugin.c @@ -61,7 +61,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *chapoly_plugin_create() +PLUGIN_DEFINE(chapoly) { private_chapoly_plugin_t *this; diff --git a/src/libstrongswan/plugins/cmac/cmac_plugin.c b/src/libstrongswan/plugins/cmac/cmac_plugin.c index ae29ecb40..82879ef4c 100644 --- a/src/libstrongswan/plugins/cmac/cmac_plugin.c +++ b/src/libstrongswan/plugins/cmac/cmac_plugin.c @@ -62,7 +62,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *cmac_plugin_create() +PLUGIN_DEFINE(cmac) { private_cmac_plugin_t *this; diff --git a/src/libstrongswan/plugins/constraints/constraints_plugin.c b/src/libstrongswan/plugins/constraints/constraints_plugin.c index ce54f1ac1..78820d436 100644 --- a/src/libstrongswan/plugins/constraints/constraints_plugin.c +++ b/src/libstrongswan/plugins/constraints/constraints_plugin.c @@ -83,7 +83,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *constraints_plugin_create() +PLUGIN_DEFINE(constraints) { private_constraints_plugin_t *this; diff --git a/src/libstrongswan/plugins/ctr/ctr_plugin.c b/src/libstrongswan/plugins/ctr/ctr_plugin.c index 2b448de80..885f0ad24 100644 --- a/src/libstrongswan/plugins/ctr/ctr_plugin.c +++ b/src/libstrongswan/plugins/ctr/ctr_plugin.c @@ -70,7 +70,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *ctr_plugin_create() +PLUGIN_DEFINE(ctr) { private_ctr_plugin_t *this; diff --git a/src/libstrongswan/plugins/curl/curl_plugin.c b/src/libstrongswan/plugins/curl/curl_plugin.c index 8f3166bcd..0334a9d06 100644 --- a/src/libstrongswan/plugins/curl/curl_plugin.c +++ b/src/libstrongswan/plugins/curl/curl_plugin.c @@ -210,7 +210,7 @@ static void set_ssl_backend() /* * see header file */ -plugin_t *curl_plugin_create() +PLUGIN_DEFINE(curl) { CURLcode res; private_curl_plugin_t *this; diff --git a/src/libstrongswan/plugins/curve25519/curve25519_plugin.c b/src/libstrongswan/plugins/curve25519/curve25519_plugin.c index 7afe4e9e2..57f4e80b5 100644 --- a/src/libstrongswan/plugins/curve25519/curve25519_plugin.c +++ b/src/libstrongswan/plugins/curve25519/curve25519_plugin.c @@ -82,7 +82,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *curve25519_plugin_create() +PLUGIN_DEFINE(curve25519) { private_curve25519_plugin_t *this; diff --git a/src/libstrongswan/plugins/des/des_plugin.c b/src/libstrongswan/plugins/des/des_plugin.c index ffc07c4f1..5483ad760 100644 --- a/src/libstrongswan/plugins/des/des_plugin.c +++ b/src/libstrongswan/plugins/des/des_plugin.c @@ -58,7 +58,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *des_plugin_create() +PLUGIN_DEFINE(des) { private_des_plugin_t *this; diff --git a/src/libstrongswan/plugins/dnskey/dnskey_plugin.c b/src/libstrongswan/plugins/dnskey/dnskey_plugin.c index 2d000a83b..21a5c4362 100644 --- a/src/libstrongswan/plugins/dnskey/dnskey_plugin.c +++ b/src/libstrongswan/plugins/dnskey/dnskey_plugin.c @@ -63,7 +63,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *dnskey_plugin_create() +PLUGIN_DEFINE(dnskey) { private_dnskey_plugin_t *this; diff --git a/src/libstrongswan/plugins/drbg/drbg_plugin.c b/src/libstrongswan/plugins/drbg/drbg_plugin.c index f936b9099..f14bd5669 100644 --- a/src/libstrongswan/plugins/drbg/drbg_plugin.c +++ b/src/libstrongswan/plugins/drbg/drbg_plugin.c @@ -75,7 +75,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *drbg_plugin_create() +PLUGIN_DEFINE(drbg) { private_drbg_plugin_t *this; diff --git a/src/libstrongswan/plugins/files/files_plugin.c b/src/libstrongswan/plugins/files/files_plugin.c index 9331a0248..7f13c123f 100644 --- a/src/libstrongswan/plugins/files/files_plugin.c +++ b/src/libstrongswan/plugins/files/files_plugin.c @@ -59,7 +59,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *files_plugin_create() +PLUGIN_DEFINE(files) { private_files_plugin_t *this; diff --git a/src/libstrongswan/plugins/fips_prf/fips_prf_plugin.c b/src/libstrongswan/plugins/fips_prf/fips_prf_plugin.c index 6ee1c095d..d13c259c8 100644 --- a/src/libstrongswan/plugins/fips_prf/fips_prf_plugin.c +++ b/src/libstrongswan/plugins/fips_prf/fips_prf_plugin.c @@ -59,7 +59,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *fips_prf_plugin_create() +PLUGIN_DEFINE(fips_prf) { private_fips_prf_plugin_t *this; diff --git a/src/libstrongswan/plugins/gcm/gcm_plugin.c b/src/libstrongswan/plugins/gcm/gcm_plugin.c index 3a973834b..6bf022f56 100644 --- a/src/libstrongswan/plugins/gcm/gcm_plugin.c +++ b/src/libstrongswan/plugins/gcm/gcm_plugin.c @@ -76,7 +76,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *gcm_plugin_create() +PLUGIN_DEFINE(gcm) { private_gcm_plugin_t *this; diff --git a/src/libstrongswan/plugins/gcrypt/gcrypt_plugin.c b/src/libstrongswan/plugins/gcrypt/gcrypt_plugin.c index 8d9b7a305..34a4fbfc2 100644 --- a/src/libstrongswan/plugins/gcrypt/gcrypt_plugin.c +++ b/src/libstrongswan/plugins/gcrypt/gcrypt_plugin.c @@ -172,7 +172,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *gcrypt_plugin_create() +PLUGIN_DEFINE(gcrypt) { private_gcrypt_plugin_t *this; u_char *dummy[1]; diff --git a/src/libstrongswan/plugins/gmp/gmp_plugin.c b/src/libstrongswan/plugins/gmp/gmp_plugin.c index ba9b5dcb9..d857428a3 100644 --- a/src/libstrongswan/plugins/gmp/gmp_plugin.c +++ b/src/libstrongswan/plugins/gmp/gmp_plugin.c @@ -158,7 +158,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *gmp_plugin_create() +PLUGIN_DEFINE(gmp) { private_gmp_plugin_t *this; diff --git a/src/libstrongswan/plugins/hmac/hmac_plugin.c b/src/libstrongswan/plugins/hmac/hmac_plugin.c index 1e83ee617..025f4eec7 100644 --- a/src/libstrongswan/plugins/hmac/hmac_plugin.c +++ b/src/libstrongswan/plugins/hmac/hmac_plugin.c @@ -90,7 +90,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *hmac_plugin_create() +PLUGIN_DEFINE(hmac) { private_hmac_plugin_t *this; diff --git a/src/libstrongswan/plugins/kdf/kdf_plugin.c b/src/libstrongswan/plugins/kdf/kdf_plugin.c index 048cfb21e..61b68d324 100644 --- a/src/libstrongswan/plugins/kdf/kdf_plugin.c +++ b/src/libstrongswan/plugins/kdf/kdf_plugin.c @@ -71,7 +71,7 @@ METHOD(plugin_t, destroy, void, /* * Described in header */ -plugin_t *kdf_plugin_create() +PLUGIN_DEFINE(kdf) { private_kdf_plugin_t *this; diff --git a/src/libstrongswan/plugins/keychain/keychain_plugin.c b/src/libstrongswan/plugins/keychain/keychain_plugin.c index 488d20f12..6a58eb583 100644 --- a/src/libstrongswan/plugins/keychain/keychain_plugin.c +++ b/src/libstrongswan/plugins/keychain/keychain_plugin.c @@ -81,7 +81,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *keychain_plugin_create() +PLUGIN_DEFINE(keychain) { private_keychain_plugin_t *this; diff --git a/src/libstrongswan/plugins/ldap/ldap_plugin.c b/src/libstrongswan/plugins/ldap/ldap_plugin.c index 71785829f..68f4a1dda 100644 --- a/src/libstrongswan/plugins/ldap/ldap_plugin.c +++ b/src/libstrongswan/plugins/ldap/ldap_plugin.c @@ -59,7 +59,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *ldap_plugin_create() +PLUGIN_DEFINE(ldap) { private_ldap_plugin_t *this; diff --git a/src/libstrongswan/plugins/md4/md4_plugin.c b/src/libstrongswan/plugins/md4/md4_plugin.c index f2c809c50..36d441b86 100644 --- a/src/libstrongswan/plugins/md4/md4_plugin.c +++ b/src/libstrongswan/plugins/md4/md4_plugin.c @@ -56,7 +56,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *md4_plugin_create() +PLUGIN_DEFINE(md4) { private_md4_plugin_t *this; diff --git a/src/libstrongswan/plugins/md5/md5_plugin.c b/src/libstrongswan/plugins/md5/md5_plugin.c index edd513d5a..629672c8f 100644 --- a/src/libstrongswan/plugins/md5/md5_plugin.c +++ b/src/libstrongswan/plugins/md5/md5_plugin.c @@ -56,7 +56,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *md5_plugin_create() +PLUGIN_DEFINE(md5) { private_md5_plugin_t *this; diff --git a/src/libstrongswan/plugins/mgf1/mgf1_plugin.c b/src/libstrongswan/plugins/mgf1/mgf1_plugin.c index 36ce54b37..ef4eb83b9 100644 --- a/src/libstrongswan/plugins/mgf1/mgf1_plugin.c +++ b/src/libstrongswan/plugins/mgf1/mgf1_plugin.c @@ -75,7 +75,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *mgf1_plugin_create() +PLUGIN_DEFINE(mgf1) { private_mgf1_plugin_t *this; diff --git a/src/libstrongswan/plugins/ml/ml_plugin.c b/src/libstrongswan/plugins/ml/ml_plugin.c index 752c20da7..2c0432b45 100644 --- a/src/libstrongswan/plugins/ml/ml_plugin.c +++ b/src/libstrongswan/plugins/ml/ml_plugin.c @@ -76,7 +76,7 @@ METHOD(plugin_t, destroy, void, /* * Described in header */ -plugin_t *ml_plugin_create() +PLUGIN_DEFINE(ml) { private_plugin_t *this; diff --git a/src/libstrongswan/plugins/mysql/mysql_plugin.c b/src/libstrongswan/plugins/mysql/mysql_plugin.c index aa1b8cda3..ee1bb742b 100644 --- a/src/libstrongswan/plugins/mysql/mysql_plugin.c +++ b/src/libstrongswan/plugins/mysql/mysql_plugin.c @@ -60,7 +60,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *mysql_plugin_create() +PLUGIN_DEFINE(mysql) { private_mysql_plugin_t *this; diff --git a/src/libstrongswan/plugins/nonce/nonce_plugin.c b/src/libstrongswan/plugins/nonce/nonce_plugin.c index 3f9cb799d..a7666c504 100644 --- a/src/libstrongswan/plugins/nonce/nonce_plugin.c +++ b/src/libstrongswan/plugins/nonce/nonce_plugin.c @@ -59,7 +59,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *nonce_plugin_create() +PLUGIN_DEFINE(nonce) { private_nonce_plugin_t *this; diff --git a/src/libstrongswan/plugins/openssl/openssl_plugin.c b/src/libstrongswan/plugins/openssl/openssl_plugin.c index 67f888c19..c3e1d2e17 100644 --- a/src/libstrongswan/plugins/openssl/openssl_plugin.c +++ b/src/libstrongswan/plugins/openssl/openssl_plugin.c @@ -775,7 +775,7 @@ static int concat_ossl_providers(OSSL_PROVIDER *provider, void *cbdata) /* * see header file */ -plugin_t *openssl_plugin_create() +PLUGIN_DEFINE(openssl) { private_openssl_plugin_t *this; int fips_mode; diff --git a/src/libstrongswan/plugins/openxpki/openxpki_plugin.c b/src/libstrongswan/plugins/openxpki/openxpki_plugin.c index afb8a61d7..e5c11a1ba 100644 --- a/src/libstrongswan/plugins/openxpki/openxpki_plugin.c +++ b/src/libstrongswan/plugins/openxpki/openxpki_plugin.c @@ -85,7 +85,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *openxpki_plugin_create() +PLUGIN_DEFINE(openxpki) { private_openxpki_plugin_t *this; diff --git a/src/libstrongswan/plugins/padlock/padlock_plugin.c b/src/libstrongswan/plugins/padlock/padlock_plugin.c index 4cd803803..84b98af2d 100644 --- a/src/libstrongswan/plugins/padlock/padlock_plugin.c +++ b/src/libstrongswan/plugins/padlock/padlock_plugin.c @@ -101,7 +101,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *padlock_plugin_create() +PLUGIN_DEFINE(padlock) { private_padlock_plugin_t *this; diff --git a/src/libstrongswan/plugins/pem/pem_plugin.c b/src/libstrongswan/plugins/pem/pem_plugin.c index 90f0e89a0..d46906168 100644 --- a/src/libstrongswan/plugins/pem/pem_plugin.c +++ b/src/libstrongswan/plugins/pem/pem_plugin.c @@ -140,7 +140,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *pem_plugin_create() +PLUGIN_DEFINE(pem) { private_pem_plugin_t *this; diff --git a/src/libstrongswan/plugins/pgp/pgp_plugin.c b/src/libstrongswan/plugins/pgp/pgp_plugin.c index ea6699f7d..9fc06d96e 100644 --- a/src/libstrongswan/plugins/pgp/pgp_plugin.c +++ b/src/libstrongswan/plugins/pgp/pgp_plugin.c @@ -72,7 +72,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *pgp_plugin_create() +PLUGIN_DEFINE(pgp) { private_pgp_plugin_t *this; diff --git a/src/libstrongswan/plugins/pkcs1/pkcs1_plugin.c b/src/libstrongswan/plugins/pkcs1/pkcs1_plugin.c index 797468955..68a57bcee 100644 --- a/src/libstrongswan/plugins/pkcs1/pkcs1_plugin.c +++ b/src/libstrongswan/plugins/pkcs1/pkcs1_plugin.c @@ -74,7 +74,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *pkcs1_plugin_create() +PLUGIN_DEFINE(pkcs1) { private_pkcs1_plugin_t *this; diff --git a/src/libstrongswan/plugins/pkcs11/pkcs11_plugin.c b/src/libstrongswan/plugins/pkcs11/pkcs11_plugin.c index 72b5ddd2f..5510db99f 100644 --- a/src/libstrongswan/plugins/pkcs11/pkcs11_plugin.c +++ b/src/libstrongswan/plugins/pkcs11/pkcs11_plugin.c @@ -294,7 +294,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *pkcs11_plugin_create() +PLUGIN_DEFINE(pkcs11) { private_pkcs11_plugin_t *this; diff --git a/src/libstrongswan/plugins/pkcs12/pkcs12_plugin.c b/src/libstrongswan/plugins/pkcs12/pkcs12_plugin.c index e8991ded7..79bce6472 100644 --- a/src/libstrongswan/plugins/pkcs12/pkcs12_plugin.c +++ b/src/libstrongswan/plugins/pkcs12/pkcs12_plugin.c @@ -65,7 +65,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *pkcs12_plugin_create() +PLUGIN_DEFINE(pkcs12) { private_pkcs12_plugin_t *this; diff --git a/src/libstrongswan/plugins/pkcs7/pkcs7_plugin.c b/src/libstrongswan/plugins/pkcs7/pkcs7_plugin.c index 9d2e03421..9df16f512 100644 --- a/src/libstrongswan/plugins/pkcs7/pkcs7_plugin.c +++ b/src/libstrongswan/plugins/pkcs7/pkcs7_plugin.c @@ -67,7 +67,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *pkcs7_plugin_create() +PLUGIN_DEFINE(pkcs7) { private_pkcs7_plugin_t *this; diff --git a/src/libstrongswan/plugins/pkcs8/pkcs8_plugin.c b/src/libstrongswan/plugins/pkcs8/pkcs8_plugin.c index 8841720a3..44b0b1649 100644 --- a/src/libstrongswan/plugins/pkcs8/pkcs8_plugin.c +++ b/src/libstrongswan/plugins/pkcs8/pkcs8_plugin.c @@ -63,7 +63,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *pkcs8_plugin_create() +PLUGIN_DEFINE(pkcs8) { private_pkcs8_plugin_t *this; diff --git a/src/libstrongswan/plugins/pubkey/pubkey_plugin.c b/src/libstrongswan/plugins/pubkey/pubkey_plugin.c index 9b1c63187..91275c92d 100644 --- a/src/libstrongswan/plugins/pubkey/pubkey_plugin.c +++ b/src/libstrongswan/plugins/pubkey/pubkey_plugin.c @@ -62,7 +62,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *pubkey_plugin_create() +PLUGIN_DEFINE(pubkey) { private_pubkey_plugin_t *this; diff --git a/src/libstrongswan/plugins/random/random_plugin.c b/src/libstrongswan/plugins/random/random_plugin.c index a4d1088a3..c2fbc355b 100644 --- a/src/libstrongswan/plugins/random/random_plugin.c +++ b/src/libstrongswan/plugins/random/random_plugin.c @@ -133,7 +133,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *random_plugin_create() +PLUGIN_DEFINE(random) { private_random_plugin_t *this; char *urandom_file, *random_file; diff --git a/src/libstrongswan/plugins/rc2/rc2_plugin.c b/src/libstrongswan/plugins/rc2/rc2_plugin.c index 9eea53678..19322b3f1 100644 --- a/src/libstrongswan/plugins/rc2/rc2_plugin.c +++ b/src/libstrongswan/plugins/rc2/rc2_plugin.c @@ -58,7 +58,7 @@ METHOD(plugin_t, destroy, void, /* * Described in header */ -plugin_t *rc2_plugin_create() +PLUGIN_DEFINE(rc2) { private_rc2_plugin_t *this; diff --git a/src/libstrongswan/plugins/rdrand/rdrand_plugin.c b/src/libstrongswan/plugins/rdrand/rdrand_plugin.c index 8af5c6e64..d23d55e85 100644 --- a/src/libstrongswan/plugins/rdrand/rdrand_plugin.c +++ b/src/libstrongswan/plugins/rdrand/rdrand_plugin.c @@ -72,7 +72,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *rdrand_plugin_create() +PLUGIN_DEFINE(rdrand) { private_rdrand_plugin_t *this; diff --git a/src/libstrongswan/plugins/revocation/revocation_plugin.c b/src/libstrongswan/plugins/revocation/revocation_plugin.c index 160a223a8..aec9433d6 100644 --- a/src/libstrongswan/plugins/revocation/revocation_plugin.c +++ b/src/libstrongswan/plugins/revocation/revocation_plugin.c @@ -94,7 +94,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *revocation_plugin_create() +PLUGIN_DEFINE(revocation) { private_revocation_plugin_t *this; diff --git a/src/libstrongswan/plugins/sha1/sha1_plugin.c b/src/libstrongswan/plugins/sha1/sha1_plugin.c index 475253975..8fc3ef766 100644 --- a/src/libstrongswan/plugins/sha1/sha1_plugin.c +++ b/src/libstrongswan/plugins/sha1/sha1_plugin.c @@ -59,7 +59,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *sha1_plugin_create() +PLUGIN_DEFINE(sha1) { private_sha1_plugin_t *this; diff --git a/src/libstrongswan/plugins/sha2/sha2_plugin.c b/src/libstrongswan/plugins/sha2/sha2_plugin.c index 27f13a6fe..b43f460b4 100644 --- a/src/libstrongswan/plugins/sha2/sha2_plugin.c +++ b/src/libstrongswan/plugins/sha2/sha2_plugin.c @@ -59,7 +59,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *sha2_plugin_create() +PLUGIN_DEFINE(sha2) { private_sha2_plugin_t *this; diff --git a/src/libstrongswan/plugins/sha3/sha3_plugin.c b/src/libstrongswan/plugins/sha3/sha3_plugin.c index 228d9370a..c9cd4eca5 100644 --- a/src/libstrongswan/plugins/sha3/sha3_plugin.c +++ b/src/libstrongswan/plugins/sha3/sha3_plugin.c @@ -65,7 +65,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *sha3_plugin_create() +PLUGIN_DEFINE(sha3) { private_sha3_plugin_t *this; @@ -81,4 +81,3 @@ plugin_t *sha3_plugin_create() return &this->public.plugin; } - diff --git a/src/libstrongswan/plugins/soup/soup_plugin.c b/src/libstrongswan/plugins/soup/soup_plugin.c index 37c2e705e..9ab881f0e 100644 --- a/src/libstrongswan/plugins/soup/soup_plugin.c +++ b/src/libstrongswan/plugins/soup/soup_plugin.c @@ -62,7 +62,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *soup_plugin_create() +PLUGIN_DEFINE(soup) { private_soup_plugin_t *this; diff --git a/src/libstrongswan/plugins/sqlite/sqlite_plugin.c b/src/libstrongswan/plugins/sqlite/sqlite_plugin.c index 8812c9947..eadb7ee3b 100644 --- a/src/libstrongswan/plugins/sqlite/sqlite_plugin.c +++ b/src/libstrongswan/plugins/sqlite/sqlite_plugin.c @@ -59,7 +59,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *sqlite_plugin_create() +PLUGIN_DEFINE(sqlite) { private_sqlite_plugin_t *this; #if SQLITE_VERSION_NUMBER >= 3005000 && DEBUG_LEVEL >= 2 diff --git a/src/libstrongswan/plugins/sshkey/sshkey_plugin.c b/src/libstrongswan/plugins/sshkey/sshkey_plugin.c index d000962af..f9ab7966a 100644 --- a/src/libstrongswan/plugins/sshkey/sshkey_plugin.c +++ b/src/libstrongswan/plugins/sshkey/sshkey_plugin.c @@ -62,7 +62,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *sshkey_plugin_create() +PLUGIN_DEFINE(sshkey) { private_sshkey_plugin_t *this; diff --git a/src/libstrongswan/plugins/test_vectors/test_vectors_plugin.c b/src/libstrongswan/plugins/test_vectors/test_vectors_plugin.c index 3c5ef5c27..bf8596ce4 100644 --- a/src/libstrongswan/plugins/test_vectors/test_vectors_plugin.c +++ b/src/libstrongswan/plugins/test_vectors/test_vectors_plugin.c @@ -176,7 +176,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *test_vectors_plugin_create() +PLUGIN_DEFINE(test_vectors) { private_test_vectors_plugin_t *this; int i; diff --git a/src/libstrongswan/plugins/unbound/unbound_plugin.c b/src/libstrongswan/plugins/unbound/unbound_plugin.c index c22f53925..899e8e1ca 100644 --- a/src/libstrongswan/plugins/unbound/unbound_plugin.c +++ b/src/libstrongswan/plugins/unbound/unbound_plugin.c @@ -58,7 +58,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *unbound_plugin_create() +PLUGIN_DEFINE(unbound) { private_unbound_plugin_t *this; diff --git a/src/libstrongswan/plugins/winhttp/winhttp_plugin.c b/src/libstrongswan/plugins/winhttp/winhttp_plugin.c index 968174e04..2e1432012 100644 --- a/src/libstrongswan/plugins/winhttp/winhttp_plugin.c +++ b/src/libstrongswan/plugins/winhttp/winhttp_plugin.c @@ -57,7 +57,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *winhttp_plugin_create() +PLUGIN_DEFINE(winhttp) { private_winhttp_plugin_t *this; diff --git a/src/libstrongswan/plugins/wolfssl/wolfssl_plugin.c b/src/libstrongswan/plugins/wolfssl/wolfssl_plugin.c index c22ae3658..73b73780c 100644 --- a/src/libstrongswan/plugins/wolfssl/wolfssl_plugin.c +++ b/src/libstrongswan/plugins/wolfssl/wolfssl_plugin.c @@ -532,7 +532,7 @@ METHOD(plugin_t, destroy, void, /* * Described in header */ -plugin_t *wolfssl_plugin_create() +PLUGIN_DEFINE(wolfssl) { private_wolfssl_plugin_t *this; bool fips_mode; diff --git a/src/libstrongswan/plugins/x509/x509_plugin.c b/src/libstrongswan/plugins/x509/x509_plugin.c index ca7922da8..c7e937587 100644 --- a/src/libstrongswan/plugins/x509/x509_plugin.c +++ b/src/libstrongswan/plugins/x509/x509_plugin.c @@ -95,7 +95,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *x509_plugin_create() +PLUGIN_DEFINE(x509) { private_x509_plugin_t *this; diff --git a/src/libstrongswan/plugins/xcbc/xcbc_plugin.c b/src/libstrongswan/plugins/xcbc/xcbc_plugin.c index 1c0fea14d..10f5e5e9f 100644 --- a/src/libstrongswan/plugins/xcbc/xcbc_plugin.c +++ b/src/libstrongswan/plugins/xcbc/xcbc_plugin.c @@ -66,7 +66,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *xcbc_plugin_create() +PLUGIN_DEFINE(xcbc) { private_xcbc_plugin_t *this; diff --git a/src/libtnccs/plugins/tnc_imc/tnc_imc_plugin.c b/src/libtnccs/plugins/tnc_imc/tnc_imc_plugin.c index 4dbdb51bd..49bac424e 100644 --- a/src/libtnccs/plugins/tnc_imc/tnc_imc_plugin.c +++ b/src/libtnccs/plugins/tnc_imc/tnc_imc_plugin.c @@ -62,7 +62,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *tnc_imc_plugin_create(void) +PLUGIN_DEFINE(tnc_imc) { private_tnc_imc_plugin_t *this; diff --git a/src/libtnccs/plugins/tnc_imv/tnc_imv_plugin.c b/src/libtnccs/plugins/tnc_imv/tnc_imv_plugin.c index 4252aa0e0..14c28fee6 100644 --- a/src/libtnccs/plugins/tnc_imv/tnc_imv_plugin.c +++ b/src/libtnccs/plugins/tnc_imv/tnc_imv_plugin.c @@ -65,7 +65,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *tnc_imv_plugin_create() +PLUGIN_DEFINE(tnc_imv) { private_tnc_imv_plugin_t *this; diff --git a/src/libtnccs/plugins/tnc_tnccs/tnc_tnccs_plugin.c b/src/libtnccs/plugins/tnc_tnccs/tnc_tnccs_plugin.c index abbfd8330..16f04fe70 100644 --- a/src/libtnccs/plugins/tnc_tnccs/tnc_tnccs_plugin.c +++ b/src/libtnccs/plugins/tnc_tnccs/tnc_tnccs_plugin.c @@ -63,7 +63,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *tnc_tnccs_plugin_create(void) +PLUGIN_DEFINE(tnc_tnccs) { private_tnc_tnccs_plugin_t *this; diff --git a/src/libtnccs/plugins/tnccs_11/tnccs_11_plugin.c b/src/libtnccs/plugins/tnccs_11/tnccs_11_plugin.c index d6516e604..05764bf90 100644 --- a/src/libtnccs/plugins/tnccs_11/tnccs_11_plugin.c +++ b/src/libtnccs/plugins/tnccs_11/tnccs_11_plugin.c @@ -46,7 +46,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *tnccs_11_plugin_create() +PLUGIN_DEFINE(tnccs_11) { tnccs_11_plugin_t *this; diff --git a/src/libtnccs/plugins/tnccs_20/tnccs_20_plugin.c b/src/libtnccs/plugins/tnccs_20/tnccs_20_plugin.c index acaaa14c0..c36210927 100644 --- a/src/libtnccs/plugins/tnccs_20/tnccs_20_plugin.c +++ b/src/libtnccs/plugins/tnccs_20/tnccs_20_plugin.c @@ -46,7 +46,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *tnccs_20_plugin_create() +PLUGIN_DEFINE(tnccs_20) { tnccs_20_plugin_t *this; diff --git a/src/libtnccs/plugins/tnccs_dynamic/tnccs_dynamic_plugin.c b/src/libtnccs/plugins/tnccs_dynamic/tnccs_dynamic_plugin.c index fba146fc7..2b044f6c6 100644 --- a/src/libtnccs/plugins/tnccs_dynamic/tnccs_dynamic_plugin.c +++ b/src/libtnccs/plugins/tnccs_dynamic/tnccs_dynamic_plugin.c @@ -47,7 +47,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *tnccs_dynamic_plugin_create() +PLUGIN_DEFINE(tnccs_dynamic) { tnccs_dynamic_plugin_t *this; diff --git a/src/libtpmtss/plugins/tpm/tpm_plugin.c b/src/libtpmtss/plugins/tpm/tpm_plugin.c index 35e5923ce..5aa7e1fca 100644 --- a/src/libtpmtss/plugins/tpm/tpm_plugin.c +++ b/src/libtpmtss/plugins/tpm/tpm_plugin.c @@ -88,7 +88,7 @@ METHOD(plugin_t, destroy, void, /* * see header file */ -plugin_t *tpm_plugin_create() +PLUGIN_DEFINE(tpm) { private_tpm_plugin_t *this; From c4b32aab04fd58db14c4dfb8d3112419494326a7 Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Mon, 11 Aug 2025 16:28:46 +0200 Subject: [PATCH 4/4] plugin-loader: Check version of loaded plugins This prevents loading plugins from older builds that can cause all sorts of issues as they might access struct members in different locations. We don't check the version for statically linked plugins. --- src/libstrongswan/plugins/plugin_loader.c | 41 +++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/libstrongswan/plugins/plugin_loader.c b/src/libstrongswan/plugins/plugin_loader.c index 0d4659f12..65e73e468 100644 --- a/src/libstrongswan/plugins/plugin_loader.c +++ b/src/libstrongswan/plugins/plugin_loader.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2014 Tobias Brunner + * Copyright (C) 2010-2025 Tobias Brunner * Copyright (C) 2007 Martin Willi * * Copyright (C) secunet Security Networks AG @@ -46,7 +46,6 @@ typedef struct plugin_entry_t plugin_entry_t; * Statically registered constructors */ static hashtable_t *plugin_constructors = NULL; - #elif !defined(HAVE_DLADDR) #error Neither dynamic linking nor static plugin constructors are supported! #endif @@ -413,6 +412,39 @@ static status_t create_plugin(private_plugin_loader_t *this, void *handle, return SUCCESS; } +#ifdef HAVE_DLADDR +/** + * Verify that the plugin version matches that of the daemon + */ +static bool verify_plugin_version(void *handle, char *name) +{ + char field[128]; + char **version; + + if (snprintf(field, sizeof(field), "%s_plugin_version", + name) >= sizeof(field)) + { + return FALSE; + } + translate(field, "-", "_"); + + version = dlsym(handle, field); + if (!version) + { + DBG1(DBG_LIB, "plugin '%s': failed to load - version field %s missing", + name, field); + return FALSE; + } + if (strcmp(*version, VERSION)) + { + DBG1(DBG_LIB, "plugin '%s': failed to load - plugin version %s doesn't " + "match version %s", name, *version, VERSION); + return FALSE; + } + return TRUE; +} +#endif /* HAVE_DLADDR */ + /** * load a single plugin */ @@ -479,6 +511,11 @@ static plugin_entry_t *load_plugin(private_plugin_loader_t *this, char *name, DBG1(DBG_LIB, "plugin '%s' failed to load: %s", name, dlerror()); return NULL; } + if (!verify_plugin_version(handle, name)) + { + dlclose(handle); + return NULL; + } switch (create_plugin(this, handle, name, create, TRUE, critical, &entry)) { case SUCCESS: