if (tp_decode) {
snprintf(buffer, sizeof(buffer), "decode.%s", name);
- xlat = xlat_func_register(NULL, buffer, protocol_decode_xlat, FR_TYPE_UINT32);
- if (!xlat) return -1;
+ if (unlikely((xlat = xlat_func_register(NULL, buffer, protocol_decode_xlat, FR_TYPE_UINT32)) == NULL)) return -1;
xlat_func_args_set(xlat, protocol_decode_xlat_args);
/* coverity[suspicious_sizeof] */
xlat_func_async_instantiate_set(xlat, protocol_xlat_instantiate, fr_test_point_pair_decode_t *, NULL, tp_decode);
- xlat_internal(xlat);
+ xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_INTERNAL);
}
/*
if (tp_encode) {
snprintf(buffer, sizeof(buffer), "encode.%s", name);
- xlat = xlat_func_register(NULL, buffer, protocol_encode_xlat, FR_TYPE_OCTETS);
- if (!xlat) return -1;
+ if (unlikely((xlat = xlat_func_register(NULL, buffer, protocol_encode_xlat, FR_TYPE_OCTETS)) == NULL)) return -1;
xlat_func_args_set(xlat, protocol_encode_xlat_args);
/* coverity[suspicious_sizeof] */
xlat_func_async_instantiate_set(xlat, protocol_xlat_instantiate, fr_test_point_pair_encode_t *, NULL, tp_encode);
- xlat_internal(xlat);
+ xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_INTERNAL);
}
return 0;
*/
#define XLAT_REGISTER_ARGS(_xlat, _func, _return_type, _args) \
do { \
- if (!(xlat = xlat_func_register(NULL, _xlat, _func, _return_type))) return -1; \
+ if (unlikely((xlat = xlat_func_register(NULL, _xlat, _func, _return_type)) == NULL)) return -1; \
xlat_func_args_set(xlat, _args); \
- xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_PURE); \
- xlat_internal(xlat); \
+ xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_PURE | XLAT_FUNC_FLAG_INTERNAL); \
} while (0)
XLAT_REGISTER_ARGS("cast", xlat_func_cast, FR_TYPE_VOID, xlat_func_cast_args);
#undef XLAT_REGISTER_ARGS
#define XLAT_REGISTER_ARGS(_xlat, _func, _return_type, _args) \
do { \
- if (!(xlat = xlat_func_register(NULL, _xlat, _func, _return_type))) return -1; \
+ if (unlikely((xlat = xlat_func_register(NULL, _xlat, _func, _return_type)) == NULL)) return -1; \
xlat_func_args_set(xlat, _args); \
- xlat_internal(xlat); \
+ xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_INTERNAL); \
} while (0)
XLAT_REGISTER_ARGS("debug", xlat_func_debug, FR_TYPE_INT8, xlat_func_debug_args);
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_func_register(NULL, "untaint", xlat_func_untaint, FR_TYPE_VOID);
- xlat_internal(xlat);
- xlat = xlat_func_register(NULL, "taint", xlat_func_taint, FR_TYPE_VOID);
- xlat_internal(xlat);
+ if (unlikely((xlat = xlat_func_register(NULL, "untaint", xlat_func_untaint, FR_TYPE_VOID)) == NULL)) return -1;
+ xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_INTERNAL);
+
+ if (unlikely((xlat = xlat_func_register(NULL, "taint", xlat_func_taint, FR_TYPE_VOID)) == NULL)) return -1;
+ xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_INTERNAL);
/*
* All of these functions are pure.
*/
#define XLAT_REGISTER_MONO(_xlat, _func, _return_type, _arg) \
do { \
- if (!(xlat = xlat_func_register(NULL, _xlat, _func, _return_type))) return -1; \
+ if (unlikely((xlat = xlat_func_register(NULL, _xlat, _func, _return_type)) == NULL)) return -1; \
xlat_func_mono_set(xlat, _arg); \
- xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_PURE); \
- xlat_internal(xlat); \
+ xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_PURE | XLAT_FUNC_FLAG_INTERNAL); \
} while (0)
XLAT_REGISTER_MONO("base64", xlat_func_base64_encode, FR_TYPE_STRING, xlat_func_base64_encode_arg);
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_func_register(NULL, "regex", xlat_func_regex, FR_TYPE_STRING);
- xlat_internal(xlat);
+ if (unlikely((xlat = xlat_func_register(NULL, "regex", xlat_func_regex, FR_TYPE_STRING)) == NULL)) return -1;
+ xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_INTERNAL);
#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_func_register(NULL, _xlat, _func, _return_type))) return -1; \
+ if (unlikely((xlat = xlat_func_register(NULL, _xlat, _func, _return_type)) == NULL)) return -1; \
xlat_func_mono_set(xlat, _arg); \
- xlat_internal(xlat); \
+ xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_INTERNAL); \
} 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_func_register(NULL, "module", xlat_func_module, FR_TYPE_STRING);
- xlat_internal(xlat);
+ xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_INTERNAL);
return xlat_register_expressions();
}
do { \
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_FUNC_FLAG_PURE); \
- xlat_internal(xlat); \
+ xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_PURE | XLAT_FUNC_FLAG_INTERNAL); \
xlat_print_set(xlat, xlat_expr_print_binary); \
xlat_func_async_instantiate_set(xlat, xlat_function_args_to_tmpl, NULL, NULL, NULL); \
xlat->token = _op; \
do { \
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_FUNC_FLAG_PURE); \
- xlat_internal(xlat); \
+ xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_PURE | XLAT_FUNC_FLAG_INTERNAL); \
xlat_print_set(xlat, xlat_expr_print_binary); \
xlat_resolve_set(xlat, xlat_expr_resolve_binary); \
xlat->token = _op; \
do { \
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_func_flags_set(xlat, XLAT_FUNC_FLAG_PURE | XLAT_FUNC_FLAG_INTERNAL); \
xlat_print_set(xlat, xlat_expr_print_ ## _func_name); \
xlat_purify_set(xlat, xlat_expr_logical_purify); \
xlat->token = _op; \
do { \
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_FUNC_FLAG_PURE); \
+ xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_PURE | XLAT_FUNC_FLAG_INTERNAL); \
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; \
} while (0)
do { \
if (!(xlat = xlat_func_register(NULL, _xlat, _func, FR_TYPE_VOID))) return -1; \
xlat_func_mono_set(xlat, _arg); \
- xlat_internal(xlat); \
+ xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_INTERNAL); \
} while (0)
#define XLAT_REGISTER_UNARY(_op, _xlat, _func) \
do { \
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_FUNC_FLAG_PURE); \
- xlat_internal(xlat); \
+ xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_PURE | XLAT_FUNC_FLAG_INTERNAL); \
xlat_print_set(xlat, xlat_expr_print_unary); \
xlat->token = _op; \
} while (0)
*/
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);
+ xlat_func_flags_set(xlat, XLAT_FUNC_FLAG_INTERNAL);
return 0;
}