![]() |
The FreeRADIUS server $Id: 15bac2a4c627c01d1aa2047687b3418955ac7f00 $
|
Translates requests between the server an a perl interpreter. More...
#include <freeradius-devel/server/base.h>
#include <freeradius-devel/server/module_rlm.h>
#include <freeradius-devel/util/debug.h>
#include <freeradius-devel/unlang/xlat_func.h>
#include <freeradius-devel/unlang/xlat.h>
#include <freeradius-devel/radius/radius.h>
#include <EXTERN.h>
#include <perl.h>
#include <XSUB.h>
#include <dlfcn.h>
#include <semaphore.h>
Go to the source code of this file.
Data Structures | |
struct | perl_call_env_t |
struct | perl_func_def_t |
struct | rlm_perl_replace_t |
struct | rlm_perl_t |
struct | rlm_perl_thread_t |
Macros | |
#define | dl_librefs "DynaLoader::dl_librefs" |
#define | dl_modules "DynaLoader::dl_modules" |
#define | LOAD_INFO(_fmt, ...) fr_log(LOG_DST, L_INFO, __FILE__, __LINE__, "rlm_perl - " _fmt, ## __VA_ARGS__) |
#define | LOAD_WARN(_fmt, ...) |
#define | LOG_PREFIX "perl" |
Functions | |
EXTERN_C void | boot_DynaLoader (pTHX_ CV *cv) |
static int | get_hv_content (TALLOC_CTX *ctx, request_t *request, HV *my_hv, fr_pair_list_t *vps, const char *list_name, fr_dict_attr_t const *parent, bool dbg_print) |
static int | mod_bootstrap (module_inst_ctx_t const *mctx) |
static int | mod_detach (module_detach_ctx_t const *mctx) |
static int | mod_instantiate (module_inst_ctx_t const *mctx) |
static int | mod_load (void) |
static unlang_action_t | mod_perl (rlm_rcode_t *p_result, module_ctx_t const *mctx, request_t *request) |
static int | mod_thread_detach (module_thread_inst_ctx_t const *mctx) |
static int | mod_thread_instantiate (module_thread_inst_ctx_t const *mctx) |
static void | mod_unload (void) |
static int | pairadd_sv (TALLOC_CTX *ctx, request_t *request, fr_pair_list_t *vps, char *key, SV *sv, const char *list_name, fr_dict_attr_t const *parent, bool dbg_print) |
static int8_t | perl_func_def_cmp (void const *one, void const *two) |
How to compare two Perl function calls. | |
static bool | perl_func_exists (char const *func) |
Check if a given Perl subroutine exists. | |
static void | perl_func_name_safe (char *name) |
static int | perl_func_parse (TALLOC_CTX *ctx, call_env_parsed_head_t *out, UNUSED tmpl_rules_t const *t_rules, UNUSED CONF_ITEM *ci, call_env_ctx_t const *cec, UNUSED call_env_parser_t const *rule) |
static void | perl_parse_config (CONF_SECTION *cs, int lvl, HV *rad_hv) |
static void | perl_store_vps (request_t *request, fr_pair_list_t *vps, HV *rad_hv, const char *hash_name, bool dbg_print) |
static int | perl_sv_to_vblist (TALLOC_CTX *ctx, fr_value_box_list_t *list, request_t *request, SV *sv) |
Parse a Perl SV and create value boxes, appending to a list. | |
static int | perl_vblist_to_av (AV *av, fr_value_box_list_t *head) |
Convert a list of value boxes to a Perl array for passing to subroutines. | |
static void | perl_vp_to_svpvn_element (request_t *request, AV *av, fr_pair_t *vp, int *i, const char *hash_name, bool dbg_print) |
static xlat_action_t | perl_xlat (TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, request_t *request, fr_value_box_list_t *in) |
Call perl code using an xlat. | |
static void | rlm_perl_clear_handles (pTHX) |
static void | rlm_perl_close_handles (void **handles) |
static void ** | rlm_perl_get_handles (pTHX) |
static void | rlm_perl_interp_free (PerlInterpreter *perl) |
static | XS (XS_radiusd_log) |
static | XS (XS_radiusd_xlat) |
static void | xs_init (pTHX) |
Variables | |
static const conf_parser_t | module_config [] |
static void * | perl_dlhandle |
To allow us to load perl's symbols into the global symbol table. | |
static const call_env_method_t | perl_method_env |
static xlat_arg_parser_t const | perl_xlat_args [] |
static const conf_parser_t | replace_config [] |
module_rlm_t | rlm_perl |
static _Thread_local request_t * | rlm_perl_request |
Translates requests between the server an a perl interpreter.
Definition in file rlm_perl.c.
struct perl_call_env_t |
Definition at line 71 of file rlm_perl.c.
Data Fields | ||
---|---|---|
perl_func_def_t * | func |
struct perl_func_def_t |
Definition at line 64 of file rlm_perl.c.
Data Fields | ||
---|---|---|
char const * | function_name | Name of the function being called. |
char * | name1 | Section name1 where this is called. |
char * | name2 | Section name2 where this is called. |
fr_rb_node_t | node | Node in tree of function calls. |
struct rlm_perl_replace_t |
Definition at line 57 of file rlm_perl.c.
Data Fields | ||
---|---|---|
bool | control | Should the control list be replaced after module call. |
bool | reply | Should the reply list be replaced after module call. |
bool | request | Should the request list be replaced after module call. |
bool | session | Should the session list be replaced after module call. |
struct rlm_perl_t |
Definition at line 82 of file rlm_perl.c.
Data Fields | ||
---|---|---|
char const * | func_detach | Function to run when mod_detach is run. |
char const *fr_rb_tree_t | funcs | Tree of function calls found by call_env parser. |
bool | funcs_init | Has the tree been initialised. |
PerlInterpreter * | perl | |
char const * | perl_flags | |
bool | perl_parsed | |
HV * | rad_perlconf_hv | holds "config" items (perl RAD_PERLCONF hash). |
rlm_perl_replace_t | replace |
struct rlm_perl_thread_t |
Definition at line 97 of file rlm_perl.c.
Data Fields | ||
---|---|---|
PerlInterpreter * | perl | Thread specific perl interpreter. |
#define dl_librefs "DynaLoader::dl_librefs" |
Definition at line 149 of file rlm_perl.c.
#define dl_modules "DynaLoader::dl_modules" |
Definition at line 150 of file rlm_perl.c.
#define LOAD_INFO | ( | _fmt, | |
... | |||
) | fr_log(LOG_DST, L_INFO, __FILE__, __LINE__, "rlm_perl - " _fmt, ## __VA_ARGS__) |
#define LOAD_WARN | ( | _fmt, | |
... | |||
) |
#define LOG_PREFIX "perl" |
Definition at line 27 of file rlm_perl.c.
EXTERN_C void boot_DynaLoader | ( | pTHX_ CV * | cv | ) |
|
static |
Definition at line 845 of file rlm_perl.c.
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
Definition at line 1306 of file rlm_perl.c.
|
static |
Definition at line 782 of file rlm_perl.c.
|
static |
How to compare two Perl function calls.
Definition at line 129 of file rlm_perl.c.
|
static |
Check if a given Perl subroutine exists.
Definition at line 1059 of file rlm_perl.c.
|
static |
|
static |
|
static |
Definition at line 587 of file rlm_perl.c.
|
static |
Definition at line 699 of file rlm_perl.c.
|
static |
Parse a Perl SV and create value boxes, appending to a list.
For parsing values passed back from a Perl subroutine
When hashes are returned, first the key is added as a value box then the value
[in] | ctx | to allocate boxes in. |
[out] | list | to append value boxes to. |
[in] | request | being handled - only used for debug messages |
[in] | sv | to parse |
Definition at line 343 of file rlm_perl.c.
|
static |
Convert a list of value boxes to a Perl array for passing to subroutines.
The Perl array object should be created before calling this to populate it.
[in,out] | av | Perl array object to append values to. |
[in] | head | of VB list. |
Definition at line 289 of file rlm_perl.c.
|
static |
Definition at line 649 of file rlm_perl.c.
|
static |
|
static |
Definition at line 193 of file rlm_perl.c.
|
static |
|
static |
Definition at line 992 of file rlm_perl.c.
|
static |
|
static |
|
static |
Definition at line 267 of file rlm_perl.c.
|
static |
Definition at line 114 of file rlm_perl.c.
|
static |
To allow us to load perl's symbols into the global symbol table.
Definition at line 101 of file rlm_perl.c.
|
static |
Definition at line 1377 of file rlm_perl.c.
|
static |
Definition at line 450 of file rlm_perl.c.
|
static |
Definition at line 103 of file rlm_perl.c.
module_rlm_t rlm_perl |
Definition at line 1395 of file rlm_perl.c.
|
static |
Definition at line 147 of file rlm_perl.c.