lib: move bgp routemap stuff out of frrlua.[ch]

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
This commit is contained in:
Quentin Young 2019-08-11 19:23:35 +00:00 committed by Quentin Young
parent f937164459
commit 0fe6a43d90
3 changed files with 39 additions and 54 deletions

View File

@ -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)
{ {

View File

@ -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

View File

@ -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.
* *