From: Victor Julien Date: Thu, 9 Jul 2015 19:42:38 +0000 (+0200) Subject: lua: add direction support X-Git-Tag: suricata-3.0RC1~176 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8b3afb69862751f19c70fb82abeec07687e110ab;p=thirdparty%2Fsuricata.git lua: add direction support --- diff --git a/src/util-lua.c b/src/util-lua.c index a93dcb5d80..32d206c35b 100644 --- a/src/util-lua.c +++ b/src/util-lua.c @@ -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); diff --git a/src/util-lua.h b/src/util-lua.h index 7ea69915b9..4ea4c60513 100644 --- a/src/util-lua.h +++ b/src/util-lua.h @@ -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);