From 9b7cab1f21ee3945f2abfc1cc39e08e4b98832eb Mon Sep 17 00:00:00 2001 From: Jason Ish Date: Thu, 27 Mar 2025 10:46:49 -0600 Subject: [PATCH] lua: convert dnp3 to suricata.dnp3 lib This is an initial 1:1 conversion which is rather simple, as DNP3 only had one function which converted the whole transaction to a DNP3 table. Ticket: #7601 --- src/detect-lua-extensions.c | 1 - src/util-lua-builtins.c | 2 ++ src/util-lua-dnp3.c | 15 ++++++++++----- src/util-lua-dnp3.h | 2 +- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/detect-lua-extensions.c b/src/detect-lua-extensions.c index 045957e4c3..eb0de09c52 100644 --- a/src/detect-lua-extensions.c +++ b/src/detect-lua-extensions.c @@ -556,6 +556,5 @@ int LuaRegisterExtensions(lua_State *lua_state) LuaRegisterSshFunctions(lua_state); LuaRegisterHasshFunctions(lua_state); LuaRegisterSmtpFunctions(lua_state); - LuaRegisterDNP3Functions(lua_state); return 0; } diff --git a/src/util-lua-builtins.c b/src/util-lua-builtins.c index 7c5bb08e61..d03e56d224 100644 --- a/src/util-lua-builtins.c +++ b/src/util-lua-builtins.c @@ -19,6 +19,7 @@ #include "util-lua-builtins.h" #include "util-lua-base64lib.h" #include "util-lua-dataset.h" +#include "util-lua-dnp3.h" #include "util-lua-dns.h" #include "util-lua-hashlib.h" #include "util-lua-packetlib.h" @@ -28,6 +29,7 @@ static const luaL_Reg builtins[] = { { "suricata.base64", SCLuaLoadBase64Lib }, { "suricata.dataset", LuaLoadDatasetLib }, + { "suricata.dnp3", SCLuaLoadDnp3Lib }, { "suricata.dns", SCLuaLoadDnsLib }, { "suricata.hashlib", SCLuaLoadHashlib }, { "suricata.packet", LuaLoadPacketLib }, diff --git a/src/util-lua-dnp3.c b/src/util-lua-dnp3.c index 571a1d42cd..2efc50b5b6 100644 --- a/src/util-lua-dnp3.c +++ b/src/util-lua-dnp3.c @@ -188,10 +188,15 @@ static int DNP3GetTx(lua_State *luastate) return 1; } -int LuaRegisterDNP3Functions(lua_State *luastate) +static const struct luaL_Reg dnp3lib[] = { + // clang-format off + { "get_tx", DNP3GetTx, }, + { NULL, NULL, } + // clang-format on +}; + +int SCLuaLoadDnp3Lib(lua_State *L) { - lua_pushcfunction(luastate, DNP3GetTx); - lua_setglobal(luastate, "DNP3GetTx"); - - return 0; + luaL_newlib(L, dnp3lib); + return 1; } diff --git a/src/util-lua-dnp3.h b/src/util-lua-dnp3.h index a594fbfbe8..b13466c1db 100644 --- a/src/util-lua-dnp3.h +++ b/src/util-lua-dnp3.h @@ -18,6 +18,6 @@ #ifndef SURICATA_UTIL_LUA_DNP3_H #define SURICATA_UTIL_LUA_DNP3_H -int LuaRegisterDNP3Functions(lua_State *); +int SCLuaLoadDnp3Lib(lua_State *L); #endif /* !SURICATA_UTIL_LUA_DNP3_H */