diff options
-rw-r--r-- | bgpd/bgp_routemap.c | 39 | ||||
-rw-r--r-- | lib/frrlua.c | 24 | ||||
-rw-r--r-- | lib/frrlua.h | 30 |
3 files changed, 39 insertions, 54 deletions
diff --git a/bgpd/bgp_routemap.c b/bgpd/bgp_routemap.c index 5274c4fae..247391ade 100644 --- a/bgpd/bgp_routemap.c +++ b/bgpd/bgp_routemap.c @@ -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) { diff --git a/lib/frrlua.c b/lib/frrlua.c index 7dc878690..252b66796 100644 --- a/lib/frrlua.c +++ b/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 diff --git a/lib/frrlua.h b/lib/frrlua.h index 56c43b775..f77842b44 100644 --- a/lib/frrlua.h +++ b/lib/frrlua.h @@ -32,31 +32,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. * * Additionally sets the global variable "prefix" to point at this table. @@ -69,11 +44,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. * * key |