mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-05-02 21:06:01 +00:00
lib: move bgp routemap stuff out of frrlua.[ch]
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
This commit is contained in:
parent
f937164459
commit
0fe6a43d90
@ -338,6 +338,45 @@ static const struct route_map_rule_cmd route_match_peer_cmd = {
|
||||
};
|
||||
|
||||
#if defined(HAVE_LUA)
|
||||
|
||||
enum frrlua_rm_status {
|
||||
/*
|
||||
* Script function run failure. This will translate into a
|
||||
* deny
|
||||
*/
|
||||
LUA_RM_FAILURE = 0,
|
||||
/*
|
||||
* No Match was found for the route map function
|
||||
*/
|
||||
LUA_RM_NOMATCH,
|
||||
/*
|
||||
* Match was found but no changes were made to the
|
||||
* incoming data.
|
||||
*/
|
||||
LUA_RM_MATCH,
|
||||
/*
|
||||
* Match was found and data was modified, so
|
||||
* figure out what changed
|
||||
*/
|
||||
LUA_RM_MATCH_AND_CHANGE,
|
||||
};
|
||||
|
||||
static enum frrlua_rm_status frrlua_run_rm_rule(lua_State *L, const char *rule)
|
||||
{
|
||||
int status;
|
||||
|
||||
lua_getglobal(L, rule);
|
||||
status = lua_pcall(L, 0, 1, 0);
|
||||
if (status) {
|
||||
zlog_debug("Executing Failure with function: %s: %d",
|
||||
rule, status);
|
||||
return LUA_RM_FAILURE;
|
||||
}
|
||||
|
||||
status = lua_tonumber(L, -1);
|
||||
return status;
|
||||
}
|
||||
|
||||
static enum route_map_cmd_result_t
|
||||
route_match_command(void *rule, const struct prefix *prefix, void *object)
|
||||
{
|
||||
|
24
lib/frrlua.c
24
lib/frrlua.c
@ -170,28 +170,4 @@ void frrlua_export_logging(lua_State *L)
|
||||
lua_setfield(L, -2, "log");
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Experimental.
|
||||
*
|
||||
* This section has experimental Lua functionality that doesn't belong
|
||||
* elsewhere.
|
||||
*/
|
||||
|
||||
enum frrlua_rm_status frrlua_run_rm_rule(lua_State *L, const char *rule)
|
||||
{
|
||||
int status;
|
||||
|
||||
lua_getglobal(L, rule);
|
||||
status = lua_pcall(L, 0, 1, 0);
|
||||
if (status) {
|
||||
zlog_debug("Executing Failure with function: %s: %d",
|
||||
rule, status);
|
||||
return LUA_RM_FAILURE;
|
||||
}
|
||||
|
||||
status = lua_tonumber(L, -1);
|
||||
return status;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
30
lib/frrlua.h
30
lib/frrlua.h
@ -31,31 +31,6 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Status enum for Lua routemap processing results
|
||||
*/
|
||||
enum frrlua_rm_status {
|
||||
/*
|
||||
* Script function run failure. This will translate into a
|
||||
* deny
|
||||
*/
|
||||
LUA_RM_FAILURE = 0,
|
||||
/*
|
||||
* No Match was found for the route map function
|
||||
*/
|
||||
LUA_RM_NOMATCH,
|
||||
/*
|
||||
* Match was found but no changes were made to the
|
||||
* incoming data.
|
||||
*/
|
||||
LUA_RM_MATCH,
|
||||
/*
|
||||
* Match was found and data was modified, so
|
||||
* figure out what changed
|
||||
*/
|
||||
LUA_RM_MATCH_AND_CHANGE,
|
||||
};
|
||||
|
||||
/*
|
||||
* Pushes a new table containing relevant fields from a prefix structure.
|
||||
*
|
||||
@ -68,11 +43,6 @@ void frrlua_newtable_prefix(lua_State *L, const struct prefix *prefix);
|
||||
*/
|
||||
void frrlua_newtable_interface(lua_State *L, const struct interface *ifp);
|
||||
|
||||
/*
|
||||
* Runs a routemap rule or something
|
||||
*/
|
||||
enum frrlua_rm_status frrlua_run_rm_rule(lua_State *L, const char *rule);
|
||||
|
||||
/*
|
||||
* Retrieve a string from table on the top of the stack.
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user