From: Arran Cudbard-Bell Date: Mon, 2 Jul 2018 14:26:31 +0000 (-0400) Subject: Explain DL priorities X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7ed4da650f36af2f9b40a151d91cde8204de68b3;p=thirdparty%2Ffreeradius-server.git Explain DL priorities --- diff --git a/src/include/dl.h b/src/include/dl.h index cfeca192d02..7c595e61ce7 100644 --- a/src/include/dl.h +++ b/src/include/dl.h @@ -161,10 +161,13 @@ struct dl_instance { dl_instance_t const *parent; //!< Parent module's instance (if any). }; -#define DL_DICT_PRIORITY 11 //!< Callback priority for dictionary autoloading -#define DL_DICT_ATTR_PRIORITY 10 //!< Callback priority for attribute resolution -#define DL_INSTANTIATE_PRIORITY 5 //!< Callback priority for bootstrap callback - +/** Callback priorities + * + * The higher the priority, the earlier in callback gets called. + */ +#define DL_PRIORITY_DICT 30 //!< Callback priority for dictionary autoloading +#define DL_PRIORITY_DICT_ATTR 20 //!< Callback priority for attribute resolution +#define DL_PRIORITY_INSTANTIATE 10 //!< Callback priority for bootstrap callback int dl_loader_init(TALLOC_CTX *ctx, char const *lib_dir); diff --git a/src/main/dl.c b/src/main/dl.c index 4360047b2b9..1fdfad06e36 100644 --- a/src/main/dl.c +++ b/src/main/dl.c @@ -979,12 +979,12 @@ int dl_loader_init(TALLOC_CTX *ctx, char const *lib_dir) goto error; } - if (dl_symbol_init_cb_register(DL_INSTANTIATE_PRIORITY, NULL, dl_load_func, NULL) < 0) { + if (dl_symbol_init_cb_register(DL_PRIORITY_INSTANTIATE, NULL, dl_load_func, NULL) < 0) { ERROR("Failed registering load() callback"); goto error; } - if (dl_symbol_free_cb_register(DL_INSTANTIATE_PRIORITY, NULL, dl_unload_func, NULL) < 0) { + if (dl_symbol_free_cb_register(DL_PRIORITY_INSTANTIATE, NULL, dl_unload_func, NULL) < 0) { ERROR("Failed registering unload() callback"); goto error; } diff --git a/src/main/mainconfig.c b/src/main/mainconfig.c index b5510327d32..3d7511aac65 100644 --- a/src/main/mainconfig.c +++ b/src/main/mainconfig.c @@ -992,9 +992,9 @@ do {\ /* * Register dictionary autoload callbacks */ - dl_symbol_init_cb_register(DL_DICT_ATTR_PRIORITY, "dict_attr", _module_dict_attr_autoload, NULL); - dl_symbol_init_cb_register(DL_DICT_PRIORITY, "dict", _module_dict_autoload, NULL); - dl_symbol_free_cb_register(DL_DICT_PRIORITY, "dict", _module_dict_autofree, NULL); + dl_symbol_init_cb_register(DL_PRIORITY_DICT_ATTR, "dict_attr", _module_dict_attr_autoload, NULL); + dl_symbol_init_cb_register(DL_PRIORITY_DICT, "dict", _module_dict_autoload, NULL); + dl_symbol_free_cb_register(DL_PRIORITY_DICT, "dict", _module_dict_autofree, NULL); /* Read the configuration file */ snprintf(buffer, sizeof(buffer), "%.200s/%.50s.conf", config->raddb_dir, config->name);