25RCSID(
"$Id: 374320ef33d86d7f95ae366d487a711c1a563ac5 $")
27#include "unlang_priv.h"
43 if (
unlikely(request->parent != NULL)) {
57 subrequest = subrequest->
parent) {
62 cf_log_err(ci,
"'detach' can only be used inside of a 'subrequest' section.");
72 cf_log_err(ci,
"'detach' cannot be used as the last entry in a section, as there is nothing more to do");
93 .unlang_name =
"unlang_group_t",
unlang_action_t
Returned by unlang_op_t calls, determine the next action of the interpreter.
@ UNLANG_ACTION_CALCULATE_RESULT
Calculate a new section rlm_rcode_t value.
Common header for all CONF_* types.
#define cf_log_err(_cf, _fmt,...)
#define cf_item_next(_parent, _curr)
unlang_t * unlang_compile_empty(unlang_t *parent, UNUSED unlang_compile_ctx_t *unlang_ctx, CONF_SECTION *cs, unlang_type_t type)
static unlang_action_t unlang_detach(unlang_result_t *p_result, request_t *request, UNUSED unlang_stack_frame_t *frame)
Signal a child to detach.
static unlang_t * unlang_compile_detach(unlang_t *parent, unlang_compile_ctx_t *unlang_ctx, CONF_ITEM const *ci)
void unlang_detach_init(void)
Initialise subrequest ops.
void unlang_interpret_signal(request_t *request, fr_signal_t action)
Send a signal (usually stop) to a request.
rlm_rcode_t rcode
The current rcode, from executing the instruction or merging the result from a frame.
static TALLOC_CTX * unlang_ctx
void unlang_register(unlang_op_t *op)
Register an operation with the interpreter.
#define RETURN_UNLANG_FAIL
@ RLM_MODULE_NOT_SET
Error resolving rcode (should not be returned by modules).
@ FR_SIGNAL_DETACH
Request is being detached from its parent.
unlang_t * parent
Previous node.
@ UNLANG_TYPE_SUBREQUEST
create a child subrequest
@ UNLANG_TYPE_DETACH
detach a child
@ UNLANG_OP_FLAG_SINGLE_WORD
the operation is parsed and compiled as a single word
unlang_type_t type
The specialisation of this node.
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)