]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
output-lua: initial packet support
authorVictor Julien <victor@inliniac.net>
Thu, 20 Feb 2014 14:47:50 +0000 (15:47 +0100)
committerVictor Julien <victor@inliniac.net>
Fri, 15 Aug 2014 11:58:25 +0000 (13:58 +0200)
Add key for storing packet pointer in the lua stack and a utility
function to retrieve it from lua callbacks.

src/output-lua-common.c
src/output-lua-common.h
src/output-lua.c

index ae4384ed9f70cee629e01057e317a3b41cdd5fa8..c62f19c83a33d95ae5173cffdf9e45c3882b3a84 100644 (file)
@@ -89,6 +89,15 @@ void LuaPrintStack(lua_State *state) {
 }
 
 extern const char lualog_ext_key_tx;
+extern const char lualog_ext_key_p;
+
+Packet *LuaStateGetPacket(lua_State *luastate)
+{
+    lua_pushlightuserdata(luastate, (void *)&lualog_ext_key_p);
+    lua_gettable(luastate, LUA_REGISTRYINDEX);
+    void *p = lua_touserdata(luastate, -1);
+    return (Packet *)p;
+}
 
 void *LuaStateGetTX(lua_State *luastate)
 {
index eeefbaa1702b5f96b571d2215f41764fe438c975..d5f46f64695eda27d441769dc9c5907b4bfe2bed 100644 (file)
@@ -28,6 +28,7 @@
 
 void LuaPrintStack(lua_State *state);
 
+Packet *LuaStateGetPacket(lua_State *luastate);
 void *LuaStateGetTX(lua_State *luastate);
 int LuaCallbackError(lua_State *luastate, const char *msg);
 int LuaReturnStringBuffer(lua_State *luastate, const uint8_t *input, size_t input_len);
index 8ed2a1062db6fb3b06a0b318fad30acf4807e5aa..762ef66683cab7758d05829fc2a181758dd34a71 100644 (file)
@@ -69,6 +69,8 @@ typedef struct LogLuaThreadCtx_ {
 } LogLuaThreadCtx;
 
 const char lualog_ext_key_tx[] = "suricata:lualog:tx:ptr";
+/* key for p (packet) pointer */
+const char lualog_ext_key_p[] = "suricata:lualog:pkt:ptr";
 
 static int LuaTxLogger(ThreadVars *tv, void *thread_data, const Packet *p, Flow *f, void *alstate, void *txptr, uint64_t tx_id)
 {