The FreeRADIUS server $Id: 15bac2a4c627c01d1aa2047687b3418955ac7f00 $
Loading...
Searching...
No Matches
lua.h
Go to the documentation of this file.
1/*
2 * This program is free software; you can redistribute it and/or modify
3 * it under the terms of the GNU General Public License, version 2 if the
4 * License as published by the Free Software Foundation.
5 *
6 * This program is distributed in the hope that it will be useful,
7 * but WITHOUT ANY WARRANTY; without even the implied warranty of
8 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9 * GNU General Public License for more details.
10 *
11 * You should have received a copy of the GNU General Public License
12 * along with this program; if not, write to the Free Software
13 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
14 */
15
16/**
17 * $Id: f61ffb1e706c2ae9060d546c63d9cb63667d3541 $
18 *
19 * @file lua.h
20 * @brief Library function signatures for lua module.
21 */
22RCSIDH(lua_h, "$Id: f61ffb1e706c2ae9060d546c63d9cb63667d3541 $")
23
24/*
25 * If were using luajit, luajit.h will define a few more constants and
26 * then include lua.h. Lua 5.1 and LuaJIT 2.0 are API compatible.
27 */
28#ifdef HAVE_LUAJIT_H
29# include <luajit.h>
30#else
31# include <lua.h>
32#endif
33#include <lauxlib.h>
34#include <freeradius-devel/server/base.h>
35
36/*
37 * Define a structure for our module configuration.
38 *
39 * These variables do not need to be in a structure, but it's
40 * a lot cleaner to do so, and a pointer to the structure can
41 * be used as the instance handle.
42 */
43typedef struct {
44 lua_State *interpreter; //!< Interpreter used for single threaded mode, and environment tests.
45 bool threads; //!< Whether to create new interpreters on a per-instance/per-thread
46 //!< basis, or use a single mutex protected interpreter.
47
48 bool jit; //!< Whether the linked interpreter is Lua 5.1 or LuaJIT.
49 const char *module; //!< Full path to lua script to load and execute.
50
51 const char *func_instantiate; //!< Name of function to run on instantiation.
52 const char *func_detach; //!< Name of function to run on detach.
53
54 const char *func_authorize; //!< Name of function to run on authorization.
55 const char *func_authenticate; //!< Name of function to run on authentication.
56 const char *func_preacct; //!< Name of function to run on preacct.
57 const char *func_accounting; //!< Name of function to run on accounting.
58 const char *func_post_auth; //!< Name of function to run after authentication.
59 const char *func_xlat; //!< Name of function to be called for string expansions.
60} rlm_lua_t;
61
62typedef struct {
63 lua_State *interpreter; //!< Thread specific interpreter.
65
66/* lua.c */
67int fr_lua_init(lua_State **out, module_inst_ctx_t const *mctx);
68unlang_action_t fr_lua_run(rlm_rcode_t *p_result, module_ctx_t const *mctx, request_t *request, char const *funcname);
69bool fr_lua_isjit(lua_State *L);
70char const *fr_lua_version(lua_State *L);
71
72/* util.c */
73void fr_lua_util_jit_log_debug(char const *msg);
74void fr_lua_util_jit_log_info(char const *msg);
75void fr_lua_util_jit_log_warn(char const *msg);
76void fr_lua_util_jit_log_error(char const *msg);
77
78int fr_lua_util_jit_log_register(lua_State *L);
79int fr_lua_util_log_register(lua_State *L);
80void fr_lua_util_set_mctx(module_ctx_t const *mctx);
84void fr_lua_util_fr_register(lua_State *L);
unlang_action_t
Returned by unlang_op_t calls, determine the next action of the interpreter.
Definition action.h:35
log_entry msg
Definition acutest.h:794
#define L(_str)
Helper for initialising arrays of string literals.
Definition build.h:209
#define RCSIDH(h, id)
Definition build.h:484
Library function signatures for lua module.
const char *const char * func_instantiate
< Full path to lua script to load and execute.
Definition lua.h:51
void fr_lua_util_jit_log_warn(char const *msg)
Emit a warning log message.
Definition util.c:176
const char * func_post_auth
Name of function to run after authentication.
Definition lua.h:58
unlang_action_t fr_lua_run(rlm_rcode_t *p_result, module_ctx_t const *mctx, request_t *request, char const *funcname)
Definition lua.c:754
bool threads
Whether to create new interpreters on a per-instance/per-thread basis, or use a single mutex protecte...
Definition lua.h:45
const char * func_preacct
Name of function to run on preacct.
Definition lua.h:56
int fr_lua_util_jit_log_register(lua_State *L)
Insert cdefs into the lua environment.
Definition util.c:202
void fr_lua_util_set_mctx(module_ctx_t const *mctx)
Set the thread local instance.
Definition util.c:321
request_t * fr_lua_util_get_request(void)
Get the thread local request.
Definition util.c:348
char const * fr_lua_version(lua_State *L)
Definition lua.c:605
void fr_lua_util_set_request(request_t *request)
Set the thread local request.
Definition util.c:339
void fr_lua_util_fr_register(lua_State *L)
Definition util.c:40
const char * func_authorize
Name of function to run on authorization.
Definition lua.h:54
void fr_lua_util_jit_log_error(char const *msg)
Emit a error log message.
Definition util.c:187
const char * func_xlat
Name of function to be called for string expansions.
Definition lua.h:59
void fr_lua_util_jit_log_debug(char const *msg)
Emit a debug log message.
Definition util.c:154
lua_State * interpreter
Interpreter used for single threaded mode, and environment tests.
Definition lua.h:44
bool fr_lua_isjit(lua_State *L)
Check whether the Lua interpreter were actually linked to is LuaJIT.
Definition lua.c:591
const char * func_authenticate
Name of function to run on authentication.
Definition lua.h:55
int fr_lua_util_log_register(lua_State *L)
Register utililiary functions in the lua environment.
Definition util.c:280
void fr_lua_util_jit_log_info(char const *msg)
Emit an info log message.
Definition util.c:165
module_ctx_t const * fr_lua_util_get_mctx(void)
Get the thread local instance.
Definition util.c:330
bool jit
Whether the linked interpreter is Lua 5.1 or LuaJIT.
Definition lua.h:48
int fr_lua_init(lua_State **out, module_inst_ctx_t const *mctx)
Initialise a new Lua/LuaJIT interpreter.
Definition lua.c:893
const char * func_accounting
Name of function to run on accounting.
Definition lua.h:57
lua_State * interpreter
Thread specific interpreter.
Definition lua.h:63
const char * func_detach
Name of function to run on detach.
Definition lua.h:52
Temporary structure to hold arguments for module calls.
Definition module_ctx.h:41
Temporary structure to hold arguments for instantiation calls.
Definition module_ctx.h:50
rlm_rcode_t
Return codes indicating the result of the module call.
Definition rcode.h:40
static size_t char ** out
Definition value.h:997