]> git.ipfire.org Git - thirdparty/suricata.git/log
thirdparty/suricata.git
12 years agopool: add error msgs and improve memory layout
Victor Julien [Tue, 14 May 2013 11:14:37 +0000 (13:14 +0200)] 
pool: add error msgs and improve memory layout

12 years agoAdd a per threadvars thread local thread id, that starts at 0 and increments for...
Victor Julien [Wed, 8 May 2013 11:26:49 +0000 (13:26 +0200)] 
Add a per threadvars thread local thread id, that starts at 0 and increments for each thread.

12 years agoCoverity 1038959: DNS mpm might use initialized variable
Victor Julien [Fri, 28 Jun 2013 08:06:27 +0000 (10:06 +0200)] 
Coverity 1038959: DNS mpm might use initialized variable

12 years agoRemove mpm ctxs in the wrong direction. 412/head
Anoop Saldanha [Fri, 28 Jun 2013 06:14:33 +0000 (11:44 +0530)] 
Remove mpm ctxs in the wrong direction.

A lot of http mpm ctxs have now been removed as a result of this.

12 years agoUpdate mpm init ctx to not accept the final cuda_rc_module argument.
Anoop Saldanha [Thu, 27 Jun 2013 19:47:28 +0000 (01:17 +0530)] 
Update mpm init ctx to not accept the final cuda_rc_module argument.

It was a part of our older architecture and is no longer used.

12 years agoDNS: fix CUDA build
Victor Julien [Thu, 27 Jun 2013 16:43:37 +0000 (18:43 +0200)] 
DNS: fix CUDA build

12 years agoDNS: fix warning when debug is not enabled
Victor Julien [Thu, 27 Jun 2013 16:43:22 +0000 (18:43 +0200)] 
DNS: fix warning when debug is not enabled

12 years agoDNS: disable logging by default
Victor Julien [Thu, 27 Jun 2013 16:21:30 +0000 (18:21 +0200)] 
DNS: disable logging by default

12 years agoDNS: add support for per TX decoder events.
Victor Julien [Thu, 2 May 2013 10:01:07 +0000 (12:01 +0200)] 
DNS: add support for per TX decoder events.

12 years agoapp layer: add support for per TX decoder events
Victor Julien [Thu, 2 May 2013 10:00:40 +0000 (12:00 +0200)] 
app layer: add support for per TX decoder events

12 years agoReset app layer events when we start inspecting a new TX
Victor Julien [Wed, 24 Apr 2013 12:59:30 +0000 (14:59 +0200)] 
Reset app layer events when we start inspecting a new TX

12 years agoDNS: add test for app layer event match
Victor Julien [Wed, 24 Apr 2013 12:02:53 +0000 (14:02 +0200)] 
DNS: add test for app layer event match

12 years agoMerge SIG_FLAG_MPM_HTTP and SIG_FLAG_MPM_DNS into SIG_FLAG_MPM_APPLAYER, do the same...
Victor Julien [Tue, 23 Apr 2013 14:35:13 +0000 (16:35 +0200)] 
Merge SIG_FLAG_MPM_HTTP and SIG_FLAG_MPM_DNS into SIG_FLAG_MPM_APPLAYER, do the same for the _NEG variant.

12 years agoDNS: enable mpm/fast_pattern support for dns_query
Victor Julien [Tue, 23 Apr 2013 14:19:26 +0000 (16:19 +0200)] 
DNS: enable mpm/fast_pattern support for dns_query

12 years agoDNS: add /F modifier to pcre to inspect DNS query name
Victor Julien [Sun, 21 Apr 2013 11:34:55 +0000 (13:34 +0200)] 
DNS: add /F modifier to pcre to inspect DNS query name

12 years agoDNS: add event rules file
Victor Julien [Sat, 20 Apr 2013 17:38:43 +0000 (19:38 +0200)] 
DNS: add event rules file

12 years agoDNS: add unittests for UDP and TCP for dns_query keyword
Victor Julien [Sun, 21 Apr 2013 11:12:03 +0000 (13:12 +0200)] 
DNS: add unittests for UDP and TCP for dns_query keyword

12 years agoDNS: adding dns_request content modifier
Victor Julien [Sat, 20 Apr 2013 17:37:05 +0000 (19:37 +0200)] 
DNS: adding dns_request content modifier

12 years agoDNS: add per tx internal id
Victor Julien [Sat, 20 Apr 2013 15:40:14 +0000 (17:40 +0200)] 
DNS: add per tx internal id

Add per TX id. Rename transaction_cnt to transaction_max (id) and increment it on tx creation.

12 years agoHacks to enable alert dns even though we have dnstcp and dnsudp parsers. Needs proper...
Victor Julien [Mon, 25 Mar 2013 16:19:54 +0000 (17:19 +0100)] 
Hacks to enable alert dns even though we have dnstcp and dnsudp parsers. Needs proper solution later.

12 years agoDNS TCP and UDP parser and DNS response logger
Victor Julien [Fri, 22 Feb 2013 17:17:49 +0000 (18:17 +0100)] 
DNS TCP and UDP parser and DNS response logger

12 years agoUse PACKET_* macro instead of UPDATE
Eric Leblond [Mon, 24 Jun 2013 07:58:42 +0000 (09:58 +0200)] 
Use PACKET_* macro instead of UPDATE

Setting the ACTION_DROP flag can be done via PACKET_DROP instead
of using PACKET_UPDATE_ACTION.

12 years agodecode: factorize macro code
Eric Leblond [Mon, 24 Jun 2013 07:52:31 +0000 (09:52 +0200)] 
decode: factorize macro code

PACKET_* are now wrapper to the newly introduced PACKET_SET_ACTION
macro.

12 years agodecode: Packet action start with PACKET
Eric Leblond [Mon, 24 Jun 2013 07:44:46 +0000 (09:44 +0200)] 
decode: Packet action start with PACKET

Rename all Packet action macro to have them prefixed by PACKET.

12 years agoDon't let geoip match on pseudo packets. 409/head
Anoop Saldanha [Thu, 27 Jun 2013 04:36:37 +0000 (10:06 +0530)] 
Don't let geoip match on pseudo packets.

12 years agoCoverity 1038523: Fix using cuda buffer slice that has been returned to the pool.
Anoop Saldanha [Wed, 26 Jun 2013 11:44:51 +0000 (17:14 +0530)] 
Coverity 1038523: Fix using cuda buffer slice that has been returned to the pool.

12 years agostream: detect keep-alive and keep-alive ACK
Victor Julien [Fri, 19 Apr 2013 16:51:23 +0000 (18:51 +0200)] 
stream: detect keep-alive and keep-alive ACK

12 years agostream: fix typo in function name
Victor Julien [Fri, 19 Apr 2013 14:10:21 +0000 (16:10 +0200)] 
stream: fix typo in function name

12 years agoCoverity 1038106: fix FP out-of-bond access
Eric Leblond [Wed, 26 Jun 2013 07:56:11 +0000 (09:56 +0200)] 
Coverity 1038106: fix FP out-of-bond access

A cast during the reading of a configuration variable was invalid
because a 16 bit integer was cast to a 32 bit integer. The called
function is only setting the pointer value to 1 or 0 so there is
no real issue there.

12 years agoCoverity: 1038139 suppress sanity check
Eric Leblond [Wed, 26 Jun 2013 07:42:33 +0000 (09:42 +0200)] 
Coverity: 1038139 suppress sanity check

The sanity check was really useless as the NULL value is checked in
the code flow.

12 years agoCoverity 1038515: check function return
Eric Leblond [Wed, 26 Jun 2013 07:37:08 +0000 (09:37 +0200)] 
Coverity 1038515: check function return

This is more cosmetic than useful but it is cleaner anyway.

12 years agoCuda make distcheck fix for cuda-ptxdump.h 405/head
Anoop Saldanha [Wed, 26 Jun 2013 07:53:08 +0000 (13:23 +0530)] 
Cuda make distcheck fix for cuda-ptxdump.h

12 years agoCoverity 1038522: fix memset inside cuda code. Wrong size specified to memset.
Anoop Saldanha [Wed, 26 Jun 2013 07:51:39 +0000 (13:21 +0530)] 
Coverity 1038522: fix memset inside cuda code.  Wrong size specified to memset.

12 years agoCoverity 1038085: remove 'default' statement in SCErrorToString. This way a warning...
Victor Julien [Tue, 25 Jun 2013 15:16:41 +0000 (17:16 +0200)] 
Coverity 1038085: remove 'default' statement in SCErrorToString. This way a warning will be given if an error is defined w/o updating this function.

12 years agoCoverity 1038092 & 1038093: remove dead code
Victor Julien [Tue, 25 Jun 2013 15:14:02 +0000 (17:14 +0200)] 
Coverity 1038092 & 1038093: remove dead code

12 years agoCoverity 1038518: fix wrong error check
Victor Julien [Tue, 25 Jun 2013 15:00:45 +0000 (17:00 +0200)] 
Coverity 1038518: fix wrong error check

12 years agoCoverity 1038124: memory leak on 'seq' keyword parsing failure
Victor Julien [Tue, 25 Jun 2013 12:14:50 +0000 (14:14 +0200)] 
Coverity 1038124: memory leak on 'seq' keyword parsing failure

12 years agoCoverity 1038123: memory leak on 'flowint' keyword parsing failure
Victor Julien [Tue, 25 Jun 2013 12:13:04 +0000 (14:13 +0200)] 
Coverity 1038123: memory leak on 'flowint' keyword parsing failure

12 years agoCoverity 1038116 & 1038117: memory leaks on 'app-layer-event' keyword parsing failure
Victor Julien [Tue, 25 Jun 2013 12:10:25 +0000 (14:10 +0200)] 
Coverity 1038116 & 1038117: memory leaks on 'app-layer-event' keyword parsing failure

12 years agoCoverity 1038115: memory leak on 'ack' keyword parsing failure
Victor Julien [Tue, 25 Jun 2013 12:07:13 +0000 (14:07 +0200)] 
Coverity 1038115: memory leak on 'ack' keyword parsing failure

12 years agoCoverity 1038113: possibly out of bounds read
Victor Julien [Tue, 25 Jun 2013 12:03:38 +0000 (14:03 +0200)] 
Coverity 1038113: possibly out of bounds read

12 years agoMinor cosmetic changes to the cuda code.
Anoop Saldanha [Thu, 20 Jun 2013 17:56:23 +0000 (23:26 +0530)] 
Minor cosmetic changes to the cuda code.

Moved a couple of functions to more cuda relevant files;
Re-structured some data types.

12 years agoModified CudaBufferCullCompletedSlices.
Anoop Saldanha [Mon, 25 Mar 2013 11:55:33 +0000 (17:25 +0530)] 
Modified CudaBufferCullCompletedSlices.

Allow readers specify max size of data they want to read.

12 years agoAdd a usleep to CudaBuffer culling process. Would lead to a situation where the threa...
Anoop Saldanha [Mon, 25 Mar 2013 09:51:09 +0000 (15:21 +0530)] 
Add a usleep to CudaBuffer culling process. Would lead to a situation where the thread wouldn't care to yield to others."

12 years agoVersion 1 of AC Cuda.
Anoop Saldanha [Mon, 25 Mar 2013 09:38:45 +0000 (15:08 +0530)] 
Version 1 of AC Cuda.

12 years agoVersion 1 of CudaBuffer API. Introduced to buffer data to the gpu.
Anoop Saldanha [Sat, 23 Mar 2013 17:53:47 +0000 (23:23 +0530)] 
Version 1 of CudaBuffer API. Introduced to buffer data to the gpu.

This version allows async writes to a buffer by threads.  Allows only
sequential reads though.

12 years agoWe call packet and stream mpm as late as possible now. Won't affect the working of...
Anoop Saldanha [Thu, 15 Nov 2012 16:44:36 +0000 (22:14 +0530)] 
We call packet and stream mpm as late as possible now. Won't affect the working of the engine.

The rationale behind this is, if we have pkt buffered to the gpu, we'd want
to delay processing the pkt as much as possible.

12 years agopool now uses a queue kinda behaviour when getting/inserting data through poolbuckets.
Anoop Saldanha [Thu, 15 Nov 2012 16:41:34 +0000 (22:11 +0530)] 
pool now uses a queue kinda behaviour when getting/inserting data through poolbuckets.

12 years agocode refactoring. Call mpmprefilter slightly later than where it's called atm
Anoop Saldanha [Sat, 4 Aug 2012 12:44:38 +0000 (18:14 +0530)] 
code refactoring. Call mpmprefilter slightly later than where it's called atm

12 years agoRemove all cuda related code in the engine except for the cuda api wrappers
Anoop Saldanha [Thu, 15 Nov 2012 07:54:29 +0000 (13:24 +0530)] 
Remove all cuda related code in the engine except for the cuda api wrappers

12 years agoupdate cuda API wrappers
Anoop Saldanha [Wed, 1 Aug 2012 08:52:49 +0000 (14:22 +0530)] 
update cuda API wrappers

12 years agoAdd one shot run option to suri-graphite.
Eric Leblond [Fri, 15 Mar 2013 09:24:32 +0000 (10:24 +0100)] 
Add one shot run option to suri-graphite.

12 years agoImport suri-graphite script
Eric Leblond [Wed, 13 Mar 2013 09:50:21 +0000 (10:50 +0100)] 
Import suri-graphite script

This patch import suri-graphite into suricata contrib directory.
This script reads counters from suricata unix socket and send them
to a Graphite graphing server.

12 years agounix-socket: fix OSX build
Eric Leblond [Tue, 18 Jun 2013 08:57:19 +0000 (10:57 +0200)] 
unix-socket: fix OSX build

MSG_NOSIGNAL is not defined on macOSX and SO_NOSIGPIPE is used
instead.

12 years agoaction handling: add test to avoid direct access
Eric Leblond [Tue, 11 Jun 2013 13:41:21 +0000 (15:41 +0200)] 
action handling: add test to avoid direct access

Direct access to the action field of Packet structure is not
allowed.

12 years agoaction handling: use macro for test.
Eric Leblond [Tue, 11 Jun 2013 13:08:01 +0000 (15:08 +0200)] 
action handling: use macro for test.

Use test macro instead of direct access to action field.

This patch has been obtained by using the following
spatch file:

  @@
  Packet *p;
  expression E;
  @@

  - p->action & E
  + TEST_PACKET_ACTION(p, E)

12 years agoaction handling: define and use macros
Eric Leblond [Tue, 11 Jun 2013 12:52:11 +0000 (14:52 +0200)] 
action handling: define and use macros

The action field in Packet structure should not be accessed
directly as the tunneled packet needs to update the root packet
and not the initial packet.

This patch is fixing issue #819 where suricata was not able to
drop fragmented packets in AF_PACKET IPS mode. It also fixes
drop capability for tunneled packets.

12 years agoFix magic unittets.
Anoop Saldanha [Tue, 4 Jun 2013 19:21:55 +0000 (00:51 +0530)] 
Fix magic unittets.

Fix segv, when magic_load() fails due to the non-availability of default
magic files.

12 years agoFix wrong casting of htp pointer. Fixed it back to (HTPState *) inside
Anoop Saldanha [Sun, 16 Jun 2013 17:47:46 +0000 (23:17 +0530)] 
Fix wrong casting of htp pointer.  Fixed it back to (HTPState *) inside
htp utility functions.

12 years agodiscontinue matching on buffer if urilen returns a match failure. 389/head
Anoop Saldanha [Sat, 15 Jun 2013 05:52:16 +0000 (11:22 +0530)] 
discontinue matching on buffer if urilen returns a match failure.

12 years agobytetest: add unittest showing missed detection
Victor Julien [Tue, 11 Jun 2013 10:21:25 +0000 (12:21 +0200)] 
bytetest: add unittest showing missed detection

Tests recursive and relative negative byte_test matching.

12 years agoFix the bug specified in the previous commit. 387/head
Anoop Saldanha [Thu, 13 Jun 2013 14:54:55 +0000 (20:24 +0530)] 
Fix the bug specified in the previous commit.

Bug emanates from byte_test, byte_jump and byte_extract keyword being
unable to handle negative offsets when the inspection pointer is at the
end of the buffer.

12 years agoUnit-tests exposing a bug in byte_test, byte_jump and byte_extract.
Anoop Saldanha [Thu, 13 Jun 2013 14:50:55 +0000 (20:20 +0530)] 
Unit-tests exposing a bug in byte_test, byte_jump and byte_extract.

Bug emanates from all the keywords being unable to handle negative offsets
when the inspection pointer is at the end of the buffer.

12 years agobytetest: fix debug messages not printing negative offset correctly
Victor Julien [Tue, 11 Jun 2013 10:20:37 +0000 (12:20 +0200)] 
bytetest: fix debug messages not printing negative offset correctly

12 years agoAdding an updated doxygen config file, because the old one was created a couple major... 381/head
Phil Schroeder [Tue, 28 May 2013 04:40:54 +0000 (23:40 -0500)] 
Adding an updated doxygen config file, because the old one was created a couple major versions ago.

12 years agoHttp trailer headers unittests added.
Anoop Saldanha [Sun, 26 May 2013 09:29:44 +0000 (14:59 +0530)] 
Http trailer headers unittests added.

12 years agofix for #788. 378/head
Anoop Saldanha [Sat, 25 May 2013 05:08:13 +0000 (10:38 +0530)] 
fix for #788.

Now depth is kept in mind when we inspect chunks in client/server body.
This takes care of FPs originating from inspecting subsequent chunks that
match with depth, but shouldn't.

12 years agoluajit/flowint: add ScFlowintIncr & ScFlowintDecr
Victor Julien [Tue, 23 Apr 2013 09:58:49 +0000 (11:58 +0200)] 
luajit/flowint: add ScFlowintIncr & ScFlowintDecr

Add flowint lua functions for incrementing and decrementing flowints.

First use creates the var and inits to 0. So a call:

    a = ScFlowintIncr(0)

Results in a == 1.

If the var reached UINT_MAX (2^32), it's not further incremented. If the
var reaches 0 it's not decremented further.

Calling ScFlowintDecr on a uninitialized var will init it to 0.

Example script:

    function init (args)
        local needs = {}
        needs["http.request_headers"] = tostring(true)
        needs["flowint"] = {"cnt_incr"}
        return needs
    end

    function match(args)
        a = ScFlowintIncr(0);
        if a == 23 then
            return 1
        end

        return 0
    end
    return 0

This script matches the 23rd time it's invoked on a flow.

12 years agoflowvar/luajit: make 'sets' real time. Needed for cross HTTP-header matching.
Victor Julien [Mon, 22 Apr 2013 15:56:29 +0000 (17:56 +0200)] 
flowvar/luajit: make 'sets' real time. Needed for cross HTTP-header matching.

12 years agoluajit: add flowint support
Victor Julien [Mon, 22 Apr 2013 15:50:43 +0000 (17:50 +0200)] 
luajit: add flowint support

Expose ScFlowintGet and ScFlowintSet functions to luajit. These set
flowints in real time, regardless of rule and/or script match.

Example:

function init (args)
    local needs = {}
    needs["http.request_headers"] = tostring(true)
    needs["flowint"] = {"cnt"}
    return needs
end

function match(args)
    a = ScFlowintGet(0);
    if a then
        ScFlowintSet(0, a + 1)
    else
        ScFlowintSet(0, 1)
    end

    a = ScFlowintGet(0);
    if a == 23 then
        return 1
    end

    return 0
end

return 0

Script's init call first registers "cnt" at id 0, then 0 is used to use
this var.

12 years agoflowvar/flowint: split set functions into normal and NoLock version, where the latter...
Victor Julien [Mon, 22 Apr 2013 15:48:51 +0000 (17:48 +0200)] 
flowvar/flowint: split set functions into normal and NoLock version, where the latter won't lock the flow.

12 years agoflowvar/flowint: make local function static
Victor Julien [Mon, 22 Apr 2013 14:10:50 +0000 (16:10 +0200)] 
flowvar/flowint: make local function static

12 years agoluajit flowvar support
Victor Julien [Mon, 15 Apr 2013 17:59:28 +0000 (19:59 +0200)] 
luajit flowvar support

This patch adds flowvar support to luajit. It does so by exposing two special
C functions to the luajit scripts: ScFlowvarGet and ScFlowvarSet.

12 years agoUpdate configure.ac to detect Tile architecture.
Ken Steele [Mon, 20 May 2013 19:16:47 +0000 (15:16 -0400)] 
Update configure.ac to detect Tile architecture.

Detect if the architecture supports the Tilera mPipe packet processing
hardware. It it does, add the requried libraries and define HAVE_MPIPE.

12 years agoClear the PKT_ALLOC flag when storing Packets into the Packet pool.
Ken Steele [Sat, 18 May 2013 20:01:29 +0000 (16:01 -0400)] 
Clear the PKT_ALLOC flag when storing Packets into the Packet pool.

The PKT_ALLOC flag is set by PacketGetFromAlloc(), which needs to be
cleared for Packets in the Packet Pool, so clear the flag here.

12 years agoMore PacketGetFromMalloc() to allocate packets.
Ken Steele [Fri, 17 May 2013 17:48:32 +0000 (13:48 -0400)] 
More PacketGetFromMalloc() to allocate packets.

12 years agoUse PacketGetfromAlloc() for packet allocation instead of SCMalloc.
Ken Steele [Fri, 17 May 2013 14:05:04 +0000 (10:05 -0400)] 
Use PacketGetfromAlloc() for packet allocation instead of SCMalloc.

Only changed in one file for testing.

12 years agoRemoved Signature->order_id and replaced it with Signature->num.
Anoop Saldanha [Fri, 10 May 2013 16:20:16 +0000 (21:50 +0530)] 
Removed Signature->order_id and replaced it with Signature->num.

12 years ago1. Fix assignment of signums, which affected how we used read
Anoop Saldanha [Thu, 9 May 2013 03:22:05 +0000 (08:52 +0530)] 
1. Fix assignment of signums, which affected how we used read
   sigs(priority wise) inside staging.

   Previously we would assign signums before sig ordering, and hence the
   order didn't actually reflect the order of the sig in the
   sig_list(assuming sig reordering changed the sig_list).  Staging would
   use the old sig_nums to decide the priority of sigs.
2. Fix sig ordering for flowvar, flowbits, flowint, pktvar sigs.   We have
   introduced a new priority to treat sigs with set + read as lower
   priority compared to set only sigs.
3. Previously we treated sigs with a "priority(keyword)" > another sig's
   priority, as a sig with greater priority than the later.  We have
   reversed it.  Now the sig priority ordering is 1,2,.etc.  Updated
   sigordering unittests to reflect the same.

12 years agoAllow protocols to have both app layer keywords, as well as transaction 375/head
Anoop Saldanha [Mon, 20 May 2013 15:46:41 +0000 (21:16 +0530)] 
Allow protocols to have both app layer keywords, as well as transaction
based ones.

Our general logic and assumption is protocols either support one of the
above and not have both.

12 years agoMore lock fixes for the transaction update. Issues reported by Coverity. 374/head
Anoop Saldanha [Sat, 18 May 2013 05:20:51 +0000 (10:50 +0530)] 
More lock fixes for the transaction update.  Issues reported by Coverity.

12 years agoFix luajit compilation failure introduced by the transaction update. 370/head
Anoop Saldanha [Fri, 17 May 2013 10:51:54 +0000 (16:21 +0530)] 
Fix luajit compilation failure introduced by the transaction update.
Fix coverity lock issues reported by transaction update as well.

12 years agoTransaction engine redesigned.
Anoop Saldanha [Fri, 3 May 2013 15:04:58 +0000 (20:34 +0530)] 
Transaction engine redesigned.

Improved accuracy, improved performance.  Performance improvement
noticeable with http heavy traffic and ruleset.

A lot of other cosmetic changes carried out as well.  Wrappers introduced
for a lot of app layer functions.

Failing dce unittests disabled.  Will be reintroduced in the updated dce
engine.

Cross transaction matching taken care of.  FPs emanating from these
matches have now disappeared.  Double inspection of transactions taken
care of as well.

12 years agoTrack transaction progress separately for each direction in libhtp.
Anoop Saldanha [Fri, 3 May 2013 04:33:48 +0000 (10:03 +0530)] 
Track transaction progress separately for each direction in libhtp.

Currently libhtp tracks it using the same var.  This can lead to misleading
states, since a response can come in without a full request.

12 years agohsbd mpm and packet mpm share same mpm ctx id.
Anoop Saldanha [Fri, 12 Apr 2013 07:48:17 +0000 (13:18 +0530)] 
hsbd mpm and packet mpm share same mpm ctx id.

This is a bug emanating from we having a var reference for hsbd mpm,
but failing to initialize it, and we default to using the packet mpm.

12 years agococcinelle: update pkt not set test 361/head
Eric Leblond [Thu, 16 May 2013 08:22:27 +0000 (10:22 +0200)] 
coccinelle: update pkt not set test

This patch updates the test to add the support of initialization
of a Packet via the INITIALIZE macro.

12 years agoPreserve PKT_ALLOC flag inside PACKET_RECYCLE().
Ken Steele [Tue, 14 May 2013 19:38:00 +0000 (15:38 -0400)] 
Preserve PKT_ALLOC flag inside PACKET_RECYCLE().

The PKT_ALLOC flag was being cleared by PACKET_RECYCLE(), which could
then result in a packet being pushed back to the Packet ring buffer
incorrectly.

12 years agoMove memset() out of PACKET_INITIALIZE()
Ken Steele [Tue, 14 May 2013 19:00:21 +0000 (15:00 -0400)] 
Move memset() out of PACKET_INITIALIZE()

The memset() inside PACKET_INITIALIZE() is redundant in some cases and
it is cleaner to do as part of the memory allocation. This simplifies
changes for integrating Tilera mPIPE support because the size of memory
cleared in that case is different from SIZE_OF_PACKET.

For the cases where Packets are directly allocated and then call
PACKET_INITIALIZE() without memset() first, this patch adds memset() calls.

A further change would use GetPacketFromAlloc() directly.

12 years agoMove fallback to CLS detection to configure script.
Victor Julien [Wed, 8 May 2013 12:51:15 +0000 (14:51 +0200)] 
Move fallback to CLS detection to configure script.

12 years agoFix CLS detection on systems that have getconf, but don't support the LEVEL1_DCACHE_L...
Victor Julien [Wed, 8 May 2013 10:41:10 +0000 (12:41 +0200)] 
Fix CLS detection on systems that have getconf, but don't support the LEVEL1_DCACHE_LINESIZE option.

12 years agoDetect L1 cache line size at build time. Fall back to 64 bytes if detection failed.
Victor Julien [Tue, 7 May 2013 12:41:36 +0000 (14:41 +0200)] 
Detect L1 cache line size at build time. Fall back to 64 bytes if detection failed.

12 years agoNFQ: convert batchcount related yaml errors to warnings.
Victor Julien [Mon, 6 May 2013 09:31:24 +0000 (11:31 +0200)] 
NFQ: convert batchcount related yaml errors to warnings.

12 years agoNFQ: fix configure check for finding out signed/unsigned args for nfq_get_payload
Victor Julien [Mon, 6 May 2013 09:10:11 +0000 (11:10 +0200)] 
NFQ: fix configure check for finding out signed/unsigned args for nfq_get_payload

12 years agonfq: add errno display when verdict fail 348/head
Eric Leblond [Thu, 24 Jan 2013 21:37:39 +0000 (22:37 +0100)] 
nfq: add errno display when verdict fail

In case of error, errno is set by sendmsg which is called by
nfnetlink and which is called by libnetfilter_queue. This patch
displays the string expression of errno if verdict has failed.

12 years agonfq: add support for batch verdicts
Florian Westphal [Wed, 16 Jan 2013 12:05:48 +0000 (13:05 +0100)] 
nfq: add support for batch verdicts

Normally, there is one verdict per packet, i.e., we receive a packet,
process it, and then tell the kernel what to do with that packet (eg.
DROP or ACCEPT).

recv(), packet id x
send verdict v, packet id x
recv(), packet id x+1
send verdict v, packet id x+1
[..]
recv(), packet id x+n
send verdict v, packet id x+n

An alternative is to process several packets from the queue, and then send
a batch-verdict.

recv(), packet id x
recv(), packet id x+1
[..]
recv(), packet id x+n
send batch verdict v, packet id x+n

A batch verdict affects all previous packets (packet_id <= x+n),
we thus only need to remember the last packet_id seen.

Caveats:
- can't modify payload
- verdict is applied to all packets
- nfmark (if set) will be set for all packets
- increases latency (packets remain queued by the kernel
  until batch verdict is sent).

To solve this, we only defer verdict for up to 20 packets and
send pending batch-verdict immediately if:
- no packets are currently queue
- current packet should be dropped
- current packet has different nfmark
- payload of packet was modified

This patch adds a configurable batch verdict support for workers runmode.
The batch verdicts are turned off by default.

Problem is that batch verdicts only work with kernels >= 3.1, i.e.
using newer libnetfilter_queue with an old kernel means non-working
suricata. So the functionnality has to be disabled by default.

12 years agonfq: avoid extra copy when running in workers mode
Florian Westphal [Wed, 16 Jan 2013 11:56:44 +0000 (12:56 +0100)] 
nfq: avoid extra copy when running in workers mode

currently, the packet payload recv()d from the nfqueue netlink
socket is copied into a new packet buffer.

This is required because the recv-buffer space used is tied
to the current thread, but a packet may be handed off to other
threads, and the recv-buffer can be re-used while the packet
is handled by another thread.

However, in worker runmode, the packet will always be handled
by the current thread, and the recv-buffer will only be reused
after the entire packet processing stack is done with the packet.

Thus, in worker runmode, we can avoid the copy and assign
the packet data area directly.

12 years agoalert-debuglog: cleanup TCP check
Victor Julien [Tue, 23 Apr 2013 14:09:01 +0000 (16:09 +0200)] 
alert-debuglog: cleanup TCP check

12 years agounified2: more udp fixes
Victor Julien [Tue, 23 Apr 2013 14:08:16 +0000 (16:08 +0200)] 
unified2: more udp fixes

12 years agoprofiling: enabled app layer profiling for UDP app layer modules
Victor Julien [Sat, 20 Apr 2013 09:41:49 +0000 (11:41 +0200)] 
profiling: enabled app layer profiling for UDP app layer modules

12 years agoprelude: only call stream callback for TCP
Victor Julien [Mon, 22 Apr 2013 09:04:24 +0000 (11:04 +0200)] 
prelude: only call stream callback for TCP