#endif
#include <freeradius-devel/unlang/base.h>
#include <freeradius-devel/unlang/xlat.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
#include <freeradius-devel/util/atexit.h>
#include <freeradius-devel/util/base64.h>
#include <freeradius-devel/util/calc.h>
unlang_thread_instantiate(thread_ctx);
- if (!xlat_register(NULL, "test", xlat_test, FR_TYPE_NULL)) {
+ if (!xlat_func_register(NULL, "test", xlat_test, FR_TYPE_NULL)) {
ERROR("Failed registering xlat");
EXIT_WITH_FAILURE;
}
/*
* xlat.c
*/
-void fr_aka_sim_xlat_register(void);
-void fr_aka_sim_xlat_unregister(void);
+void fr_aka_sim_xlat_func_register(void);
+void fr_aka_sim_xlat_func_unregister(void);
*/
#include <freeradius-devel/server/base.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
#include "base.h"
#include "attrs.h"
return XLAT_ACTION_DONE;
}
-void fr_aka_sim_xlat_register(void)
+void fr_aka_sim_xlat_func_register(void)
{
xlat_t *xlat;
return;
}
- xlat = xlat_register(NULL, "aka_sim_id_method", aka_sim_xlat_id_method_xlat, FR_TYPE_STRING);
+ xlat = xlat_func_register(NULL, "aka_sim_id_method", aka_sim_xlat_id_method_xlat, FR_TYPE_STRING);
xlat_func_args_set(xlat, aka_sim_xlat_id_method_xlat_args);
- xlat = xlat_register(NULL, "aka_sim_id_type", aka_sim_xlat_id_type_xlat, FR_TYPE_STRING);
+ xlat = xlat_func_register(NULL, "aka_sim_id_type", aka_sim_xlat_id_type_xlat, FR_TYPE_STRING);
xlat_func_args_set(xlat, aka_sim_xlat_id_type_xlat_args);
- xlat = xlat_register(NULL, "3gpp_temporary_id_key_index", aka_sim_id_3gpp_temporary_id_key_index_xlat, FR_TYPE_UINT8);
+ xlat = xlat_func_register(NULL, "3gpp_temporary_id_key_index", aka_sim_id_3gpp_temporary_id_key_index_xlat, FR_TYPE_UINT8);
xlat_func_args_set(xlat, aka_sim_id_3gpp_temporary_id_key_index_xlat_args);
- xlat = xlat_register(NULL, "3gpp_temporary_id_decrypt", aka_sim_3gpp_temporary_id_decrypt_xlat, FR_TYPE_STRING);
+ xlat = xlat_func_register(NULL, "3gpp_temporary_id_decrypt", aka_sim_3gpp_temporary_id_decrypt_xlat, FR_TYPE_STRING);
xlat_func_args_set(xlat, aka_sim_3gpp_temporary_id_decrypt_xlat_args);
- xlat = xlat_register(NULL, "3gpp_temporary_id_encrypt", aka_sim_3gpp_temporary_id_encrypt_xlat, FR_TYPE_STRING);
+ xlat = xlat_func_register(NULL, "3gpp_temporary_id_encrypt", aka_sim_3gpp_temporary_id_encrypt_xlat, FR_TYPE_STRING);
xlat_func_args_set(xlat, aka_sim_3gpp_temporary_id_encrypt_xlat_args);
aka_sim_xlat_refs = 1;
}
-void fr_aka_sim_xlat_unregister(void)
+void fr_aka_sim_xlat_func_unregister(void)
{
if (aka_sim_xlat_refs > 1) {
aka_sim_xlat_refs--;
return;
}
- xlat_unregister("aka_sim_id_method");
- xlat_unregister("aka_sim_id_type");
- xlat_unregister("3gpp_pseudonym_key_index");
- xlat_unregister("3gpp_pseudonym_decrypt");
- xlat_unregister("3gpp_pseudonym_encrypt");
+ xlat_func_unregister("aka_sim_id_method");
+ xlat_func_unregister("aka_sim_id_type");
+ xlat_func_unregister("3gpp_pseudonym_key_index");
+ xlat_func_unregister("3gpp_pseudonym_decrypt");
+ xlat_func_unregister("3gpp_pseudonym_encrypt");
aka_sim_xlat_refs = 0;
}
#include <freeradius-devel/util/perm.h>
#include <freeradius-devel/util/sem.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
#include <sys/stat.h>
#include <pwd.h>
xlat_t *xlat;
/*
- * Initialize the xlats before we load the configuration files, so that we can later call xlat_register().
+ * Initialize the xlats before we load the configuration files,
+ * so that we can later call xlat_func_register().
*/
- xlat_register_init();
+ xlat_func_init();
if (stat(config->raddb_dir, &statbuf) < 0) {
ERROR("Error checking raddb_dir \"%s\": %s", config->raddb_dir, fr_syserror(errno));
/*
* Register the %(config:section.subsection) xlat function.
*/
- xlat = xlat_register(NULL, "config", xlat_config, FR_TYPE_STRING);
+ xlat = xlat_func_register(NULL, "config", xlat_config, FR_TYPE_STRING);
xlat_func_args_set(xlat, xlat_config_args);
- xlat_func_flags_set(xlat, XLAT_FLAG_PURE);
+ xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_PURE);
/*
* Ensure cwd is inside the chroot.
#include <freeradius-devel/server/module_rlm.h>
#include <freeradius-devel/server/radmin.h>
#include <freeradius-devel/server/request_data.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
/** Heap of all lists/modules used to get a common index with module_thread_inst_list
*
* Remove all xlat's registered to module instance.
*/
if (mi->dl_inst && mi->dl_inst->data) {
- xlat_unregister(mi->name);
+ xlat_func_unregister(mi->name);
/*
* Remove any registered paircmps.
*/
paircmp_unregister_instance(mi->dl_inst->data);
- xlat_unregister_module(mi->dl_inst);
+ xlat_func_unregister_module(mi->dl_inst);
}
/*
#include <freeradius-devel/server/pair.h>
#include <freeradius-devel/server/virtual_servers.h>
#include <freeradius-devel/util/atexit.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
#include <freeradius-devel/unlang/xlat_redundant.h>
/** Lookup virtual module by name
xlat_builtin.c \
xlat_eval.c \
xlat_expr.c \
+ xlat_func.c \
xlat_inst.c \
xlat_pair.c \
xlat_purify.c \
xlat_redundant.c \
- xlat_register.c \
xlat_tokenize.c
HEADERS := $(subst src/lib/,,$(wildcard src/lib/unlang/*.h))
RCSID("$Id$")
#include <freeradius-devel/server/request_data.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
#include "foreach_priv.h"
#include "return_priv.h"
for (i = 0; i < NUM_ELEMENTS(xlat_foreach_names); i++) {
xlat_t *x;
- x = xlat_register(NULL, xlat_foreach_names[i],
+ x = xlat_func_register(NULL, xlat_foreach_names[i],
unlang_foreach_xlat, FR_TYPE_VOID);
fr_assert(x);
x->uctx = &xlat_foreach_inst[i];
size_t i;
for (i = 0; i < NUM_ELEMENTS(xlat_foreach_names); i++) {
- xlat_unregister(xlat_foreach_names[i]);
+ xlat_func_unregister(xlat_foreach_names[i]);
}
}
#include <freeradius-devel/server/base.h>
#include <freeradius-devel/server/modpriv.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
#include "interpret_priv.h"
#include "module_priv.h"
switch (action) {
case FR_SIGNAL_CANCEL:
/*
- * Detach the request from the parent to cleanup
+ * Detach the request from the parent to cleanup
* any cross-request pointers. This is a noop
* if the request is not detachable.
*/
* Should be void, but someone decided not to register multiple xlats
* breaking the convention we use everywhere else in the server...
*/
- xlat = xlat_register(NULL, "interpreter", unlang_interpret_xlat, FR_TYPE_VOID);
+ xlat = xlat_func_register(NULL, "interpreter", unlang_interpret_xlat, FR_TYPE_VOID);
xlat_func_args_set(xlat, unlang_interpret_xlat_args);
- xlat = xlat_register(NULL, "cancel", unlang_cancel_xlat, FR_TYPE_VOID);
+ xlat = xlat_func_register(NULL, "cancel", unlang_cancel_xlat, FR_TYPE_VOID);
xlat_func_args_set(xlat, unlang_cancel_xlat_args);
}
bool constant; //!< xlat is just tmpl_attr_tail_data, or XLAT_BOX
} xlat_flags_t;
-/*
- * Simplify many use-cases
- *
- * We can't set "needs_resolving" here, and async functions can't be pure.
- */
-#define XLAT_FLAG_PURE &(xlat_flags_t) { .pure = true, }
-
extern fr_table_num_sorted_t const xlat_action_table[];
extern size_t xlat_action_table_len;
#include <freeradius-devel/server/base.h>
#include <freeradius-devel/server/tmpl_dcursor.h>
#include <freeradius-devel/unlang/xlat_priv.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
#include <freeradius-devel/unlang/xlat.h>
#include <freeradius-devel/io/test_point.h>
if (tp_decode) {
snprintf(buffer, sizeof(buffer), "decode.%s", name);
- xlat = xlat_register(NULL, buffer, protocol_decode_xlat, FR_TYPE_UINT32);
+ xlat = xlat_func_register(NULL, buffer, protocol_decode_xlat, FR_TYPE_UINT32);
if (!xlat) return -1;
xlat_func_args_set(xlat, protocol_decode_xlat_args);
/* coverity[suspicious_sizeof] */
- xlat_async_instantiate_set(xlat, protocol_xlat_instantiate, fr_test_point_pair_decode_t *, NULL, tp_decode);
+ xlat_func_async_instantiate_set(xlat, protocol_xlat_instantiate, fr_test_point_pair_decode_t *, NULL, tp_decode);
xlat_internal(xlat);
}
if (tp_encode) {
snprintf(buffer, sizeof(buffer), "encode.%s", name);
- xlat = xlat_register(NULL, buffer, protocol_encode_xlat, FR_TYPE_OCTETS);
+ xlat = xlat_func_register(NULL, buffer, protocol_encode_xlat, FR_TYPE_OCTETS);
if (!xlat) return -1;
xlat_func_args_set(xlat, protocol_encode_xlat_args);
/* coverity[suspicious_sizeof] */
- xlat_async_instantiate_set(xlat, protocol_xlat_instantiate, fr_test_point_pair_encode_t *, NULL, tp_encode);
+ xlat_func_async_instantiate_set(xlat, protocol_xlat_instantiate, fr_test_point_pair_encode_t *, NULL, tp_encode);
xlat_internal(xlat);
}
{
xlat_t *xlat;
- if (xlat_register_init() < 0) return -1;
+ if (xlat_func_init() < 0) return -1;
/*
* Lookup attributes used by virtual xlat expansions.
*/
#define XLAT_REGISTER_ARGS(_xlat, _func, _return_type, _args) \
do { \
- if (!(xlat = xlat_register(NULL, _xlat, _func, _return_type))) return -1; \
+ if (!(xlat = xlat_func_register(NULL, _xlat, _func, _return_type))) return -1; \
xlat_func_args_set(xlat, _args); \
- xlat_func_flags_set(xlat, XLAT_FLAG_PURE); \
+ xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_PURE); \
xlat_internal(xlat); \
} while (0)
#undef XLAT_REGISTER_ARGS
#define XLAT_REGISTER_ARGS(_xlat, _func, _return_type, _args) \
do { \
- if (!(xlat = xlat_register(NULL, _xlat, _func, _return_type))) return -1; \
+ if (!(xlat = xlat_func_register(NULL, _xlat, _func, _return_type))) return -1; \
xlat_func_args_set(xlat, _args); \
xlat_internal(xlat); \
} while (0)
XLAT_REGISTER_ARGS("flatten", xlat_func_flatten, FR_TYPE_NULL, xlat_func_debug_attr_args); /* takes an attribute reference */
XLAT_REGISTER_ARGS("unflatten", xlat_func_unflatten, FR_TYPE_NULL, xlat_func_debug_attr_args); /* takes an attribute reference */
- xlat = xlat_register(NULL, "untaint", xlat_func_untaint, FR_TYPE_VOID);
+ xlat = xlat_func_register(NULL, "untaint", xlat_func_untaint, FR_TYPE_VOID);
xlat_internal(xlat);
- xlat = xlat_register(NULL, "taint", xlat_func_taint, FR_TYPE_VOID);
+ xlat = xlat_func_register(NULL, "taint", xlat_func_taint, FR_TYPE_VOID);
xlat_internal(xlat);
/*
*/
#define XLAT_REGISTER_MONO(_xlat, _func, _return_type, _arg) \
do { \
- if (!(xlat = xlat_register(NULL, _xlat, _func, _return_type))) return -1; \
+ if (!(xlat = xlat_func_register(NULL, _xlat, _func, _return_type))) return -1; \
xlat_func_mono_set(xlat, _arg); \
- xlat_func_flags_set(xlat, XLAT_FLAG_PURE); \
+ xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_PURE); \
xlat_internal(xlat); \
} while (0)
XLAT_REGISTER_MONO("md5", xlat_func_md5, FR_TYPE_OCTETS, xlat_func_md5_arg);
XLAT_REGISTER_MONO("pack", xlat_func_pack, FR_TYPE_OCTETS, xlat_func_pack_arg);
#if defined(HAVE_REGEX_PCRE) || defined(HAVE_REGEX_PCRE2)
- xlat = xlat_register(NULL, "regex", xlat_func_regex, FR_TYPE_STRING);
+ xlat = xlat_func_register(NULL, "regex", xlat_func_regex, FR_TYPE_STRING);
xlat_internal(xlat);
#endif
XLAT_REGISTER_MONO("sha1", xlat_func_sha1, FR_TYPE_OCTETS, xlat_func_sha_arg);
#undef XLAT_REGISTER_MONO
#define XLAT_REGISTER_MONO(_xlat, _func, _return_type, _arg) \
do { \
- if (!(xlat = xlat_register(NULL, _xlat, _func, _return_type))) return -1; \
+ if (!(xlat = xlat_func_register(NULL, _xlat, _func, _return_type))) return -1; \
xlat_func_mono_set(xlat, _arg); \
xlat_internal(xlat); \
} while (0)
XLAT_REGISTER_MONO("rand", xlat_func_rand, FR_TYPE_UINT64, xlat_func_rand_arg);
XLAT_REGISTER_MONO("randstr", xlat_func_randstr, FR_TYPE_STRING, xlat_func_randstr_arg);
- xlat = xlat_register(NULL, "module", xlat_func_module, FR_TYPE_STRING);
+ xlat = xlat_func_register(NULL, "module", xlat_func_module, FR_TYPE_STRING);
xlat_internal(xlat);
return xlat_register_expressions();
*/
void xlat_free(void)
{
- xlat_register_free();
+ xlat_func_free();
xlat_eval_free();
}
#include <freeradius-devel/unlang/xlat_priv.h>
#include <freeradius-devel/util/calc.h>
#include <freeradius-devel/server/tmpl_dcursor.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
#undef XLAT_DEBUG
#ifdef DEBUG_XLAT
#undef XLAT_REGISTER_BINARY_OP
#define XLAT_REGISTER_BINARY_OP(_op, _name) \
do { \
- if (!(xlat = xlat_register(NULL, "op_" STRINGIFY(_name), xlat_func_op_ ## _name, FR_TYPE_VOID))) return -1; \
+ if (!(xlat = xlat_func_register(NULL, "op_" STRINGIFY(_name), xlat_func_op_ ## _name, FR_TYPE_VOID))) return -1; \
xlat_func_args_set(xlat, binary_op_xlat_args); \
- xlat_func_flags_set(xlat, XLAT_FLAG_PURE); \
+ xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_PURE); \
xlat_internal(xlat); \
xlat_print_set(xlat, xlat_expr_print_binary); \
- xlat_async_instantiate_set(xlat, xlat_function_args_to_tmpl, NULL, NULL, NULL); \
+ xlat_func_async_instantiate_set(xlat, xlat_function_args_to_tmpl, NULL, NULL, NULL); \
xlat->token = _op; \
} while (0)
#undef XLAT_REGISTER_BINARY_CMP
#define XLAT_REGISTER_BINARY_CMP(_op, _name) \
do { \
- if (!(xlat = xlat_register(NULL, "cmp_" STRINGIFY(_name), xlat_func_cmp_ ## _name, FR_TYPE_VOID))) return -1; \
+ if (!(xlat = xlat_func_register(NULL, "cmp_" STRINGIFY(_name), xlat_func_cmp_ ## _name, FR_TYPE_VOID))) return -1; \
xlat_func_args_set(xlat, binary_op_xlat_args); \
- xlat_func_flags_set(xlat, XLAT_FLAG_PURE); \
+ xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_PURE); \
xlat_internal(xlat); \
xlat_print_set(xlat, xlat_expr_print_binary); \
xlat_resolve_set(xlat, xlat_expr_resolve_binary); \
#undef XLAT_REGISTER_NARY_OP
#define XLAT_REGISTER_NARY_OP(_op, _name, _func_name) \
do { \
- if (!(xlat = xlat_register(NULL, STRINGIFY(_name), xlat_func_ ## _func_name, FR_TYPE_VOID))) return -1; \
- xlat_async_instantiate_set(xlat, xlat_instantiate_ ## _func_name, xlat_ ## _func_name ## _inst_t, NULL, NULL); \
- xlat_func_flags_set(xlat, XLAT_FLAG_PURE); \
+ if (!(xlat = xlat_func_register(NULL, STRINGIFY(_name), xlat_func_ ## _func_name, FR_TYPE_VOID))) return -1; \
+ xlat_func_async_instantiate_set(xlat, xlat_instantiate_ ## _func_name, xlat_ ## _func_name ## _inst_t, NULL, NULL); \
+ xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_PURE); \
xlat_internal(xlat); \
xlat_print_set(xlat, xlat_expr_print_ ## _func_name); \
xlat_purify_set(xlat, xlat_expr_logical_purify); \
#undef XLAT_REGISTER_REGEX_OP
#define XLAT_REGISTER_REGEX_OP(_op, _name) \
do { \
- if (!(xlat = xlat_register(NULL, STRINGIFY(_name), xlat_func_ ## _name, FR_TYPE_VOID))) return -1; \
+ if (!(xlat = xlat_func_register(NULL, STRINGIFY(_name), xlat_func_ ## _name, FR_TYPE_VOID))) return -1; \
xlat_func_args_set(xlat, regex_op_xlat_args); \
- xlat_func_flags_set(xlat, XLAT_FLAG_PURE); \
- xlat_async_instantiate_set(xlat, xlat_instantiate_regex, xlat_regex_inst_t, NULL, NULL); \
+ xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_PURE); \
+ xlat_func_async_instantiate_set(xlat, xlat_instantiate_regex, xlat_regex_inst_t, NULL, NULL); \
xlat_print_set(xlat, xlat_expr_print_regex); \
xlat_internal(xlat); \
xlat->token = _op; \
#define XLAT_REGISTER_MONO(_xlat, _func, _arg) \
do { \
- if (!(xlat = xlat_register(NULL, _xlat, _func, FR_TYPE_VOID))) return -1; \
+ if (!(xlat = xlat_func_register(NULL, _xlat, _func, FR_TYPE_VOID))) return -1; \
xlat_func_mono_set(xlat, _arg); \
xlat_internal(xlat); \
} while (0)
#define XLAT_REGISTER_UNARY(_op, _xlat, _func) \
do { \
- if (!(xlat = xlat_register(NULL, _xlat, _func, FR_TYPE_VOID))) return -1; \
+ if (!(xlat = xlat_func_register(NULL, _xlat, _func, FR_TYPE_VOID))) return -1; \
xlat_func_args_set(xlat, unary_op_xlat_args); \
- xlat_func_flags_set(xlat, XLAT_FLAG_PURE); \
+ xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_PURE); \
xlat_internal(xlat); \
xlat_print_set(xlat, xlat_expr_print_unary); \
xlat->token = _op; \
XLAT_REGISTER_MONO("rcode", xlat_func_rcode, xlat_func_rcode_arg);
XLAT_REGISTER_MONO("exists", xlat_func_exists, xlat_func_exists_arg);
- xlat_async_instantiate_set(xlat, xlat_instantiate_exists, xlat_exists_inst_t, NULL, NULL);
+ xlat_func_async_instantiate_set(xlat, xlat_instantiate_exists, xlat_exists_inst_t, NULL, NULL);
xlat_print_set(xlat, xlat_expr_print_exists);
/*
/*
* Callback wrapper around old paircmp() API.
*/
- if (!(xlat = xlat_register(NULL, "paircmp", xlat_paircmp_func, FR_TYPE_VOID))) return -1; /* never pure! */
+ if (!(xlat = xlat_func_register(NULL, "paircmp", xlat_paircmp_func, FR_TYPE_VOID))) return -1; /* never pure! */
xlat_func_args_set(xlat, xlat_paircmp_xlat_args);
xlat_internal(xlat);
#include <freeradius-devel/unlang/xlat_priv.h>
#include <freeradius-devel/unlang/xlat.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
static fr_rb_tree_t *xlat_root = NULL;
* - A handle for the newly registered xlat function on success.
* - NULL on failure.
*/
-xlat_t *xlat_register_module(TALLOC_CTX *ctx, module_inst_ctx_t const *mctx,
+xlat_t *xlat_func_register_module(TALLOC_CTX *ctx, module_inst_ctx_t const *mctx,
char const *name, xlat_func_t func, fr_type_t return_type)
{
xlat_t *c;
* - A handle for the newly registered xlat function on success.
* - NULL on failure.
*/
-xlat_t *xlat_register(TALLOC_CTX *ctx, char const *name, xlat_func_t func, fr_type_t return_type)
+xlat_t *xlat_func_register(TALLOC_CTX *ctx, char const *name, xlat_func_t func, fr_type_t return_type)
{
- return xlat_register_module(ctx, NULL, name, func, return_type);
+ return xlat_func_register_module(ctx, NULL, name, func, return_type);
}
/** Verify xlat arg specifications are valid
* @param[in] x xlat to set flags for.
* @param[in] flags to set.
*/
-void xlat_func_flags_set(xlat_t *x, xlat_flags_t const *flags)
+void xlat_func_flags_set(xlat_t *x, xlat_func_flags_t flags)
{
- /*
- * If the function is async, it can't be pure. But
- * non-pure functions don't need to be async.
- */
- fr_assert(!flags->needs_resolving);
-
- x->flags = *flags;
+ x->flags.pure = flags & XLAT_FUNC_FLAG_PURE;
}
/** Set global instantiation/detach callbacks
* @param[in] detach Called when an xlat_exp_t is freed.
* @param[in] uctx Passed to the instantiation function.
*/
-void _xlat_async_instantiate_set(xlat_t const *xlat,
+void _xlat_func_async_instantiate_set(xlat_t const *xlat,
xlat_instantiate_t instantiate, char const *inst_type, size_t inst_size,
xlat_detach_t detach,
void *uctx)
* @param[in] thread_detach Called when the thread is freed.
* @param[in] uctx Passed to the thread instantiate function.
*/
-void _xlat_async_thread_instantiate_set(xlat_t const *xlat,
+void _xlat_func_async_thread_instantiate_set(xlat_t const *xlat,
xlat_thread_instantiate_t thread_instantiate,
char const *thread_inst_type, size_t thread_inst_size,
xlat_thread_detach_t thread_detach,
*
* @param[in] name xlat to unregister.
*/
-void xlat_unregister(char const *name)
+void xlat_func_unregister(char const *name)
{
xlat_t *c;
talloc_free(c); /* Should also remove from tree */
}
-void xlat_unregister_module(dl_module_inst_t const *inst)
+void xlat_func_unregister_module(dl_module_inst_t const *inst)
{
xlat_t *c;
fr_rb_iter_inorder_t iter;
}
}
-int xlat_register_init(void)
+int xlat_func_init(void)
{
if (xlat_root) return 0;
return 0;
}
-void xlat_register_free(void)
+void xlat_func_free(void)
{
fr_rb_tree_t *xr = xlat_root; /* Make sure the tree can't be freed multiple times */
/**
* $Id$
*
- * @file lib/unlang/xlat_register.h
+ * @file lib/unlang/xlat_func.h
* @brief Registration API for xlat functions.
*
* @copyright 2023 Arran Cudbard-Bell (a.cudbardb@freeradius.org)
#include <freeradius-devel/unlang/xlat.h>
-xlat_t *xlat_register_module(TALLOC_CTX *ctx, module_inst_ctx_t const *mctx,
- char const *name, xlat_func_t func, fr_type_t return_type);
-xlat_t *xlat_register(TALLOC_CTX *ctx, char const *name, xlat_func_t func, fr_type_t return_type) CC_HINT(nonnull(2));
+/*
+ * GCC doesn't support flag_enum (yet)
+ *
+ * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81665
+ */
+DIAG_OFF(attributes)
+typedef enum CC_HINT(flag_enum) {
+ XLAT_FUNC_FLAG_NONE = 0x00,
+ XLAT_FUNC_FLAG_PURE = 0x01
+} xlat_func_flags_t;
+DIAG_ON(attributes)
+
+xlat_t *xlat_func_register_module(TALLOC_CTX *ctx, module_inst_ctx_t const *mctx,
+ char const *name, xlat_func_t func, fr_type_t return_type);
+xlat_t *xlat_func_register(TALLOC_CTX *ctx, char const *name, xlat_func_t func, fr_type_t return_type) CC_HINT(nonnull(2));
int xlat_func_args_set(xlat_t *xlat, xlat_arg_parser_t const args[]) CC_HINT(nonnull);
int xlat_func_mono_set(xlat_t *xlat, xlat_arg_parser_t const *arg) CC_HINT(nonnull);
-void xlat_func_flags_set(xlat_t *x, xlat_flags_t const *flags) CC_HINT(nonnull);
+void xlat_func_flags_set(xlat_t *x, xlat_func_flags_t flags) CC_HINT(nonnull);
/** Set a callback for global instantiation of xlat functions
*
* @param[in] _detach A destructor callback.
* @param[in] _uctx to pass to _instantiate and _detach callbacks.
*/
-#define xlat_async_instantiate_set(_xlat, _instantiate, _inst_struct, _detach, _uctx) \
- _xlat_async_instantiate_set(_xlat, _instantiate, #_inst_struct, sizeof(_inst_struct), _detach, _uctx)
-void _xlat_async_instantiate_set(xlat_t const *xlat,
- xlat_instantiate_t instantiate, char const *inst_type, size_t inst_size,
- xlat_detach_t detach,
- void *uctx);
+#define xlat_func_async_instantiate_set(_xlat, _instantiate, _inst_struct, _detach, _uctx) \
+ _xlat_func_async_instantiate_set(_xlat, _instantiate, #_inst_struct, sizeof(_inst_struct), _detach, _uctx)
+void _xlat_func_async_instantiate_set(xlat_t const *xlat,
+ xlat_instantiate_t instantiate, char const *inst_type, size_t inst_size,
+ xlat_detach_t detach,
+ void *uctx);
/** Set a callback for thread-specific instantiation of xlat functions
*
* @param[in] _detach A destructor callback.
* @param[in] _uctx to pass to _instantiate and _detach callbacks.
*/
-#define xlat_async_thread_instantiate_set(_xlat, _instantiate, _inst_struct, _detach, _uctx) \
- _xlat_async_thread_instantiate_set(_xlat, _instantiate, #_inst_struct, sizeof(_inst_struct), _detach, _uctx)
-void _xlat_async_thread_instantiate_set(xlat_t const *xlat,
- xlat_thread_instantiate_t thread_instantiate,
- char const *thread_inst_type, size_t thread_inst_size,
- xlat_thread_detach_t thread_detach,
- void *uctx);
+#define xlat_func_async_thread_instantiate_set(_xlat, _instantiate, _inst_struct, _detach, _uctx) \
+ _xlat_func_async_thread_instantiate_set(_xlat, _instantiate, #_inst_struct, sizeof(_inst_struct), _detach, _uctx)
+void _xlat_func_async_thread_instantiate_set(xlat_t const *xlat,
+ xlat_thread_instantiate_t thread_instantiate,
+ char const *thread_inst_type, size_t thread_inst_size,
+ xlat_thread_detach_t thread_detach,
+ void *uctx);
-void xlat_unregister(char const *name);
-void xlat_unregister_module(dl_module_inst_t const *inst);
+void xlat_func_unregister(char const *name);
+void xlat_func_unregister_module(dl_module_inst_t const *inst);
/** @hidecallgraph */
-int xlat_register_init(void);
-void xlat_register_free(void);
+int xlat_func_init(void);
+void xlat_func_free(void);
#include <freeradius-devel/unlang/interpret.h>
#include <freeradius-devel/unlang/xlat_redundant.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
#include <freeradius-devel/unlang/xlat_priv.h>
#include <freeradius-devel/util/rand.h>
return 1;
}
- xlat = xlat_register(NULL, name2, xlat_redundant, return_type);
+ xlat = xlat_func_register(NULL, name2, xlat_redundant, return_type);
if (!xlat) {
ERROR("Registering xlat for %s section failed",
fr_table_str_by_value(xlat_redundant_type_table, xr->type, "<INVALID>"));
return -1;
}
xlat_func_flags_set(xlat, &flags);
- xlat_async_instantiate_set(xlat, xlat_redundant_instantiate, xlat_redundant_inst_t, NULL, xr);
+ xlat_func_async_instantiate_set(xlat, xlat_redundant_instantiate, xlat_redundant_inst_t, NULL, xr);
if (args) xlat_func_args_set(xlat, xlat_redundant_args);
return 0;
#include <freeradius-devel/server/base.h>
#include <freeradius-devel/server/module_rlm.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
/*
* The instance data for rlm_always is the list of fake values we are
return -1;
}
- xlat = xlat_register_module(inst, mctx, mctx->inst->name, always_xlat, FR_TYPE_STRING);
+ xlat = xlat_func_register_module(inst, mctx, mctx->inst->name, always_xlat, FR_TYPE_STRING);
xlat_func_args_set(xlat, always_xlat_args);
return 0;
#include <freeradius-devel/server/modpriv.h>
#include <freeradius-devel/server/dl_module.h>
#include <freeradius-devel/util/debug.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
#include "rlm_cache.h"
/*
* Register the cache xlat function
*/
- xlat = xlat_register_module(inst, mctx, mctx->inst->name, cache_xlat, FR_TYPE_VOID);
+ xlat = xlat_func_register_module(inst, mctx, mctx->inst->name, cache_xlat, FR_TYPE_VOID);
xlat_func_args_set(xlat, cache_xlat_args);
return 0;
#include <freeradius-devel/server/password.h>
#include <freeradius-devel/server/module_rlm.h>
#include <freeradius-devel/radius/radius.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
typedef struct {
fr_dict_enum_value_t *auth_type;
{
xlat_t *xlat;
- xlat = xlat_register(NULL, "chap_password", xlat_func_chap_password, FR_TYPE_OCTETS);
+ xlat = xlat_func_register(NULL, "chap_password", xlat_func_chap_password, FR_TYPE_OCTETS);
if (!xlat) return -1;
xlat_func_args_set(xlat, xlat_func_chap_password_args);
static void mod_unload(void)
{
- xlat_unregister("chap_password");
+ xlat_func_unregister("chap_password");
}
/*
#include <freeradius-devel/tls/log.h>
#include <freeradius-devel/tls/strerror.h>
#include <freeradius-devel/util/debug.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
#include <freeradius-devel/tls/openssl_user_macros.h>
#include <openssl/crypto.h>
* Register decrypt xlat
*/
xlat_name = talloc_asprintf(inst, "%s_decrypt", mctx->inst->name);
- xlat = xlat_register_module(inst, mctx, xlat_name, cipher_rsa_decrypt_xlat, FR_TYPE_STRING);
+ xlat = xlat_func_register_module(inst, mctx, xlat_name, cipher_rsa_decrypt_xlat, FR_TYPE_STRING);
xlat_func_mono_set(xlat, cipher_rsa_decrypt_xlat_arg);
talloc_free(xlat_name);
* Verify sign xlat
*/
xlat_name = talloc_asprintf(inst, "%s_verify", mctx->inst->name);
- xlat = xlat_register_module(inst, mctx, xlat_name, cipher_rsa_verify_xlat, FR_TYPE_BOOL);
+ xlat = xlat_func_register_module(inst, mctx, xlat_name, cipher_rsa_verify_xlat, FR_TYPE_BOOL);
xlat_func_args_set(xlat, cipher_rsa_verify_xlat_arg);
talloc_free(xlat_name);
}
* Register encrypt xlat
*/
xlat_name = talloc_asprintf(inst, "%s_encrypt", mctx->inst->name);
- xlat = xlat_register_module(inst, mctx, xlat_name, cipher_rsa_encrypt_xlat, FR_TYPE_OCTETS);
+ xlat = xlat_func_register_module(inst, mctx, xlat_name, cipher_rsa_encrypt_xlat, FR_TYPE_OCTETS);
xlat_func_mono_set(xlat, cipher_rsa_encrypt_xlat_arg);
talloc_free(xlat_name);
* Register sign xlat
*/
xlat_name = talloc_asprintf(inst, "%s_sign", mctx->inst->name);
- xlat = xlat_register_module(inst, mctx, xlat_name, cipher_rsa_sign_xlat, FR_TYPE_OCTETS);
+ xlat = xlat_func_register_module(inst, mctx, xlat_name, cipher_rsa_sign_xlat, FR_TYPE_OCTETS);
xlat_func_mono_set(xlat, cipher_rsa_sign_xlat_arg);
talloc_free(xlat_name);
* so we can optimise for return types.
*/
xlat_name = talloc_asprintf(inst, "%s_certificate", mctx->inst->name);
- xlat = xlat_register_module(inst, mctx, xlat_name, cipher_certificate_xlat, FR_TYPE_VOID);
+ xlat = xlat_func_register_module(inst, mctx, xlat_name, cipher_certificate_xlat, FR_TYPE_VOID);
xlat_func_args_set(xlat, cipher_certificate_xlat_args);
talloc_free(xlat_name);
#include <freeradius-devel/server/module_rlm.h>
#include <freeradius-devel/server/map_proc.h>
#include <freeradius-devel/util/debug.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
/** Client field
*
{
xlat_t *xlat;
- xlat = xlat_register(NULL, "client", xlat_client, FR_TYPE_STRING);
+ xlat = xlat_func_register(NULL, "client", xlat_client, FR_TYPE_STRING);
if (!xlat) return -1;
xlat_func_args_set(xlat, xlat_client_args);
static void mod_unload(void)
{
- xlat_unregister("client");
+ xlat_func_unregister("client");
}
/*
#include <freeradius-devel/server/base.h>
#include <freeradius-devel/server/module_rlm.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
#include <ctype.h>
#include <time.h>
rlm_date_t *inst = talloc_get_type_abort(mctx->inst->data, rlm_date_t );
xlat_t *xlat;
- xlat = xlat_register_module(inst, mctx, mctx->inst->name, xlat_date_convert, FR_TYPE_VOID);
+ xlat = xlat_func_register_module(inst, mctx, mctx->inst->name, xlat_date_convert, FR_TYPE_VOID);
xlat_func_args_set(xlat, xlat_date_convert_args);
return 0;
#include <freeradius-devel/util/debug.h>
#include <freeradius-devel/server/map_proc.h>
#include <freeradius-devel/util/time.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
typedef struct {
tmpl_t *delay; //!< How long we delay for.
rlm_delay_t *inst = talloc_get_type_abort(mctx->inst->data, rlm_delay_t);
xlat_t *xlat;
- xlat = xlat_register_module(inst, mctx, mctx->inst->name, xlat_delay, FR_TYPE_TIME_DELTA);
+ xlat = xlat_func_register_module(inst, mctx, mctx->inst->name, xlat_delay, FR_TYPE_TIME_DELTA);
xlat_func_args_set(xlat, xlat_delay_args);
return 0;
}
#include <freeradius-devel/server/base.h>
#include <freeradius-devel/server/module_rlm.h>
#include <freeradius-devel/util/debug.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
static xlat_arg_parser_t const xlat_dict_attr_by_num_args[] = {
{ .required = true, .single = true, .type = FR_TYPE_UINT32 },
*/
if (cf_section_name2(mctx->inst->conf) != NULL) return 0;
- xlat = xlat_register_module(inst, mctx, "attr_by_num", xlat_dict_attr_by_num, FR_TYPE_STRING);
+ xlat = xlat_func_register_module(inst, mctx, "attr_by_num", xlat_dict_attr_by_num, FR_TYPE_STRING);
xlat_func_args_set(xlat, xlat_dict_attr_by_num_args);
- xlat = xlat_register_module(inst, mctx, "attr_by_oid", xlat_dict_attr_by_oid, FR_TYPE_STRING);
+ xlat = xlat_func_register_module(inst, mctx, "attr_by_oid", xlat_dict_attr_by_oid, FR_TYPE_STRING);
xlat_func_args_set(xlat, xlat_dict_attr_by_oid_args);
- xlat = xlat_register_module(inst, mctx, "vendor", xlat_vendor, FR_TYPE_STRING);
+ xlat = xlat_func_register_module(inst, mctx, "vendor", xlat_vendor, FR_TYPE_STRING);
xlat_func_args_set(xlat, xlat_vendor_args);
- xlat = xlat_register_module(inst, mctx, "vendor_num", xlat_vendor_num, FR_TYPE_UINT32);
+ xlat = xlat_func_register_module(inst, mctx, "vendor_num", xlat_vendor_num, FR_TYPE_UINT32);
xlat_func_args_set(xlat, xlat_vendor_num_args);
- xlat = xlat_register_module(inst, mctx, "attr", xlat_attr, FR_TYPE_STRING);
+ xlat = xlat_func_register_module(inst, mctx, "attr", xlat_attr, FR_TYPE_STRING);
xlat_func_args_set(xlat, xlat_attr_args);
- xlat = xlat_register_module(inst, mctx, "attr_num", xlat_attr_num, FR_TYPE_UINT32);
+ xlat = xlat_func_register_module(inst, mctx, "attr_num", xlat_attr_num, FR_TYPE_UINT32);
xlat_func_args_set(xlat, xlat_attr_num_args);
return 0;
{
if (fr_aka_sim_init() < 0) return -1;
- fr_aka_sim_xlat_register();
+ fr_aka_sim_xlat_func_register();
return 0;
}
static void mod_unload(void)
{
- fr_aka_sim_xlat_unregister();
+ fr_aka_sim_xlat_func_unregister();
fr_aka_sim_free();
}
{
if (fr_aka_sim_init() < 0) return -1;
- fr_aka_sim_xlat_register();
+ fr_aka_sim_xlat_func_register();
return 0;
}
static void mod_unload(void)
{
- fr_aka_sim_xlat_unregister();
+ fr_aka_sim_xlat_func_unregister();
fr_aka_sim_free();
}
{
if (fr_aka_sim_init() < 0) return -1;
- fr_aka_sim_xlat_register();
+ fr_aka_sim_xlat_func_register();
return 0;
}
static void mod_unload(void)
{
- fr_aka_sim_xlat_unregister();
+ fr_aka_sim_xlat_func_unregister();
fr_aka_sim_free();
}
#include <freeradius-devel/server/module_rlm.h>
#include <freeradius-devel/util/debug.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
#include <ctype.h>
xlat_t *xlat;
MEM(unescape = talloc_asprintf(NULL, "un%s", mctx->inst->name));
- xlat = xlat_register_module(NULL, mctx, mctx->inst->name, escape_xlat, FR_TYPE_STRING);
+ xlat = xlat_func_register_module(NULL, mctx, mctx->inst->name, escape_xlat, FR_TYPE_STRING);
xlat_func_mono_set(xlat, escape_xlat_arg);
- xlat_func_flags_set(xlat, XLAT_FLAG_PURE);
+ xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_PURE);
- xlat = xlat_register_module(NULL, mctx, unescape, unescape_xlat, FR_TYPE_STRING);
+ xlat = xlat_func_register_module(NULL, mctx, unescape, unescape_xlat, FR_TYPE_STRING);
xlat_func_mono_set(xlat, unescape_xlat_arg);
- xlat_func_flags_set(xlat, XLAT_FLAG_PURE);
+ xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_PURE);
talloc_free(unescape);
return 0;
#include <freeradius-devel/server/tmpl.h>
#include <freeradius-devel/unlang/interpret.h>
#include <freeradius-devel/util/debug.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
/*
* Define a structure for our module configuration.
}
};
- xlat = xlat_register_module(NULL, mctx, mctx->inst->name, exec_xlat, FR_TYPE_STRING);
+ xlat = xlat_func_register_module(NULL, mctx, mctx->inst->name, exec_xlat, FR_TYPE_STRING);
xlat_func_args_set(xlat, exec_xlat_args);
if (inst->input) {
#include <freeradius-devel/server/module_rlm.h>
#include <freeradius-devel/util/cap.h>
#include <freeradius-devel/util/debug.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
#include <fcntl.h>
#include <unistd.h>
rlm_icmp_t *inst = talloc_get_type_abort(mctx->inst->data, rlm_icmp_t);
xlat_t *xlat;
- xlat = xlat_register_module(inst, mctx, mctx->inst->name, xlat_icmp, FR_TYPE_BOOL);
+ xlat = xlat_func_register_module(inst, mctx, mctx->inst->name, xlat_icmp, FR_TYPE_BOOL);
xlat_func_args_set(xlat, xlat_icmp_args);
FR_TIME_DELTA_BOUND_CHECK("timeout", inst->timeout, >=, fr_time_delta_from_msec(100)); /* 1/10s minimum timeout */
#include <freeradius-devel/server/base.h>
#include <freeradius-devel/server/module_rlm.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
#include <idna.h>
rlm_idn_t *inst = talloc_get_type_abort(mctx->inst->data, rlm_idn_t);
xlat_t *xlat;
- xlat = xlat_register_module(inst, mctx, mctx->inst->name, xlat_idna, FR_TYPE_STRING);
+ xlat = xlat_func_register_module(inst, mctx, mctx->inst->name, xlat_idna, FR_TYPE_STRING);
xlat_func_mono_set(xlat, xlat_idna_arg);
- xlat_func_flags_set(xlat, XLAT_FLAG_PURE);
+ xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_PURE);
return 0;
}
#include <freeradius-devel/server/module_rlm.h>
#include <freeradius-devel/server/map_proc.h>
#include <freeradius-devel/util/debug.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
#include <freeradius-devel/json/base.h>
#include <ctype.h>
char *name;
fr_json_format_t *format = inst->format;
- xlat = xlat_register_module(inst, mctx, "jsonquote", json_quote_xlat, FR_TYPE_STRING);
+ xlat = xlat_func_register_module(inst, mctx, "jsonquote", json_quote_xlat, FR_TYPE_STRING);
if (xlat) xlat_func_mono_set(xlat, json_quote_xlat_arg);
- xlat = xlat_register_module(inst, mctx, "jpathvalidate", jpath_validate_xlat, FR_TYPE_STRING);
+ xlat = xlat_func_register_module(inst, mctx, "jpathvalidate", jpath_validate_xlat, FR_TYPE_STRING);
if (xlat) xlat_func_mono_set(xlat, jpath_validate_xlat_arg);
name = talloc_asprintf(inst, "%s_encode", mctx->inst->name);
- xlat = xlat_register_module(inst, mctx, name, json_encode_xlat, FR_TYPE_STRING);
+ xlat = xlat_func_register_module(inst, mctx, name, json_encode_xlat, FR_TYPE_STRING);
xlat_func_mono_set(xlat, json_encode_xlat_arg);
talloc_free(name);
#include <freeradius-devel/server/map_proc.h>
#include <freeradius-devel/server/module_rlm.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
static CONF_PARSER sasl_mech_dynamic[] = {
{ FR_CONF_OFFSET("mech", FR_TYPE_TMPL | FR_TYPE_NOT_EMPTY, fr_ldap_sasl_t_dynamic_t, mech) },
inst->cache_da = inst->group_da; /* Default to the group_da */
}
- xlat = xlat_register_module(NULL, mctx, mctx->inst->name, ldap_xlat, FR_TYPE_STRING);
+ xlat = xlat_func_register_module(NULL, mctx, mctx->inst->name, ldap_xlat, FR_TYPE_STRING);
xlat_func_mono_set(xlat, ldap_xlat_arg);
- xlat = xlat_register_module(NULL, mctx, "ldap_escape", ldap_escape_xlat, FR_TYPE_STRING);
+ xlat = xlat_func_register_module(NULL, mctx, "ldap_escape", ldap_escape_xlat, FR_TYPE_STRING);
if (xlat) {
xlat_func_mono_set(xlat, ldap_escape_xlat_arg);
- xlat_func_flags_set(xlat, XLAT_FLAG_PURE);
+ xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_PURE);
}
- xlat = xlat_register_module(NULL, mctx, "ldap_unescape", ldap_unescape_xlat, FR_TYPE_STRING);
+ xlat = xlat_func_register_module(NULL, mctx, "ldap_unescape", ldap_unescape_xlat, FR_TYPE_STRING);
if (xlat) {
xlat_func_mono_set(xlat, ldap_escape_xlat_arg);
- xlat_func_flags_set(xlat, XLAT_FLAG_PURE);
+ xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_PURE);
}
map_proc_register(inst, mctx->inst->name, mod_map_proc, ldap_map_verify, 0);
#include <freeradius-devel/util/iovec.h>
#include <freeradius-devel/util/perm.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
#ifdef HAVE_FCNTL_H
# include <fcntl.h>
XLAT_ARG_PARSER_TERMINATOR
};
- xlat = xlat_register_module(inst, mctx, mctx->inst->name, linelog_xlat, FR_TYPE_SIZE);
+ xlat = xlat_func_register_module(inst, mctx, mctx->inst->name, linelog_xlat, FR_TYPE_SIZE);
xlat_func_mono_set(xlat, linelog_xlat_args);
return 0;
#include <freeradius-devel/util/misc.h>
#include <freeradius-devel/util/sha1.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
#include <sys/wait.h>
#include <ctype.h>
rlm_mschap_t *inst = talloc_get_type_abort(mctx->inst->data, rlm_mschap_t);
xlat_t *xlat;
- xlat = xlat_register_module(inst, mctx, mctx->inst->name, mschap_xlat, FR_TYPE_VOID);
+ xlat = xlat_func_register_module(inst, mctx, mctx->inst->name, mschap_xlat, FR_TYPE_VOID);
xlat_func_args_set(xlat, mschap_xlat_args);
return 0;
#include <freeradius-devel/server/base.h>
#include <freeradius-devel/server/module_rlm.h>
#include <freeradius-devel/util/debug.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
#include <freeradius-devel/radius/radius.h>
DIAG_OFF(DIAG_UNKNOWN_PRAGMAS)
{
xlat_t *xlat;
- xlat = xlat_register_module(NULL, mctx, mctx->inst->name, perl_xlat, FR_TYPE_VOID);
+ xlat = xlat_func_register_module(NULL, mctx, mctx->inst->name, perl_xlat, FR_TYPE_VOID);
xlat_func_args_set(xlat, perl_xlat_args);
return 0;
#include <freeradius-devel/server/module_rlm.h>
#include <freeradius-devel/server/modpriv.h>
#include <freeradius-devel/util/debug.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
#include <freeradius-devel/redis/base.h>
#include <freeradius-devel/redis/cluster.h>
char *name;
xlat_t *xlat;
- xlat = xlat_register_module(inst, mctx, mctx->inst->name, redis_xlat, FR_TYPE_VOID);
+ xlat = xlat_func_register_module(inst, mctx, mctx->inst->name, redis_xlat, FR_TYPE_VOID);
xlat_func_args_set(xlat, redis_args);
/*
* %(redis_node:<key>[ idx])
*/
name = talloc_asprintf(NULL, "%s_node", mctx->inst->name);
- xlat = xlat_register_module(inst, mctx, name, redis_node_xlat, FR_TYPE_STRING);
+ xlat = xlat_func_register_module(inst, mctx, name, redis_node_xlat, FR_TYPE_STRING);
xlat_func_args_set(xlat, redis_node_xlat_args);
talloc_free(name);
name = talloc_asprintf(NULL, "%s_remap", mctx->inst->name);
- xlat = xlat_register_module(inst, mctx, name, redis_remap_xlat, FR_TYPE_STRING);
+ xlat = xlat_func_register_module(inst, mctx, name, redis_remap_xlat, FR_TYPE_STRING);
xlat_func_args_set(xlat, redis_remap_xlat_args);
talloc_free(name);
#include <freeradius-devel/util/debug.h>
#include <freeradius-devel/util/table.h>
#include <freeradius-devel/util/uri.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
#include <ctype.h>
#include "rest.h"
rlm_rest_t *inst = talloc_get_type_abort(mctx->inst->data, rlm_rest_t);
xlat_t *xlat;
- xlat = xlat_register_module(inst, mctx, mctx->inst->name, rest_xlat, FR_TYPE_STRING);
+ xlat = xlat_func_register_module(inst, mctx, mctx->inst->name, rest_xlat, FR_TYPE_STRING);
xlat_func_args_set(xlat, rest_xlat_args);
return 0;
#include <freeradius-devel/server/base.h>
#include <freeradius-devel/server/module_rlm.h>
#include <freeradius-devel/soh/base.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
typedef struct {
bool dhcp;
rlm_soh_t *inst = talloc_get_type_abort(mctx->inst->data, rlm_soh_t);
xlat_t *xlat;
- xlat = xlat_register_module(inst, mctx, mctx->inst->name, soh_xlat, FR_TYPE_STRING);
+ xlat = xlat_func_register_module(inst, mctx, mctx->inst->name, soh_xlat, FR_TYPE_STRING);
xlat_func_args_set(xlat, soh_xlat_args);
return 0;
#include <freeradius-devel/server/pairmove.h>
#include <freeradius-devel/util/debug.h>
#include <freeradius-devel/util/table.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
#include <sys/stat.h>
/*
* Register the SQL xlat function
*/
- xlat = xlat_register_module(inst, mctx, mctx->inst->name, sql_xlat, FR_TYPE_VOID); /* Returns an integer sometimes */
+ xlat = xlat_func_register_module(inst, mctx, mctx->inst->name, sql_xlat, FR_TYPE_VOID); /* Returns an integer sometimes */
/*
* The xlat escape function needs access to inst - so
#include <freeradius-devel/server/module_rlm.h>
#include <freeradius-devel/server/tmpl.h>
#include <freeradius-devel/util/debug.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
/*
* Define a structure for our module configuration.
}
if (!cf_section_name2(mctx->inst->conf)) {
- if (!(xlat = xlat_register_module(inst, mctx, "test_trigger", trigger_test_xlat, FR_TYPE_BOOL))) return -1;
+ if (!(xlat = xlat_func_register_module(inst, mctx, "test_trigger", trigger_test_xlat, FR_TYPE_BOOL))) return -1;
xlat_func_args_set(xlat, trigger_test_xlat_args);
- if (!(xlat = xlat_register_module(inst, mctx, "test", test_xlat, FR_TYPE_STRING))) return -1;
+ if (!(xlat = xlat_func_register_module(inst, mctx, "test", test_xlat, FR_TYPE_STRING))) return -1;
xlat_func_args_set(xlat, test_xlat_args);
} else {
- if (!(xlat = xlat_register_module(inst, mctx, mctx->inst->name, test_xlat, FR_TYPE_VOID))) return -1;
+ if (!(xlat = xlat_func_register_module(inst, mctx, mctx->inst->name, test_xlat, FR_TYPE_VOID))) return -1;
xlat_func_args_set(xlat, test_xlat_args);
}
#include <freeradius-devel/server/base.h>
#include <freeradius-devel/server/module_rlm.h>
#include <freeradius-devel/server/log.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
#include <fcntl.h>
#include "io.h"
return -1;
}
- if(!(xlat = xlat_register_module(NULL, mctx, mctx->inst->name, xlat_unbound, FR_TYPE_VOID))) return -1;
+ if(!(xlat = xlat_func_register_module(NULL, mctx, mctx->inst->name, xlat_unbound, FR_TYPE_VOID))) return -1;
xlat_func_args_set(xlat, xlat_unbound_args);
return 0;
#include <freeradius-devel/server/base.h>
#include <freeradius-devel/server/module_rlm.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
#include <freeradius-devel/util/base16.h>
#include <ctype.h>
{
xlat_t *xlat;
- xlat = xlat_register_module(NULL, mctx, "unpack", unpack_xlat, FR_TYPE_VOID);
+ xlat = xlat_func_register_module(NULL, mctx, "unpack", unpack_xlat, FR_TYPE_VOID);
if (xlat) {
xlat_func_args_set(xlat, unpack_xlat_args);
- xlat_func_flags_set(xlat, XLAT_FLAG_PURE);
+ xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_PURE);
}
return 0;
RCSID("$Id$")
#include <freeradius-devel/radius/radius.h>
-#include <freeradius-devel/unlang/xlat_register.h>
+#include <freeradius-devel/unlang/xlat_func.h>
#include "rlm_yubikey.h"
#ifdef HAVE_YKCLIENT
}
#endif
- xlat = xlat_register_module(inst, mctx, "modhextohex", modhex_to_hex_xlat, FR_TYPE_STRING);
+ xlat = xlat_func_register_module(inst, mctx, "modhextohex", modhex_to_hex_xlat, FR_TYPE_STRING);
if (xlat) {
xlat_func_mono_set(xlat, modhex_to_hex_xlat_arg);
- xlat_func_flags_set(xlat, XLAT_FLAG_PURE);
+ xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_PURE);
}
return 0;
}
{
if (unlikely(fr_aka_sim_init() < 0)) return -1;
- fr_aka_sim_xlat_register();
+ fr_aka_sim_xlat_func_register();
return 0;
}
static void mod_unload(void)
{
- fr_aka_sim_xlat_unregister();
+ fr_aka_sim_xlat_func_unregister();
fr_aka_sim_free();
}
{
if (unlikely(fr_aka_sim_init() < 0)) return -1;
- fr_aka_sim_xlat_register();
+ fr_aka_sim_xlat_func_register();
return 0;
}
static void mod_unload(void)
{
- fr_aka_sim_xlat_unregister();
+ fr_aka_sim_xlat_func_unregister();
fr_aka_sim_free();
}
{
if (unlikely(fr_aka_sim_init() < 0)) return -1;
- fr_aka_sim_xlat_register();
+ fr_aka_sim_xlat_func_register();
return 0;
}
static void mod_unload(void)
{
- fr_aka_sim_xlat_unregister();
+ fr_aka_sim_xlat_func_unregister();
fr_aka_sim_free();
}