26RCSID(
"$Id: b6a38d7b55ccc47152414747a9aed935a7c767db $")
28#include <freeradius-devel/server/state.h>
43 if (!request->parent || (request->parent->proto_dict != gext->
dict)) {
73 cf_log_err(cs,
"You MUST specify a protocol name for 'caller <protocol> { ... }'");
81 cf_log_err(cs,
"The argument to 'caller' cannot be a quoted string or a dynamic value");
97 memcpy(&parent_rules,
unlang_ctx->rules,
sizeof(parent_rules));
98 memcpy(&t_rules,
unlang_ctx->rules,
sizeof(t_rules));
100 t_rules.
parent = &parent_rules;
106 memcpy(&unlang_ctx2,
unlang_ctx,
sizeof(unlang_ctx2));
107 unlang_ctx2.
rules = &t_rules;
131 talloc_steal(gext, dict_ref);
134 if (unlang_list_empty(&g->
children)) {
153 .unlang_name =
"unlang_caller_t",
unlang_action_t
Returned by unlang_op_t calls, determine the next action of the interpreter.
@ UNLANG_ACTION_EXECUTE_NEXT
Execute the next unlang_t.
static unlang_t * unlang_compile_caller(unlang_t *parent, unlang_compile_ctx_t *unlang_ctx, CONF_ITEM const *ci)
static unlang_action_t unlang_caller(unlang_result_t *p_result, request_t *request, unlang_stack_frame_t *frame)
void unlang_caller_init(void)
static unlang_caller_t * unlang_group_to_caller(unlang_group_t *g)
Cast a group structure to the caller keyword extension.
Common header for all CONF_* types.
A section grouping multiple CONF_PAIR.
char const * cf_section_name2(CONF_SECTION const *cs)
Return the second identifier of a CONF_SECTION.
CONF_SECTION * cf_item_to_section(CONF_ITEM const *ci)
Cast a CONF_ITEM to a CONF_SECTION.
fr_token_t cf_section_name2_quote(CONF_SECTION const *cs)
Return the quoting of the name2 identifier.
#define cf_log_err(_cf, _fmt,...)
#define cf_log_perr(_cf, _fmt,...)
unlang_t * unlang_compile_section(unlang_t *parent, unlang_compile_ctx_t *unlang_ctx, CONF_SECTION *cs, unlang_type_t type)
#define fr_dict_autoload_talloc(_ctx, _dict_out, _proto)
fr_dict_t const * fr_dict_by_protocol_name(char const *name)
Lookup a protocol by its name.
Structure used to managed the lifetime of a dictionary.
unlang_action_t unlang_group(UNUSED unlang_result_t *p_result, request_t *request, UNUSED unlang_stack_frame_t *frame)
Declarations for the "group" keyword.
static TALLOC_CTX * unlang_ctx
void unlang_register(unlang_op_t *op)
Register an operation with the interpreter.
tmpl_rules_t const * parent
for parent / child relationships
tmpl_attr_rules_t attr
Rules/data for parsing attribute references.
Optional arguments passed to vp_tmpl functions.
fr_aka_sim_id_type_t type
fr_dict_t const * dict_def
Default dictionary to use with unqualified attribute references.
tmpl_rules_t const * rules
static unlang_group_t * unlang_generic_to_group(unlang_t const *p)
char const * section_name1
@ UNLANG_TYPE_CALLER
conditionally check parent dictionary type
unlang_t const * instruction
The unlang node we're evaluating.
@ UNLANG_OP_FLAG_DEBUG_BRACES
Print debug braces.
char const * section_name2
Generic representation of a grouping.
A node in a graph of unlang_op_t (s) that we execute.
Our interpreter stack, as distinct from the C stack.
#define DOC_KEYWORD_REF(_x)