mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-05-04 01:16:55 +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)
|
#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
|
static enum route_map_cmd_result_t
|
||||||
route_match_command(void *rule, const struct prefix *prefix, void *object)
|
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");
|
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
|
#endif
|
||||||
|
30
lib/frrlua.h
30
lib/frrlua.h
@ -31,31 +31,6 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#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.
|
* 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);
|
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.
|
* Retrieve a string from table on the top of the stack.
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user