From a8bfa9e10445744581d18819c64729844ae837fb Mon Sep 17 00:00:00 2001 From: Corey Farrell <git@cfware.com> Date: Mon, 4 May 2015 15:26:37 -0400 Subject: [PATCH] Modules: Make ast_module_info->self available to auxiliary sources. ast_module_info->self is often needed to register items with the core. Many modules have ad-hoc code to make this pointer available to auxiliary sources. This change updates the module build process to make the needed information available to all sources in a module. ASTERISK-25056 #close Reported by: Corey Farrell Change-Id: I18c8cd58fbcb1b708425f6757becaeca9fa91815 --- Makefile.moddir_rules | 6 +++++- channels/chan_dahdi.c | 2 +- channels/dahdi/bridge_native_dahdi.c | 4 ++-- channels/dahdi/bridge_native_dahdi.h | 2 +- channels/sip/dialplan_functions.c | 2 +- codecs/lpc10/lpcini.c | 2 +- include/asterisk.h | 17 +++++++++++++++++ include/asterisk/app.h | 4 ++-- include/asterisk/bridge_technology.h | 2 +- include/asterisk/bucket.h | 2 +- include/asterisk/codec.h | 2 +- include/asterisk/data.h | 4 ++-- include/asterisk/format.h | 2 +- include/asterisk/manager.h | 4 ++-- include/asterisk/mod_format.h | 2 +- include/asterisk/module.h | 19 +++++++++++++++---- include/asterisk/parking.h | 2 +- include/asterisk/pbx.h | 4 ++-- include/asterisk/rtp_engine.h | 4 ++-- include/asterisk/sorcery.h | 2 +- include/asterisk/timing.h | 2 +- include/asterisk/translate.h | 2 +- main/Makefile | 2 +- main/parking.c | 16 ++++++++-------- res/parking/parking_applications.c | 2 -- res/parking/parking_bridge_features.c | 4 ++-- res/parking/parking_manager.c | 7 +++---- res/parking/res_parking.h | 9 --------- res/res_parking.c | 5 ----- res/res_pjsip.c | 2 +- res/res_pjsip/include/res_pjsip_private.h | 2 +- res/res_pjsip/pjsip_configuration.c | 2 +- res/res_pjsip/pjsip_options.c | 2 +- utils/Makefile | 2 ++ 34 files changed, 82 insertions(+), 65 deletions(-) diff --git a/Makefile.moddir_rules b/Makefile.moddir_rules index d2964e374b..e7022822d8 100644 --- a/Makefile.moddir_rules +++ b/Makefile.moddir_rules @@ -60,7 +60,11 @@ endif # is used to collect the required flags for a module... which can # then be used any place they are required. -MOD_ASTCFLAGS=-DAST_MODULE=\"$(1)\" $(MENUSELECT_OPTS_$(1):%=-D%) $(foreach dep,$(MENUSELECT_DEPENDS_$(1)),$(value $(dep)_INCLUDE)) +MOD_ASTCFLAGS=\ + -DAST_MODULE=\"$(1)\" \ + -DAST_MODULE_SELF_SYM=__internal_$(1)_self \ + $(MENUSELECT_OPTS_$(1):%=-D%) \ + $(foreach dep,$(MENUSELECT_DEPENDS_$(1)),$(value $(dep)_INCLUDE)) define MOD_ADD_SOURCE $$(if $$(filter $(1),$$(EMBEDDED_MODS)),modules.link,$(1).so): $$(subst $(3),$(5),$(2)) diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c index b9405d5916..0b187dc324 100644 --- a/channels/chan_dahdi.c +++ b/channels/chan_dahdi.c @@ -19519,7 +19519,7 @@ static int load_module(void) ast_format_cap_append(dahdi_tech.capabilities, ast_format_ulaw, 0); ast_format_cap_append(dahdi_tech.capabilities, ast_format_alaw, 0); - if (dahdi_native_load(ast_module_info->self, &dahdi_tech)) { + if (dahdi_native_load(&dahdi_tech)) { ao2_ref(dahdi_tech.capabilities, -1); return AST_MODULE_LOAD_FAILURE; } diff --git a/channels/dahdi/bridge_native_dahdi.c b/channels/dahdi/bridge_native_dahdi.c index d67cb5c435..234228bd59 100644 --- a/channels/dahdi/bridge_native_dahdi.c +++ b/channels/dahdi/bridge_native_dahdi.c @@ -903,11 +903,11 @@ void dahdi_native_unload(void) * \retval 0 on success. * \retval -1 on error. */ -int dahdi_native_load(struct ast_module *mod, const struct ast_channel_tech *tech) +int dahdi_native_load(const struct ast_channel_tech *tech) { dahdi_tech = tech; - if (__ast_bridge_technology_register(&native_bridge, mod)) { + if (ast_bridge_technology_register(&native_bridge)) { dahdi_native_unload(); return -1; } diff --git a/channels/dahdi/bridge_native_dahdi.h b/channels/dahdi/bridge_native_dahdi.h index 91e8d16b75..6362a6ff56 100644 --- a/channels/dahdi/bridge_native_dahdi.h +++ b/channels/dahdi/bridge_native_dahdi.h @@ -36,7 +36,7 @@ extern "C" { /* ------------------------------------------------------------------- */ void dahdi_native_unload(void); -int dahdi_native_load(struct ast_module *mod, const struct ast_channel_tech *tech); +int dahdi_native_load(const struct ast_channel_tech *tech); /* ------------------------------------------------------------------- */ diff --git a/channels/sip/dialplan_functions.c b/channels/sip/dialplan_functions.c index 91a46784f9..33ba71c27b 100644 --- a/channels/sip/dialplan_functions.c +++ b/channels/sip/dialplan_functions.c @@ -338,7 +338,7 @@ AST_TEST_DEFINE(test_sip_rtpqos_1) break; } - ast_rtp_engine_register2(&test_engine, NULL); + ast_rtp_engine_register(&test_engine); /* Have to associate this with a SIP pvt and an ast_channel */ if (!(p = sip_alloc(0, NULL, 0, SIP_NOTIFY, NULL, 0))) { res = AST_TEST_NOT_RUN; diff --git a/codecs/lpc10/lpcini.c b/codecs/lpc10/lpcini.c index 42c2331958..ebe229a5cf 100644 --- a/codecs/lpc10/lpcini.c +++ b/codecs/lpc10/lpcini.c @@ -34,7 +34,7 @@ Some OSS fixes and a few lpc changes to make it actually work -lf2c -lm (in that order) */ -#include "asterisk.h" +#include <stdlib.h> #include "f2c.h" #ifdef P_R_O_T_O_T_Y_P_E_S diff --git a/include/asterisk.h b/include/asterisk.h index 14e88e6256..ab2a3ddef3 100644 --- a/include/asterisk.h +++ b/include/asterisk.h @@ -271,4 +271,21 @@ struct ast_sched_context; #define __stringify_1(x) #x #define __stringify(x) __stringify_1(x) +#if defined(AST_IN_CORE) \ + || (!defined(AST_MODULE_SELF_SYM) \ + && (defined(STANDALONE) || defined(STANDALONE2) || defined(AST_NOT_MODULE))) + +#define AST_MODULE_SELF NULL + +#elif defined(AST_MODULE_SELF_SYM) + +/*! Retreive the 'struct ast_module *' for the current module. */ +#define AST_MODULE_SELF AST_MODULE_SELF_SYM() + +struct ast_module; +/* Internal/forward declaration, AST_MODULE_SELF should be used instead. */ +struct ast_module *AST_MODULE_SELF_SYM(void); + +#endif + #endif /* _ASTERISK_H */ diff --git a/include/asterisk/app.h b/include/asterisk/app.h index 6171dd4f26..3975fda7d1 100644 --- a/include/asterisk/app.h +++ b/include/asterisk/app.h @@ -584,7 +584,7 @@ int ast_vm_is_registered(void); int __ast_vm_register(const struct ast_vm_functions *vm_table, struct ast_module *module); /*! \brief See \ref __ast_vm_register() */ -#define ast_vm_register(vm_table) __ast_vm_register(vm_table, ast_module_info ? ast_module_info->self : NULL) +#define ast_vm_register(vm_table) __ast_vm_register(vm_table, AST_MODULE_SELF) /*! * \brief Unregister the specified voicemail provider @@ -652,7 +652,7 @@ int ast_vm_greeter_is_registered(void); int __ast_vm_greeter_register(const struct ast_vm_greeter_functions *vm_table, struct ast_module *module); /*! \brief See \ref __ast_vm_greeter_register() */ -#define ast_vm_greeter_register(vm_table) __ast_vm_greeter_register(vm_table, ast_module_info ? ast_module_info->self : NULL) +#define ast_vm_greeter_register(vm_table) __ast_vm_greeter_register(vm_table, AST_MODULE_SELF) /*! * \brief Unregister the specified voicemail greeter provider diff --git a/include/asterisk/bridge_technology.h b/include/asterisk/bridge_technology.h index 01031e3a49..b83a51b69d 100644 --- a/include/asterisk/bridge_technology.h +++ b/include/asterisk/bridge_technology.h @@ -182,7 +182,7 @@ struct ast_bridge_technology { int __ast_bridge_technology_register(struct ast_bridge_technology *technology, struct ast_module *mod); /*! \brief See \ref __ast_bridge_technology_register() */ -#define ast_bridge_technology_register(technology) __ast_bridge_technology_register(technology, ast_module_info->self) +#define ast_bridge_technology_register(technology) __ast_bridge_technology_register(technology, AST_MODULE_SELF) /*! * \brief Unregister a bridge technology from use diff --git a/include/asterisk/bucket.h b/include/asterisk/bucket.h index c07fb0cbd2..da83759cee 100644 --- a/include/asterisk/bucket.h +++ b/include/asterisk/bucket.h @@ -134,7 +134,7 @@ int ast_bucket_init(void); * * \note Once a scheme has been registered it can not be unregistered */ -#define ast_bucket_scheme_register(name, bucket, file, create_cb, destroy_cb) __ast_bucket_scheme_register(name, bucket, file, create_cb, destroy_cb, ast_module_info ? ast_module_info->self : NULL) +#define ast_bucket_scheme_register(name, bucket, file, create_cb, destroy_cb) __ast_bucket_scheme_register(name, bucket, file, create_cb, destroy_cb, AST_MODULE_SELF) /*! * \brief Register support for a specific scheme diff --git a/include/asterisk/codec.h b/include/asterisk/codec.h index 28befec50c..3873324b14 100644 --- a/include/asterisk/codec.h +++ b/include/asterisk/codec.h @@ -116,7 +116,7 @@ int __ast_codec_register(struct ast_codec *codec, struct ast_module *mod); * \retval 0 success * \retval -1 failure */ -#define ast_codec_register(codec) __ast_codec_register(codec, ast_module_info->self) +#define ast_codec_register(codec) __ast_codec_register(codec, AST_MODULE_SELF) /*! * \brief Retrieve a codec given a name, type, and sample rate diff --git a/include/asterisk/data.h b/include/asterisk/data.h index 3676b8df58..d6da1f7d64 100644 --- a/include/asterisk/data.h +++ b/include/asterisk/data.h @@ -360,7 +360,7 @@ struct ast_data_mapping_structure { */ int __ast_data_register(const char *path, const struct ast_data_handler *handler, const char *registrar, struct ast_module *mod); -#define ast_data_register(path, handler) __ast_data_register(path, handler, __FILE__, ast_module_info->self) +#define ast_data_register(path, handler) __ast_data_register(path, handler, __FILE__, AST_MODULE_SELF) #define ast_data_register_core(path, handler) __ast_data_register(path, handler, __FILE__, NULL) /*! @@ -376,7 +376,7 @@ int __ast_data_register(const char *path, const struct ast_data_handler *handler int __ast_data_register_multiple(const struct ast_data_entry *data_entries, size_t entries, const char *registrar, struct ast_module *mod); #define ast_data_register_multiple(data_entries, entries) \ - __ast_data_register_multiple(data_entries, entries, __FILE__, ast_module_info->self) + __ast_data_register_multiple(data_entries, entries, __FILE__, AST_MODULE_SELF) #define ast_data_register_multiple_core(data_entries, entries) \ __ast_data_register_multiple(data_entries, entries, __FILE__, NULL) diff --git a/include/asterisk/format.h b/include/asterisk/format.h index 3da2d82368..c99c8f3e86 100644 --- a/include/asterisk/format.h +++ b/include/asterisk/format.h @@ -247,7 +247,7 @@ int __ast_format_interface_register(const char *codec, const struct ast_format_i * \retval 0 success * \retval -1 failure */ -#define ast_format_interface_register(codec, interface) __ast_format_interface_register(codec, interface, ast_module_info->self) +#define ast_format_interface_register(codec, interface) __ast_format_interface_register(codec, interface, AST_MODULE_SELF) /*! * \brief Get the attribute data on a format diff --git a/include/asterisk/manager.h b/include/asterisk/manager.h index b5ede545e4..1ec1cbae30 100644 --- a/include/asterisk/manager.h +++ b/include/asterisk/manager.h @@ -180,10 +180,10 @@ struct manager_action { /*! \brief External routines may register/unregister manager callbacks this way * \note Use ast_manager_register2() to register with help text for new manager commands */ -#define ast_manager_register(action, authority, func, synopsis) ast_manager_register2(action, authority, func, ast_module_info->self, synopsis, NULL) +#define ast_manager_register(action, authority, func, synopsis) ast_manager_register2(action, authority, func, AST_MODULE_SELF, synopsis, NULL) /*! \brief Register a manager callback using XML documentation to describe the manager. */ -#define ast_manager_register_xml(action, authority, func) ast_manager_register2(action, authority, func, ast_module_info->self, NULL, NULL) +#define ast_manager_register_xml(action, authority, func) ast_manager_register2(action, authority, func, AST_MODULE_SELF, NULL, NULL) /*! * \brief Register a manager callback using XML documentation to describe the manager. diff --git a/include/asterisk/mod_format.h b/include/asterisk/mod_format.h index 7f17741fa1..bcd31deaad 100644 --- a/include/asterisk/mod_format.h +++ b/include/asterisk/mod_format.h @@ -128,7 +128,7 @@ struct ast_filestream { * \retval -1 on failure */ int __ast_format_def_register(const struct ast_format_def *f, struct ast_module *mod); -#define ast_format_def_register(f) __ast_format_def_register(f, ast_module_info->self) +#define ast_format_def_register(f) __ast_format_def_register(f, AST_MODULE_SELF) /*! * \brief Unregisters a file format diff --git a/include/asterisk/module.h b/include/asterisk/module.h index 6d5e04dfc1..f42749146e 100644 --- a/include/asterisk/module.h +++ b/include/asterisk/module.h @@ -312,9 +312,9 @@ struct ast_module_user *__ast_module_user_add(struct ast_module *, struct ast_ch void __ast_module_user_remove(struct ast_module *, struct ast_module_user *); void __ast_module_user_hangup_all(struct ast_module *); -#define ast_module_user_add(chan) __ast_module_user_add(ast_module_info->self, chan) -#define ast_module_user_remove(user) __ast_module_user_remove(ast_module_info->self, user) -#define ast_module_user_hangup_all() __ast_module_user_hangup_all(ast_module_info->self) +#define ast_module_user_add(chan) __ast_module_user_add(AST_MODULE_SELF, chan) +#define ast_module_user_remove(user) __ast_module_user_remove(AST_MODULE_SELF, user) +#define ast_module_user_hangup_all() __ast_module_user_hangup_all(AST_MODULE_SELF) struct ast_module *__ast_module_ref(struct ast_module *mod, const char *file, int line, const char *func); void __ast_module_shutdown_ref(struct ast_module *mod, const char *file, int line, const char *func); @@ -368,8 +368,13 @@ void __ast_module_unref(struct ast_module *mod, const char *file, int line, cons { \ ast_module_unregister(&__mod_info); \ } \ + struct ast_module *AST_MODULE_SELF_SYM(void) \ + { \ + return __mod_info.self; \ + } \ static const __attribute__((unused)) struct ast_module_info *ast_module_info = &__mod_info + #define AST_MODULE_INFO_STANDARD(keystr, desc) \ AST_MODULE_INFO(keystr, AST_MODFLAG_LOAD_ORDER, desc, \ load_module, \ @@ -401,7 +406,9 @@ void __ast_module_unref(struct ast_module *mod, const char *file, int line, cons /* forward declare this pointer in modules, so that macro/function calls that need it can get it, since it will actually be declared and populated at the end of the module's source file... */ +#if !defined(AST_IN_CORE) static const __attribute__((unused)) struct ast_module_info *ast_module_info; +#endif #if !defined(EMBEDDED_MODULE) #define __MODULE_INFO_SECTION @@ -482,6 +489,10 @@ static void __restore_globals(void) { \ ast_module_unregister(&__mod_info); \ } \ + struct ast_module *AST_MODULE_SELF_SYM(void) \ + { \ + return __mod_info.self; \ + } \ static const struct ast_module_info *ast_module_info = &__mod_info #define AST_MODULE_INFO_STANDARD(keystr, desc) \ @@ -527,7 +538,7 @@ static void __restore_globals(void) * \retval 0 success * \retval -1 failure. */ -#define ast_register_application(app, execute, synopsis, description) ast_register_application2(app, execute, synopsis, description, ast_module_info->self) +#define ast_register_application(app, execute, synopsis, description) ast_register_application2(app, execute, synopsis, description, AST_MODULE_SELF) /*! * \brief Register an application using XML documentation. diff --git a/include/asterisk/parking.h b/include/asterisk/parking.h index a8832cdb8a..4c93c3b457 100644 --- a/include/asterisk/parking.h +++ b/include/asterisk/parking.h @@ -196,7 +196,7 @@ struct ast_parking_bridge_feature_fn_table { int (* parking_park_bridge_channel)(struct ast_bridge_channel *parkee, const char *parkee_uuid, const char *parker_uuid, const char *app_data); /*! \brief The module info for the module registering this parking provider */ - const struct ast_module_info *module_info; + struct ast_module *module; }; /*! diff --git a/include/asterisk/pbx.h b/include/asterisk/pbx.h index 795af05842..c09de982a6 100644 --- a/include/asterisk/pbx.h +++ b/include/asterisk/pbx.h @@ -1406,7 +1406,7 @@ enum ast_custom_function_escalation { /*! * \brief Register a custom function */ -#define ast_custom_function_register(acf) __ast_custom_function_register(acf, ast_module_info->self) +#define ast_custom_function_register(acf) __ast_custom_function_register(acf, AST_MODULE_SELF) /*! * \brief Register a custom function which requires escalated privileges. @@ -1415,7 +1415,7 @@ enum ast_custom_function_escalation { * arbitrary code) or FILE() (for which write needs permission to change files * on the filesystem). */ -#define ast_custom_function_register_escalating(acf, escalation) __ast_custom_function_register_escalating(acf, escalation, ast_module_info->self) +#define ast_custom_function_register_escalating(acf, escalation) __ast_custom_function_register_escalating(acf, escalation, AST_MODULE_SELF) /*! * \brief Register a custom function diff --git a/include/asterisk/rtp_engine.h b/include/asterisk/rtp_engine.h index a1a17da434..a94cb42136 100644 --- a/include/asterisk/rtp_engine.h +++ b/include/asterisk/rtp_engine.h @@ -643,7 +643,7 @@ struct ast_rtp_glue { */ struct ast_rtp_payload_type *ast_rtp_engine_alloc_payload_type(void); -#define ast_rtp_engine_register(engine) ast_rtp_engine_register2(engine, ast_module_info->self) +#define ast_rtp_engine_register(engine) ast_rtp_engine_register2(engine, AST_MODULE_SELF) /*! * \brief Register an RTP engine @@ -696,7 +696,7 @@ int ast_rtp_engine_register_srtp(struct ast_srtp_res *srtp_res, struct ast_srtp_ void ast_rtp_engine_unregister_srtp(void); int ast_rtp_engine_srtp_is_registered(void); -#define ast_rtp_glue_register(glue) ast_rtp_glue_register2(glue, ast_module_info->self) +#define ast_rtp_glue_register(glue) ast_rtp_glue_register2(glue, AST_MODULE_SELF) /*! * \brief Register RTP glue diff --git a/include/asterisk/sorcery.h b/include/asterisk/sorcery.h index 874dac2079..a5061c6abd 100644 --- a/include/asterisk/sorcery.h +++ b/include/asterisk/sorcery.h @@ -366,7 +366,7 @@ int __ast_sorcery_wizard_register(const struct ast_sorcery_wizard *interface, st /*! * \brief See \ref __ast_sorcery_wizard_register() */ -#define ast_sorcery_wizard_register(interface) __ast_sorcery_wizard_register(interface, ast_module_info ? ast_module_info->self : NULL) +#define ast_sorcery_wizard_register(interface) __ast_sorcery_wizard_register(interface, AST_MODULE_SELF) /*! * \brief Unregister a sorcery wizard diff --git a/include/asterisk/timing.h b/include/asterisk/timing.h index ff4947a0a6..268200375a 100644 --- a/include/asterisk/timing.h +++ b/include/asterisk/timing.h @@ -92,7 +92,7 @@ struct ast_timing_interface { * \retval non-Null handle to be passed to ast_unregister_timing_interface() on success * \since 1.6.1 */ -#define ast_register_timing_interface(i) _ast_register_timing_interface(i, ast_module_info->self) +#define ast_register_timing_interface(i) _ast_register_timing_interface(i, AST_MODULE_SELF) void *_ast_register_timing_interface(struct ast_timing_interface *funcs, struct ast_module *mod); diff --git a/include/asterisk/translate.h b/include/asterisk/translate.h index e8e4c02d21..87e9a2cabd 100644 --- a/include/asterisk/translate.h +++ b/include/asterisk/translate.h @@ -241,7 +241,7 @@ struct ast_trans_pvt; int __ast_register_translator(struct ast_translator *t, struct ast_module *module); /*! \brief See \ref __ast_register_translator() */ -#define ast_register_translator(t) __ast_register_translator(t, ast_module_info->self) +#define ast_register_translator(t) __ast_register_translator(t, AST_MODULE_SELF) /*! * \brief Unregister a translator diff --git a/main/Makefile b/main/Makefile index c0c0afff23..08496e6188 100644 --- a/main/Makefile +++ b/main/Makefile @@ -201,7 +201,7 @@ ifeq ($(findstring darwin,$(OSARCH)),) # not Darwin ASTSSL_LIB:=libasteriskssl.so $(ASTSSL_LIB).$(ASTSSL_SO_VERSION): _ASTLDFLAGS+=-Wl,-soname=$(ASTSSL_LIB).$(ASTSSL_SO_VERSION) -$(ASTSSL_LIB).$(ASTSSL_SO_VERSION): _ASTCFLAGS+=-fPIC -DAST_MODULE=\"asteriskssl\" +$(ASTSSL_LIB).$(ASTSSL_SO_VERSION): _ASTCFLAGS+=-fPIC -DAST_MODULE=\"asteriskssl\" -DAST_NOT_MODULE $(ASTSSL_LIB).$(ASTSSL_SO_VERSION): LIBS+=$(ASTSSL_LIBS) ifeq ($(GNU_LD),1) $(ASTSSL_LIB).$(ASTSSL_SO_VERSION): SO_SUPPRESS_SYMBOLS=-Wl,--version-script,libasteriskssl.exports,--warn-common diff --git a/main/parking.c b/main/parking.c index 25fdfe8f30..61a48960df 100644 --- a/main/parking.c +++ b/main/parking.c @@ -134,8 +134,8 @@ int ast_parking_park_bridge_channel(struct ast_bridge_channel *parkee, const cha return -1; } - if (table->module_info) { - SCOPED_MODULE_USE(table->module_info->self); + if (table->module) { + SCOPED_MODULE_USE(table->module); return table->parking_park_bridge_channel(parkee, parkee_uuid, parker_uuid, app_data); } @@ -153,8 +153,8 @@ int ast_parking_blind_transfer_park(struct ast_bridge_channel *parker, return -1; } - if (table->module_info) { - SCOPED_MODULE_USE(table->module_info->self); + if (table->module) { + SCOPED_MODULE_USE(table->module); return table->parking_blind_transfer_park(parker, context, exten, parked_channel_cb, parked_channel_data); } @@ -170,8 +170,8 @@ int ast_parking_park_call(struct ast_bridge_channel *parker, char *exten, size_t return -1; } - if (table->module_info) { - SCOPED_MODULE_USE(table->module_info->self); + if (table->module) { + SCOPED_MODULE_USE(table->module); return table->parking_park_call(parker, exten, length); } @@ -187,8 +187,8 @@ int ast_parking_is_exten_park(const char *context, const char *exten) return -1; } - if (table->module_info) { - SCOPED_MODULE_USE(table->module_info->self); + if (table->module) { + SCOPED_MODULE_USE(table->module); return table->parking_is_exten_park(context, exten); } diff --git a/res/parking/parking_applications.c b/res/parking/parking_applications.c index 762bf55665..5077474304 100644 --- a/res/parking/parking_applications.c +++ b/res/parking/parking_applications.c @@ -868,8 +868,6 @@ static int park_and_announce_app_exec(struct ast_channel *chan, const char *data int load_parking_applications(void) { - const struct ast_module_info *ast_module_info = parking_get_module_info(); - if (ast_register_application_xml(PARK_APPLICATION, park_app_exec)) { return -1; } diff --git a/res/parking/parking_bridge_features.c b/res/parking/parking_bridge_features.c index 4a01e4cee5..4cb87c81a7 100644 --- a/res/parking/parking_bridge_features.c +++ b/res/parking/parking_bridge_features.c @@ -502,7 +502,7 @@ static int parking_park_call(struct ast_bridge_channel *parker, char *exten, siz static int feature_park_call(struct ast_bridge_channel *bridge_channel, void *hook_pvt) { - SCOPED_MODULE_USE(parking_get_module_info()->self); + SCOPED_MODULE_USE(AST_MODULE_SELF); return parking_park_call(bridge_channel, NULL, 0); } @@ -726,7 +726,7 @@ void unload_parking_bridge_features(void) int load_parking_bridge_features(void) { - parking_provider.module_info = parking_get_module_info(); + parking_provider.module = AST_MODULE_SELF; if (ast_parking_register_bridge_features(&parking_provider)) { return -1; diff --git a/res/parking/parking_manager.c b/res/parking/parking_manager.c index ffa4bc7208..175ae5f8bb 100644 --- a/res/parking/parking_manager.c +++ b/res/parking/parking_manager.c @@ -678,11 +678,10 @@ static void parking_manager_enable_stasis(void) int load_parking_manager(void) { int res; - const struct ast_module_info *module = parking_get_module_info(); - res = ast_manager_register2("Parkinglots", EVENT_FLAG_CALL, manager_parking_lot_list, module->self, NULL, NULL); - res |= ast_manager_register2("ParkedCalls", EVENT_FLAG_CALL, manager_parking_status, module->self, NULL, NULL); - res |= ast_manager_register2("Park", EVENT_FLAG_CALL, manager_park, module->self, NULL, NULL); + res = ast_manager_register_xml("Parkinglots", EVENT_FLAG_CALL, manager_parking_lot_list); + res |= ast_manager_register_xml("ParkedCalls", EVENT_FLAG_CALL, manager_parking_status); + res |= ast_manager_register_xml("Park", EVENT_FLAG_CALL, manager_park); parking_manager_enable_stasis(); return res ? -1 : 0; } diff --git a/res/parking/res_parking.h b/res/parking/res_parking.h index 3d77e514c4..2c4a18055e 100644 --- a/res/parking/res_parking.h +++ b/res/parking/res_parking.h @@ -560,12 +560,3 @@ int load_parking_tests(void); * \return Nothing */ void unload_parking_tests(void); - -struct ast_module_info; -/*! - * \since 12.0.0 - * \brief Get res_parking's module info - * - * \retval res_parking's ast_module - */ -const struct ast_module_info *parking_get_module_info(void); diff --git a/res/res_parking.c b/res/res_parking.c index a40990ede3..02740da61b 100644 --- a/res/res_parking.c +++ b/res/res_parking.c @@ -1159,11 +1159,6 @@ static void link_configured_disable_marked_lots(void) disable_marked_lots(); } -const struct ast_module_info *parking_get_module_info(void) -{ - return ast_module_info; -} - static int unload_module(void) { unload_parking_bridge_features(); diff --git a/res/res_pjsip.c b/res/res_pjsip.c index 8be019f878..a2638099bc 100644 --- a/res/res_pjsip.c +++ b/res/res_pjsip.c @@ -3650,7 +3650,7 @@ static int load_module(void) ast_sip_initialize_global_headers(); - if (ast_res_pjsip_initialize_configuration(ast_module_info)) { + if (ast_res_pjsip_initialize_configuration()) { ast_log(LOG_ERROR, "Failed to initialize SIP configuration. Aborting load\n"); ast_sip_destroy_global_headers(); stop_monitor_thread(); diff --git a/res/res_pjsip/include/res_pjsip_private.h b/res/res_pjsip/include/res_pjsip_private.h index 5120fc6c9b..a53e0c45d5 100644 --- a/res/res_pjsip/include/res_pjsip_private.h +++ b/res/res_pjsip/include/res_pjsip_private.h @@ -25,7 +25,7 @@ struct ast_sip_cli_context; * \internal * \brief Initialize the configuration for res_pjsip */ -int ast_res_pjsip_initialize_configuration(const struct ast_module_info *ast_module_info); +int ast_res_pjsip_initialize_configuration(void); /*! * \internal diff --git a/res/res_pjsip/pjsip_configuration.c b/res/res_pjsip/pjsip_configuration.c index 54fdb658bf..f147b34d32 100644 --- a/res/res_pjsip/pjsip_configuration.c +++ b/res/res_pjsip/pjsip_configuration.c @@ -1742,7 +1742,7 @@ static struct ast_cli_entry cli_commands[] = { struct ast_sip_cli_formatter_entry *channel_formatter; struct ast_sip_cli_formatter_entry *endpoint_formatter; -int ast_res_pjsip_initialize_configuration(const struct ast_module_info *ast_module_info) +int ast_res_pjsip_initialize_configuration(void) { if (ast_manager_register_xml(AMI_SHOW_ENDPOINTS, EVENT_FLAG_SYSTEM, ami_show_endpoints) || ast_manager_register_xml(AMI_SHOW_ENDPOINT, EVENT_FLAG_SYSTEM, ami_show_endpoint)) { diff --git a/res/res_pjsip/pjsip_options.c b/res/res_pjsip/pjsip_options.c index 8ffb88c494..87c67fae35 100644 --- a/res/res_pjsip/pjsip_options.c +++ b/res/res_pjsip/pjsip_options.c @@ -1181,7 +1181,7 @@ int ast_res_pjsip_init_options_handling(int reload) } internal_sip_register_endpoint_formatter(&contact_status_formatter); - ast_manager_register2("PJSIPQualify", EVENT_FLAG_SYSTEM | EVENT_FLAG_REPORTING, ami_sip_qualify, NULL, NULL, NULL); + ast_manager_register_xml("PJSIPQualify", EVENT_FLAG_SYSTEM | EVENT_FLAG_REPORTING, ami_sip_qualify); ast_cli_register_multiple(cli_options, ARRAY_LEN(cli_options)); qualify_and_schedule_all(); diff --git a/utils/Makefile b/utils/Makefile index af216738b5..97b0e2fe6e 100644 --- a/utils/Makefile +++ b/utils/Makefile @@ -150,6 +150,8 @@ pbx_ael.c: $(ASTTOPDIR)/pbx/pbx_ael.c $(CMD_PREFIX) sed 's/ast_debug([[:digit:]][[:digit:]]*/ast_log(LOG_DEBUG/' "$@" > "$@.new" $(CMD_PREFIX) mv "$@.new" "$@" +pbx_ael.o: _ASTCFLAGS+=-DAST_MODULE_SELF_SYM=__internal_pbx_ael_self + aelparse.c: $(ASTTOPDIR)/res/ael/ael_lex.c $(ECHO_PREFIX) echo " [CP] $(subst $(ASTTOPDIR)/,,$<) -> $@" $(CMD_PREFIX) cp "$<" "$@" -- GitLab