diff options
| author | Quentin Young <qlyoung@cumulusnetworks.com> | 2019-05-11 01:51:19 +0000 |
|---|---|---|
| committer | Quentin Young <qlyoung@nvidia.com> | 2020-12-01 18:37:14 -0500 |
| commit | cd6ca660c5e96f14f50b6a2f4f6f5cd83cb70d13 (patch) | |
| tree | c837d370f0ff2b019c22e430f8f37ac3ca7d7496 | |
| parent | 3174525d03d0ba74455a683851ac6487cc811c6a (diff) | |
lib: add interface -> table encoder
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
| -rw-r--r-- | lib/frrlua.c | 30 | ||||
| -rw-r--r-- | lib/frrlua.h | 5 |
2 files changed, 35 insertions, 0 deletions
diff --git a/lib/frrlua.c b/lib/frrlua.c index 0c6d607b7a..8107102eed 100644 --- a/lib/frrlua.c +++ b/lib/frrlua.c @@ -97,6 +97,36 @@ void frrlua_newtable_prefix(lua_State *L, const struct prefix *prefix) lua_setglobal(L, "prefix"); } +void frrlua_newtable_interface(lua_State *L, const struct interface *ifp) +{ + zlog_debug("frrlua: pushing interface table"); + + lua_newtable(L); + lua_pushstring(L, ifp->name); + lua_setfield(L, -2, "name"); + lua_pushinteger(L, ifp->ifindex); + lua_setfield(L, -2, "ifindex"); + lua_pushinteger(L, ifp->status); + lua_setfield(L, -2, "status"); + lua_pushinteger(L, ifp->flags); + lua_setfield(L, -2, "flags"); + lua_pushinteger(L, ifp->metric); + lua_setfield(L, -2, "metric"); + lua_pushinteger(L, ifp->speed); + lua_setfield(L, -2, "speed"); + lua_pushinteger(L, ifp->mtu); + lua_setfield(L, -2, "mtu"); + lua_pushinteger(L, ifp->mtu6); + lua_setfield(L, -2, "mtu6"); + lua_pushinteger(L, ifp->bandwidth); + lua_setfield(L, -2, "bandwidth"); + lua_pushinteger(L, ifp->link_ifindex); + lua_setfield(L, -2, "link_ifindex"); + lua_pushinteger(L, ifp->ll_type); + lua_setfield(L, -2, "linklayer_type"); +} + + /* * Experimental. * diff --git a/lib/frrlua.h b/lib/frrlua.h index 5d5e63da69..14cd3f0bdb 100644 --- a/lib/frrlua.h +++ b/lib/frrlua.h @@ -73,6 +73,11 @@ lua_State *frrlua_initialize(const char *file); void frrlua_newtable_prefix(lua_State *L, const struct prefix *prefix); /* + * Pushes a new table containing relevant fields from an interface structure. + */ +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); |
