repeatable_set(frame);
*state = (unlang_frame_state_tmpl_t) {
+ .vpt = tmpl,
.out = out,
.ctx = ctx,
};
return 0;
}
+static void unlang_tmpl_dump(request_t *request, unlang_stack_frame_t *frame)
+{
+ unlang_frame_state_tmpl_t *state = talloc_get_type_abort(frame->state, unlang_frame_state_tmpl_t);
+
+ if (state->vpt) {
+ RDEBUG("tmpl %s", state->vpt->name);
+ } else {
+ unlang_tmpl_t *ut = unlang_generic_to_tmpl(frame->instruction);
+ RDEBUG("tmpl %s", ut->tmpl->name);
+ }
+}
+
void unlang_tmpl_init(void)
{
unlang_register(&(unlang_op_t){
.interpret = unlang_tmpl,
.signal = unlang_tmpl_signal,
+ .dump = unlang_tmpl_dump,
.unlang_size = sizeof(unlang_tmpl_t),
.unlang_name = "unlang_tmpl_t",
*/
typedef struct {
TALLOC_CTX *ctx; //!< for allocating value boxes
+ tmpl_t const *vpt; //!< the thing being expanded
fr_value_box_list_t *out; //!< output list if the exec succeeds
fr_value_box_list_t list; //!< our intermediate working list