![]() |
The FreeRADIUS server $Id: 15bac2a4c627c01d1aa2047687b3418955ac7f00 $
|
#include <freeradius-devel/server/request.h>
#include <freeradius-devel/server/rcode.h>
#include <stdbool.h>
Go to the source code of this file.
Data Structures | |
struct | unlang_subrequest_session_t |
Functions | |
request_t * | unlang_subrequest_alloc (request_t *parent, fr_dict_t const *namespace) |
Allocate a subrequest to run through a virtual server at some point in the future. | |
int | unlang_subrequest_child_push (request_t *child, rlm_rcode_t *p_result, void const *unique_session_ptr, bool free_child, bool top_frame) |
Push a pre-existing child back onto the stack as a subrequest. | |
int | unlang_subrequest_child_push_and_detach (request_t *child) |
Add a child request to the runnable queue. | |
void | unlang_subrequest_detach_and_free (request_t **child) |
Free a child request, detaching it from its parent and freeing allocated memory. | |
Definition in file subrequest.h.
struct unlang_subrequest_session_t |
Definition at line 35 of file subrequest.h.
Data Fields | ||
---|---|---|
bool | enable | Whether we should store/restore sessions. |
int | unique_int | Session unique int identifier. |
void const * | unique_ptr | Session unique ptr identifier. |
Allocate a subrequest to run through a virtual server at some point in the future.
[in] | parent | to hang sub request off of. |
[in] | namespace | the child will operate in. |
Definition at line 303 of file subrequest.c.
int unlang_subrequest_child_push | ( | request_t * | child, |
rlm_rcode_t * | p_result, | ||
void const * | unique_session_ptr, | ||
bool | free_child, | ||
bool | top_frame | ||
) |
Push a pre-existing child back onto the stack as a subrequest.
The child MUST have been allocated with unlang_io_subrequest_alloc, or something that calls it.
After the child is no longer required it MUST be freed with unlang_subrequest_detach_and_free. It's not enough to free it with talloc_free.
This function should be called before pushing any additional frames onto the child's stack for it to execute.
The parent should return UNLANG_ACTION_PUSHED_CHILD, when it's done setting up the child request. It should NOT return UNLANG_ACTION_YIELD.
[in] | p_result | Where to write the result of the subrequest. |
[in] | child | to push. |
[in] | unique_session_ptr | Unique identifier for child's session data. |
[in] | free_child | automatically free the child when it's finished executing. This is useful if extracting the result from the child is done using the child's stack, and so the parent never needs to access it. |
[in] | top_frame | Set to UNLANG_TOP_FRAME if the interpreter should return. Set to UNLANG_SUB_FRAME if the interprer should continue. |
Definition at line 422 of file subrequest.c.
int unlang_subrequest_child_push_and_detach | ( | request_t * | request | ) |
Add a child request to the runnable queue.
[in] | request | to add to the runnable queue. |
Definition at line 496 of file subrequest.c.
void unlang_subrequest_detach_and_free | ( | request_t ** | child | ) |
Free a child request, detaching it from its parent and freeing allocated memory.
[in] | child | to free. |
Definition at line 288 of file subrequest.c.