]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
lua: export packet keywords to detect scripts 1112/head
authorVictor Julien <victor@inliniac.net>
Fri, 15 Aug 2014 12:04:44 +0000 (14:04 +0200)
committerVictor Julien <victor@inliniac.net>
Fri, 15 Aug 2014 12:04:44 +0000 (14:04 +0200)
Set packet pointer, so it's available to the lua keywords that
require it.

src/detect-lua-extensions.c
src/detect-lua-extensions.h
src/detect-lua.c

index a83be283efcc230e74fc124dba333a2971970624..6d63e708e1b9db96b86f08824c0cfb9a1bdca3d6 100644 (file)
@@ -558,7 +558,8 @@ static int LuaDecrFlowint(lua_State *luastate)
 
 }
 
-void LuaExtensionsMatchSetup(lua_State *lua_state, DetectLuaData *ld, DetectEngineThreadCtx *det_ctx, Flow *f, int flow_locked)
+void LuaExtensionsMatchSetup(lua_State *lua_state, DetectLuaData *ld, DetectEngineThreadCtx *det_ctx,
+        Flow *f, int flow_locked, Packet *p)
 {
     SCLogDebug("det_ctx %p, f %p", det_ctx, f);
 
@@ -582,6 +583,9 @@ void LuaExtensionsMatchSetup(lua_State *lua_state, DetectLuaData *ld, DetectEngi
             }
         }
     }
+
+    if (p != NULL)
+        LuaStateSetPacket(lua_state, p);
 }
 
 /**
index e961acf2fcff1261ea9982ead7e5588a599866eb..e2edf9c6f9f3f5a7fff73f20909cde41d4733fc2 100644 (file)
@@ -29,7 +29,7 @@ int LuaRegisterExtensions(lua_State *);
 
 void LuaExtensionsMatchSetup(lua_State *lua_state,
         DetectLuaData *, DetectEngineThreadCtx *det_ctx,
-        Flow *f, int flow_locked);
+        Flow *f, int flow_locked, Packet *p);
 
 #endif /* HAVE_LUA */
 #endif
index 0bc4021c506207a537c7b63251ca4f054ff1a9da..75364136ff2ee3d85f4b53e8a506275362591816 100644 (file)
@@ -288,7 +288,8 @@ int DetectLuaMatchBuffer(DetectEngineThreadCtx *det_ctx, Signature *s, SigMatch
         SCReturnInt(0);
 
     /* setup extension data for use in lua c functions */
-    LuaExtensionsMatchSetup(tluajit->luastate, luajit, det_ctx, f, flow_lock);
+    LuaExtensionsMatchSetup(tluajit->luastate, luajit, det_ctx,
+            f, flow_lock, /* no packet in the ctx */NULL);
 
     /* prepare data to pass to script */
     lua_getglobal(tluajit->luastate, "match");
@@ -389,7 +390,8 @@ static int DetectLuaMatch (ThreadVars *tv, DetectEngineThreadCtx *det_ctx,
         SCReturnInt(0);
 
     /* setup extension data for use in lua c functions */
-    LuaExtensionsMatchSetup(tluajit->luastate, luajit, det_ctx, p->flow, /* flow not locked */LUA_FLOW_NOT_LOCKED_BY_PARENT);
+    LuaExtensionsMatchSetup(tluajit->luastate, luajit, det_ctx,
+            p->flow, /* flow not locked */LUA_FLOW_NOT_LOCKED_BY_PARENT, p);
 
     if ((tluajit->flags & DATATYPE_PAYLOAD) && p->payload_len == 0)
         SCReturnInt(0);