]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
lua: add direction support
authorVictor Julien <victor@inliniac.net>
Thu, 9 Jul 2015 19:42:38 +0000 (21:42 +0200)
committerVictor Julien <victor@inliniac.net>
Fri, 4 Sep 2015 09:50:03 +0000 (11:50 +0200)
src/util-lua.c
src/util-lua.h

index a93dcb5d80b0f0308d206133f80fdc3411b5e7fa..32d206c35b8b8106f1ec4e358db044e3231fbef4 100644 (file)
@@ -66,6 +66,8 @@ const char lua_ext_key_p[] = "suricata:lua:pkt:ptr";
 const char lua_ext_key_flow[] = "suricata:lua:flow:ptr";
 /* key for flow lock hint bool */
 const char lua_ext_key_flow_lock_hint[] = "suricata:lua:flow:lock_hint";
+/* key for direction */
+const char lua_ext_key_direction[] = "suricata:lua:direction";
 
 /* key for pa (packet alert) pointer */
 const char lua_ext_key_pa[] = "suricata:lua:pkt:alert:ptr";
@@ -200,6 +202,22 @@ void LuaStateSetStreamingBuffer(lua_State *luastate, LuaStreamingBuffer *b)
     lua_settable(luastate, LUA_REGISTRYINDEX);
 }
 
+/** \brief get packet pointer from the lua state */
+int LuaStateGetDirection(lua_State *luastate)
+{
+    lua_pushlightuserdata(luastate, (void *)&lua_ext_key_direction);
+    lua_gettable(luastate, LUA_REGISTRYINDEX);
+    int dir = lua_toboolean(luastate, -1);
+    return dir;
+}
+
+void LuaStateSetDirection(lua_State *luastate, int direction)
+{
+    lua_pushlightuserdata(luastate, (void *)&lua_ext_key_direction);
+    lua_pushboolean(luastate, direction);
+    lua_settable(luastate, LUA_REGISTRYINDEX);
+}
+
 /** \brief dump stack from lua state to screen */
 void LuaPrintStack(lua_State *state) {
     int size = lua_gettop(state);
index 7ea69915b9e0c62b60192d33aea213ae4bdfa450..4ea4c60513f4ede7ad88abe8ba8d15263ce9aaac 100644 (file)
@@ -60,6 +60,8 @@ File *LuaStateGetFile(lua_State *luastate);
 
 LuaStreamingBuffer *LuaStateGetStreamingBuffer(lua_State *luastate);
 
+int LuaStateGetDirection(lua_State *luastate);
+
 /* sets */
 
 void LuaStateSetPacket(lua_State *luastate, Packet *p);
@@ -82,6 +84,8 @@ void LuaStateSetThreadVars(lua_State *luastate, ThreadVars *tv);
 
 void LuaStateSetStreamingBuffer(lua_State *luastate, LuaStreamingBuffer *b);
 
+void LuaStateSetDirection(lua_State *luastate, int direction);
+
 void LuaPrintStack(lua_State *state);
 
 int LuaPushStringBuffer(lua_State *luastate, const uint8_t *input, size_t input_len);