]> git.ipfire.org Git - thirdparty/suricata.git/log
thirdparty/suricata.git
3 years agorust: simplify bits parser annotations 6814/head
Pierre Chifflier [Tue, 18 Jan 2022 21:38:19 +0000 (22:38 +0100)] 
rust: simplify bits parser annotations

3 years agorust/smb: simplify bits parser annotations
Pierre Chifflier [Tue, 18 Jan 2022 21:21:07 +0000 (22:21 +0100)] 
rust/smb: simplify bits parser annotations

3 years agorust: add 'bits' combinator to simplify nom bits parsers
Pierre Chifflier [Tue, 18 Jan 2022 20:56:37 +0000 (21:56 +0100)] 
rust: add 'bits' combinator to simplify nom bits parsers

Add a specialized version of the 'bits' nom combinator so adding
bits-level parsers does not require type annotations.

3 years agodetect: do not upgrade base64 decode when fuzzing 6810/head
Philippe Antoine [Thu, 9 Dec 2021 19:43:56 +0000 (20:43 +0100)] 
detect: do not upgrade base64 decode when fuzzing

As fuzzing will put a very big value, and then
ThreadCtxDoInit will try to allocate it,
ending in out of memory

3 years agoproto-detect: set flags in packet direction for UDP
Victor Julien [Tue, 18 Jan 2022 14:17:12 +0000 (15:17 +0100)] 
proto-detect: set flags in packet direction for UDP

3 years agoproto-detect: fix UDP not setting alproto_ts/tc
Victor Julien [Tue, 18 Jan 2022 13:52:13 +0000 (14:52 +0100)] 
proto-detect: fix UDP not setting alproto_ts/tc

This would lead to the `app-layer-protocol` keyword not matching correctly.

3 years agodetect: xor transform 6809/head
Philippe Antoine [Fri, 22 Oct 2021 17:47:49 +0000 (19:47 +0200)] 
detect: xor transform

Ticket: 3285

The xor transform applies xor decoding to a buffer, with a key
specified as an option in hexadecimal. Arbitrary key sizes are
accepted.

3 years agodetect: adds test with invalid uint mode <<
Philippe Antoine [Thu, 18 Feb 2021 14:43:16 +0000 (15:43 +0100)] 
detect: adds test with invalid uint mode <<

3 years agodetect: use generic functions for icode parsing
Philippe Antoine [Wed, 17 Feb 2021 16:28:51 +0000 (17:28 +0100)] 
detect: use generic functions for icode parsing

3 years agofuzz: cleans all flow after one run
Philippe Antoine [Thu, 16 Dec 2021 09:23:40 +0000 (10:23 +0100)] 
fuzz: cleans all flow after one run

Makes the fuzz target more stateless

And manages to find bugs on the FlowFree path

3 years agofuzz: use parsed rules in sigpcap target
Philippe Antoine [Thu, 9 Dec 2021 14:06:24 +0000 (15:06 +0100)] 
fuzz: use parsed rules in sigpcap target

Ticket: 4125

As commit d21a252238fd766d3c2ec4c2d165d429dad0d85a
But for sigpcap target as well

3 years agodns: wrap with HAVE_LUA
Philippe Antoine [Thu, 9 Dec 2021 09:24:50 +0000 (10:24 +0100)] 
dns: wrap with HAVE_LUA

This is just code style, to minimize the compiled code.

3 years agofuzz: enable template protocols
Philippe Antoine [Thu, 9 Dec 2021 08:57:05 +0000 (09:57 +0100)] 
fuzz: enable template protocols

Ticket: 4125

3 years agoenip: fix too restrictive check in probing parser
Philippe Antoine [Wed, 15 Dec 2021 20:11:05 +0000 (21:11 +0100)] 
enip: fix too restrictive check in probing parser

As is shown later in the code, enip_len can be
ENIP_LEN_REGISTER_SESSION which is 4, which is
smaller than sizeof(ENIPEncapHdr) which is 24

3 years agofuzz: use fuzzing confyaml for protodetect target
Philippe Antoine [Wed, 15 Dec 2021 19:48:47 +0000 (20:48 +0100)] 
fuzz: use fuzzing confyaml for protodetect target

As is done for other targets,
so that all app-layer protocols are enabled,
even the ones disabled by default such as enip

And resets protocol detection every time we try
so that probing_parser_toserver_alproto_masks are fresh.

3 years agodoc/update: mention change of default rule path
Jason Ish [Thu, 16 Dec 2021 22:27:42 +0000 (16:27 -0600)] 
doc/update: mention change of default rule path

3 years agodoc: update rule section to current default
Jason Ish [Thu, 16 Dec 2021 22:26:47 +0000 (16:26 -0600)] 
doc: update rule section to current default

Update the rule section to better describe whats seen in a default
install of Suricata including a link to the rule management section.

3 years agorule-path: always use $localstatedir/lib/suricata/rules
Jason Ish [Thu, 16 Dec 2021 22:24:38 +0000 (16:24 -0600)] 
rule-path: always use $localstatedir/lib/suricata/rules

Always use the same path for default-rule-path whether or not
Suricata-Update will be installed as part of the Suricata install or
not.

This provides consistency, and maps better to our recommendation that
Suricata-Update be used to manage rules.

Probably should have been done as part of
55852d0de3151517b6cb22c736cb2de8a893cb11.

Ticket #4912.

3 years agotelnet: initial support with frames
Victor Julien [Tue, 4 Jan 2022 15:43:24 +0000 (16:43 +0100)] 
telnet: initial support with frames

Bootstrapped using setup script. Basic option parsing for purpose
of tagging frames.

3 years agohtp: improve request/response size accuracy
Victor Julien [Sun, 12 Dec 2021 07:11:46 +0000 (08:11 +0100)] 
htp: improve request/response size accuracy

3 years agohtp: implement basic request/response frames
Victor Julien [Fri, 10 Dec 2021 17:19:06 +0000 (18:19 +0100)] 
htp: implement basic request/response frames

3 years agossl: implement frames for SSLv3 and TLS
Victor Julien [Fri, 3 Dec 2021 07:17:37 +0000 (08:17 +0100)] 
ssl: implement frames for SSLv3 and TLS

3 years agosmb: use derive AppLayerFrameType
Jason Ish [Wed, 8 Dec 2021 23:08:07 +0000 (17:08 -0600)] 
smb: use derive AppLayerFrameType

3 years agosmb: implement frames
Victor Julien [Mon, 6 Dec 2021 10:35:23 +0000 (11:35 +0100)] 
smb: implement frames

SMB1 record parsing code simplification.

Frames:

    nbss.pdu
    nbss.hdr
    nbss.data

    smb1.pdu
    smb1.hdr
    smb1.data

    smb2.pdu
    smb2.hdr
    smb2.data

    smb3.pdu
    smb3.hdr
    smb3.data

The smb* frames are created for valid SMB records.

3 years agodetect/frames: implement 'frame' keyword
Victor Julien [Fri, 3 Dec 2021 07:14:34 +0000 (08:14 +0100)] 
detect/frames: implement 'frame' keyword

Implement a special sticky buffer to select frames for inspection.

This keyword takes an argument to specify the per protocol frame type:

    alert <app proto name> ... frame:<specific frame name>

Or it can specify both in the keyword:

    alert tcp ... frame:<app proto name>.<specific frame name>

The latter is useful in some cases like http, where "http" applies to
both HTTP and HTTP/2.

    alert http ... frame:http1.request;
    alert http1 ... frame:request;

Examples:

    tls.pdu
    smb.smb2.hdr
    smb.smb3.data

Consider a rule like:

    alert tcp ... flow:to_server; content:"|ff|SMB"; content:"some smb 1 issue";

this will scan all toserver TCP traffic, where it will only be limited by a port,
depending on how rules are grouped.

With this work we'll be able to do:

    alert smb ... flow:to_server; frame:smb1.data; content:"some smb 1 issue";

This rule will only inspect the data portion of SMB1 frames. It will not affect
any other protocol, and it won't need special patterns to "search" for the
SMB1 frame in the raw stream.

3 years agodetect/frames: limit mixing frames and other detection
Victor Julien [Fri, 3 Dec 2021 07:15:15 +0000 (08:15 +0100)] 
detect/frames: limit mixing frames and other detection

Don't allow mixing of payload/stream/tx and frame keywords. Initial
support is only for 'pure' frame inspection.

3 years agodetect/analyzer: add frame support
Victor Julien [Fri, 3 Dec 2021 07:18:40 +0000 (08:18 +0100)] 
detect/analyzer: add frame support

3 years agodetect/engine: support frames
Victor Julien [Fri, 3 Dec 2021 06:53:32 +0000 (07:53 +0100)] 
detect/engine: support frames

Implement the low level detect engine support for inspecting frames,
including MPM, transforms and inspect API's.

3 years agoeve/alert: add support for logging frame
Victor Julien [Fri, 3 Dec 2021 06:47:29 +0000 (07:47 +0100)] 
eve/alert: add support for logging frame

If detection was done in a frame, the frame will be added to the
eve.alert output.

3 years agoeve: implement frame logging
Victor Julien [Fri, 3 Dec 2021 06:45:28 +0000 (07:45 +0100)] 
eve: implement frame logging

This is mostly to assist development and QA. It produces too much data
for practical use.

3 years agocbindgen: ignore frames module
Jason Ish [Tue, 7 Dec 2021 21:42:23 +0000 (15:42 -0600)] 
cbindgen: ignore frames module

3 years agorust: derive macro for app-layer frame type
Jason Ish [Wed, 8 Dec 2021 23:06:04 +0000 (17:06 -0600)] 
rust: derive macro for app-layer frame type

3 years agorust/applayer: create trait for app-layer frame types
Jason Ish [Wed, 8 Dec 2021 23:06:37 +0000 (17:06 -0600)] 
rust/applayer: create trait for app-layer frame types

3 years agoapp/frames: implement rust API
Jason Ish [Mon, 13 Dec 2021 19:12:13 +0000 (20:12 +0100)] 
app/frames: implement rust API

3 years agoapp-layer: move app_progress forward on errors as well
Victor Julien [Tue, 21 Dec 2021 08:59:15 +0000 (09:59 +0100)] 
app-layer: move app_progress forward on errors as well

In case of APP_LAYER_ERROR still move the app_progress forward.
This helps validation of frame offsets and should be harmless
otherwise.

3 years agoapp/frames: initial support
Victor Julien [Fri, 3 Dec 2021 06:40:56 +0000 (07:40 +0100)] 
app/frames: initial support

The idea of stream frames is that the applayer parsers can tag PDUs and
other arbitrary frames in the stream while parsing. These frames can then
be inspected from the rule language. This will allow rules that are more
precise and less costly.

The frames are stored per direction in the `AppLayerParserState` and will only
be initialized when actual frames are in use. The per direction storage has a
fixed size static portion and dynamic support for a larger number. This is done
for effeciency.

When the Stream Buffer slides, frames are updated as they use offsets relative
to the stream. A negative offset is used for frames that started before the
current window.

Frames have events to inspect/log parser errors that don't fit the TX model.

Frame id starts at 1. So implementations can keep track of frame ids where 0
is not set.

Frames affect TCP window sliding. The frames keep a "left edge" which
signifies how much data to keep for frames that are still in progress.

3 years agoapp/frames: implement name to id API for frames
Victor Julien [Fri, 3 Dec 2021 06:42:22 +0000 (07:42 +0100)] 
app/frames: implement name to id API for frames

3 years agostream: add util function to get 'usable' data
Victor Julien [Sat, 18 Dec 2021 18:11:40 +0000 (19:11 +0100)] 
stream: add util function to get 'usable' data

3 years agoci: do not use ppa for cocci 6802/head
Philippe Antoine [Mon, 17 Jan 2022 14:14:54 +0000 (15:14 +0100)] 
ci: do not use ppa for cocci

As this version segfaults

3 years agorust/http2: convert parser to nom7 functions (HTTP2 ranges)
Pierre Chifflier [Wed, 12 Jan 2022 15:41:15 +0000 (16:41 +0100)] 
rust/http2: convert parser to nom7 functions (HTTP2 ranges)

3 years agorust/http2: convert parser to nom7 functions (HTTP2 core functions)
Pierre Chifflier [Wed, 12 Jan 2022 15:17:40 +0000 (16:17 +0100)] 
rust/http2: convert parser to nom7 functions (HTTP2 core functions)

3 years agodpdk: fix received/error counters
Lukas Sismis [Wed, 15 Dec 2021 13:24:55 +0000 (14:24 +0100)] 
dpdk: fix received/error counters

3 years agotests/pppoe: clean up more tests to use PASS/FAIL macros
Victor Julien [Mon, 17 Jan 2022 12:02:51 +0000 (13:02 +0100)] 
tests/pppoe: clean up more tests to use PASS/FAIL macros

3 years agopppoe: fix protocol field length variation
Steven Ottenhoff [Thu, 13 Jan 2022 13:05:58 +0000 (13:05 +0000)] 
pppoe: fix protocol field length variation

Detect when protocol field is not a 16 bit field.
Added tests to prove logic

Ticket: 4810

3 years agotest/pppoe: refactor to use FAIL/PASS macros
Steven Ottenhoff [Thu, 13 Jan 2022 12:38:01 +0000 (12:38 +0000)] 
test/pppoe: refactor to use FAIL/PASS macros

3 years agodetect-file-data: remove SMTP unittests
Modupe Falodun [Fri, 14 Jan 2022 15:53:28 +0000 (16:53 +0100)] 
detect-file-data: remove SMTP unittests

These tests are reimplemented as Suricata-verify tests

Task: 4938

3 years agooutput/alert: don't call basic logging twice
Eric Leblond [Mon, 17 Jan 2022 08:31:06 +0000 (09:31 +0100)] 
output/alert: don't call basic logging twice

Issue: 4106

3 years agostream: suppress noisy debug message
Victor Julien [Fri, 14 Jan 2022 10:48:16 +0000 (11:48 +0100)] 
stream: suppress noisy debug message

3 years agostream: fix stream pruning being too aggressive 6781/head
Victor Julien [Thu, 13 Jan 2022 11:13:43 +0000 (12:13 +0100)] 
stream: fix stream pruning being too aggressive

Pruning of StreamBufferBlocks could remove blocks that fell entirely
after the target offset due to a logic error. This could lead to data
being evicted that was still meant to be processed in theapp-layer
parsers.

Bug: #4953.

3 years agostream: debug code for showing segment list state
Victor Julien [Thu, 13 Jan 2022 11:12:56 +0000 (12:12 +0100)] 
stream: debug code for showing segment list state

3 years agodetect: Avoid recomputing ntohl() in addr match 6779/head
Jeff Lucovsky [Sun, 26 Dec 2021 15:22:34 +0000 (10:22 -0500)] 
detect: Avoid recomputing ntohl() in addr match

This commit makes a small optimization when comparing IPv4 and IPv6
addresses by making the host order value invariant and calculating the
value once, before entering the loop.

3 years agofile: define own variable instead of PATH_MAX
Philippe Antoine [Wed, 8 Dec 2021 20:14:54 +0000 (21:14 +0100)] 
file: define own variable instead of PATH_MAX

to be used for maximum size of file names,
and not depend on the OS

3 years agossl: fix int warnings
Philippe Antoine [Mon, 6 Dec 2021 08:44:12 +0000 (09:44 +0100)] 
ssl: fix int warnings

especially increasing padding_len size

3 years agosmtp: fix int warnings
Philippe Antoine [Mon, 6 Dec 2021 08:36:14 +0000 (09:36 +0100)] 
smtp: fix int warnings

and explicitly truncating filename's length

3 years agoapp: fix int warnings in generic app files
Philippe Antoine [Mon, 6 Dec 2021 08:26:54 +0000 (09:26 +0100)] 
app: fix int warnings in generic app files

3 years agohttp: : fix int warnings
Philippe Antoine [Mon, 6 Dec 2021 08:22:52 +0000 (09:22 +0100)] 
http: : fix int warnings

Explicitly truncate file names to UINT16_MAX

Before, they got implicitly truncated, meaning a UINT16_MAX + 1
file name, went to 0 file name (because of modulo 65536)

3 years agoftp: fix int warnings
Philippe Antoine [Mon, 6 Dec 2021 08:11:09 +0000 (09:11 +0100)] 
ftp: fix int warnings

Explicitly truncate a file name if it is longer
than UINT16_MAX

3 years agolog: Coverity REVERSE_INULL warnings
Jeff Lucovsky [Tue, 21 Sep 2021 13:52:11 +0000 (09:52 -0400)] 
log: Coverity REVERSE_INULL warnings

This commit addresses Coverity reported "REVERSE_INULL" warnings.

Issue: 4699

3 years agodoc: fix typo lenght/length
Philippe Antoine [Thu, 6 Jan 2022 13:07:21 +0000 (14:07 +0100)] 
doc: fix typo lenght/length

3 years agonfs4_records: add unittests for nom7 parsers
Sam Muhammed [Fri, 7 Jan 2022 17:27:06 +0000 (19:27 +0200)] 
nfs4_records: add unittests for nom7 parsers

Task #4866

3 years agonfs4_records: add missing field to res_sequence_ok()
Sam Muhammed [Mon, 10 Jan 2022 23:52:34 +0000 (01:52 +0200)] 
nfs4_records: add missing field to res_sequence_ok()

Missing _seqid in sequence op struct left a trailing four zeros
that are parsed by nfs4_res_compound_command() as a cmd
causing a Switch Error Code

3 years agonfs3-records: add unittests to nom7 parsers
Sam Muhammed [Sun, 2 Jan 2022 05:31:34 +0000 (07:31 +0200)] 
nfs3-records: add unittests to nom7 parsers

Task #4866

3 years agonfs3-records: add missing fields and update parsers
Sam Muhammed [Sun, 2 Jan 2022 04:57:39 +0000 (06:57 +0200)] 
nfs3-records: add missing fields and update parsers

Add missing fields to some record structures and
update their respective parsers

3 years agonfs2-records: add unittests for nom7 parsers
Sam Muhammed [Mon, 27 Dec 2021 12:19:27 +0000 (14:19 +0200)] 
nfs2-records: add unittests for nom7 parsers

Task #4866

3 years agosuricatasc: Handle incomplete/empty recv values
Jeff Lucovsky [Tue, 11 Jan 2022 19:16:24 +0000 (14:16 -0500)] 
suricatasc: Handle incomplete/empty recv values

Issue: 4947

Improve handling of values returned by recv. Sometimes, recv returns an
empty string if suricata terminates asynchronously.

3 years agonfs2: improve READ parsing 6764/head
Victor Julien [Tue, 11 Jan 2022 07:09:56 +0000 (08:09 +0100)] 
nfs2: improve READ parsing

Take fill_bytes into account.

3 years agorust/app-layer: expose AppLayerEvent derive macro
Jason Ish [Fri, 17 Dec 2021 22:33:48 +0000 (16:33 -0600)] 
rust/app-layer: expose AppLayerEvent derive macro

Export the AppLayerEvent derive macro so plugin (or library code) can
use it as expected, for example:

use suricata::applayer::AppLayerEvent;

enum MyEvent {
    EventOne,
    EventTwo,
}

3 years agorust/derive: make usable from a plugin or lib user
Jason Ish [Fri, 17 Dec 2021 22:32:05 +0000 (16:32 -0600)] 
rust/derive: make usable from a plugin or lib user

The macro was generating code that references names use the "crate"
prefix which will fail if the macro is used by a library user or plugin.
Dynamically check where we are running an use the correct import paths
as needed.

3 years agorust: rename to suricata (from suricata_rust)
Jason Ish [Fri, 17 Dec 2021 22:28:56 +0000 (16:28 -0600)] 
rust: rename to suricata (from suricata_rust)

Rename the Rust lib to simply "suricata" instead of "suricata_rust".
This allows Rust plugin/library code to use it under the name "suricata"
which is what should be expected.

The name was only "suricata_rust" to prevent on-disk conflict with the C
code, so just rename the file on disk, which doesn't affect how the code
is interacted with from an API layer.

3 years agorust: remove feature function-macro
Jason Ish [Fri, 17 Dec 2021 22:25:47 +0000 (16:25 -0600)] 
rust: remove feature function-macro

The function macro existed so it would only be enabled on Rust
versions that supported.  Now that our MSRV is 1.41, which is
greater than 1.38 we can assume we always have support for
this macro.

3 years agorust: bump MSRV to 1.41.1
Shivani Bhardwaj [Tue, 14 Dec 2021 15:44:30 +0000 (21:14 +0530)] 
rust: bump MSRV to 1.41.1

Ticket: #4902.
(cherry picked from commit 87f04475aaa75ee205b1b699e59fb2b5ba7ed59f)

3 years agorust/http2: use base64 crate for base64 decode
Jason Ish [Thu, 6 Jan 2022 17:28:40 +0000 (11:28 -0600)] 
rust/http2: use base64 crate for base64 decode

3 years agobase64: use the Rust base64 encode implementation
Jason Ish [Fri, 3 Sep 2021 21:04:58 +0000 (15:04 -0600)] 
base64: use the Rust base64 encode implementation

Replace our internal base64 implementation with a ffi wrapper
around the Rust implementation provided by an external crate.

3 years agoeve: use JsonBuilder for encoding base64
Jason Ish [Thu, 24 Jun 2021 16:21:52 +0000 (10:21 -0600)] 
eve: use JsonBuilder for encoding base64

Replaces all usages of Base64Encode just before writing to a
JsonBuilder with jb_set_base64 and jb_append_base64.

3 years agojsonbuilder: add methods to encode values as base64
Jason Ish [Thu, 24 Jun 2021 16:20:09 +0000 (10:20 -0600)] 
jsonbuilder: add methods to encode values as base64

Add new methods to set a value as a base64 encoded string of
a byte array. This uses the Rust base64 crate and encodes
directly into the JsonBuilder buffer with no intermediate
buffer required.

jb_set_base64: set a field on an object
jb_append_base64: append a value to an array

3 years agoapp-layer: use StreamSlice as input to parsers 6763/head
Victor Julien [Mon, 6 Dec 2021 07:31:25 +0000 (08:31 +0100)] 
app-layer: use StreamSlice as input to parsers

Remove input, input_len and flags in favor of stream slice.

3 years agoapp-layer: add StreamSlice to pass data to parsers
Victor Julien [Sun, 5 Dec 2021 10:16:06 +0000 (11:16 +0100)] 
app-layer: add StreamSlice to pass data to parsers

Since object to contain relevant pointer, length, offset, flags to make
it easy to pass these to the parsers.

3 years agodoc/yaml: Signal-termination option description 6744/head
Jeff Lucovsky [Thu, 17 Jun 2021 13:24:46 +0000 (09:24 -0400)] 
doc/yaml: Signal-termination option description

3 years agologging/diag: Enable stacktrace diagnostic if config'd
Jeff Lucovsky [Thu, 17 Jun 2021 13:07:29 +0000 (09:07 -0400)] 
logging/diag: Enable stacktrace diagnostic if config'd

This commit adds a signal handler for SIGSEGV when configured. The
signal handler emits a one line stack trace using SCLogError. The intent
is to provide diagnostic information in deployments where core files are
not possible.

The diagnostic message is from the offending thread and includes the
stack trace; each frame includes the symbol + offset.

3 years agologging: Stacktrace on signal term setting
Jeff Lucovsky [Thu, 17 Jun 2021 13:04:56 +0000 (09:04 -0400)] 
logging: Stacktrace on signal term setting

This commit adds a configuration setting to enable a stack trace message
if Suricata receives a signal that terminates execution, such as
SIGSEGV, SIGABRT.

3 years agoerror: Add error code for sig-related diagnostics
Jeff Lucovsky [Thu, 17 Jun 2021 12:54:30 +0000 (08:54 -0400)] 
error: Add error code for sig-related diagnostics

This commit adds an error code for the diagnostic code used for
diagnostic messages following unexpected termination due to signals..

3 years agoconfigure.ac: Support libunwind configuration
Jeff Lucovsky [Thu, 17 Jun 2021 12:52:17 +0000 (08:52 -0400)] 
configure.ac: Support libunwind configuration

This commit adds support for enabling libunwind -- a library that can be
used to display stack information.

Libunwind is enabled and used by Suricata if present during
configuration.  A diagnostic message is displayed if libunwind
cannot be found.

3 years agodoc: replace ohloh with openhub link
Juliana Fajardini [Wed, 29 Dec 2021 17:24:16 +0000 (17:24 +0000)] 
doc: replace ohloh with openhub link

3 years agouserguide: update references to Suricata website
Juliana Fajardini [Thu, 16 Dec 2021 12:07:44 +0000 (12:07 +0000)] 
userguide: update references to Suricata website

Many places were still referencing the old Suricata page.
Used git grep with replace to update them. Checked that new links work.
Left old references when they were only documentation examples (for
output or unittests).

Task#4915

3 years agouserguide: fix low-hanging typos Config page
Juliana Fajardini [Thu, 16 Dec 2021 12:07:16 +0000 (12:07 +0000)] 
userguide: fix low-hanging typos Config page

3 years agodetect: fix app-layer-protocol keyword for HTTP
Philippe Antoine [Wed, 22 Dec 2021 21:44:54 +0000 (22:44 +0100)] 
detect: fix app-layer-protocol keyword for HTTP

Ticket: 4920

Completes commit c8dbe24fb6202550bbca1fab452ddbe864b2c9e2
which introduced AppProtoEquals to have a generic
check for http in signature can mean http1 or http2 in
traffic.

This commit missed this case, as I only looked for
git grep "alproto ==" and here we deal with
alproto_tc and alproto_ts, but not alproto by itself.

3 years agodoc/eve-json-format/dns: Describing Z-bit
Odin Jenseg [Tue, 8 Jun 2021 19:56:41 +0000 (21:56 +0200)] 
doc/eve-json-format/dns: Describing Z-bit

3 years agodns: add dns flag to dns request logging
Jason Ish [Tue, 21 Dec 2021 22:49:21 +0000 (16:49 -0600)] 
dns: add dns flag to dns request logging

Ticket #4515

3 years agodns: Logging of Z-bit
Odin Jenseg [Tue, 8 Jun 2021 19:55:36 +0000 (21:55 +0200)] 
dns: Logging of Z-bit

[Edit by Jason Ish: fix flag bit value]

Ticket #4515

3 years agodns: create transaction even if z-bit was set
Jason Ish [Tue, 21 Dec 2021 22:34:05 +0000 (16:34 -0600)] 
dns: create transaction even if z-bit was set

It appears that DNS servers will still process a DNS request even if the
z-bit is set, our parser will fail the transaction. So create the
transaction, but still set the event.

Ticket #4924

3 years agodpdk: add DPDK test support in Github CI 6708/head
Lukas Sismis [Fri, 20 Aug 2021 19:27:51 +0000 (21:27 +0200)] 
dpdk: add DPDK test support in Github CI

Add DPDK dependency to the build process in distributions with
a native support of DPDK in their default package managers.

3 years agodpdk: add documentation for the DPDK runmode
Lukas Sismis [Mon, 24 May 2021 18:11:24 +0000 (20:11 +0200)] 
dpdk: add documentation for the DPDK runmode

Briefly present the DPDK runmode through configuration file.

3 years agodpdk/ice: setup RSS for Intel ICE PMD
Lukas Sismis [Mon, 29 Nov 2021 21:17:58 +0000 (22:17 +0100)] 
dpdk/ice: setup RSS for Intel ICE PMD

Set RSS hash function according to Intel ICE PMD available hash functions

Set hash functions according to the support by the ICE PMD, so that no warning
regarding RSS setting is issued.

3 years agodpdk/ixgbe: setup RSS for Intel IXGBE PMD
Lukas Sismis [Mon, 22 Nov 2021 15:43:29 +0000 (16:43 +0100)] 
dpdk/ixgbe: setup RSS for Intel IXGBE PMD

Set RSS hash function according to Intel IXGBE PMD available hash functions.

During configuration, a warning appeared stating that RSS hash function
has been changed from one value to the other. This has meant that
the supported hash functions did not cover all required hash functions
by the configuration. This commit solves the warning.

3 years agodpdk/i40e: support RSS on Intel i40e PMD driver
Lukas Sismis [Sun, 21 Nov 2021 22:22:24 +0000 (23:22 +0100)] 
dpdk/i40e: support RSS on Intel i40e PMD driver

Due to peculiar behavior of i40e PMD driver, the RSS is required to be set
via rte_flow rules or a hash filter as compared to other NICs where RSS is
configured through port configuration structure.
RTE_FLOW rules are created on 5-tuples (as opposed to 3-tuple configured
on the other NICs). Fragmented traffic have been tested with this setup
and it has been proven that fragmented packets of the same flow are
received on the same queue. At the same time, setting 3-tuple on rte_flow
rules have not yield in the expected results.

Notes from the experiments:

- Configuration of 5-tuple (as is in the commit):
    fragmented and nonfragmented packets are received by the same workers
    even when I applied seed to alter them via tcpreplay-edit (option --seed)

- Setting only ETH_RSS_FRAG_IPV4 and ETH_RSS_IPV4 (i.e. setting 3-tuple):
    when setting ETH_RSS_IPV4, the PMD driver says that pctype is not
    supported (generally this means that the "type" of traffic is not
    a valid configuration for the i40e)

- Setting only ETH_RSS_FRAG_IPV4 and ETH_RSS_NONFRAG_IPV4_OTHER:
    this doesn't work well, packets of the same flow are received on
    the different workers (my explanation is that the fragmented packets are
    matched with ETH_RSS_FRAG_IPV4 but the other UDP packets are not matched
    with ETH_RSS_NONFRAG_IPV4_OTHER rte_flow rule (they would be matched with
    ETH_RSS_NONFRAG_IPV4_UDP).

3 years agodpdk: add RSS flags that are set in the NIC
Victor Julien [Sun, 14 Nov 2021 18:47:24 +0000 (19:47 +0100)] 
dpdk: add RSS flags that are set in the NIC

3 years agodpdk: add specific error counters
Victor Julien [Sun, 14 Nov 2021 14:49:43 +0000 (15:49 +0100)] 
dpdk: add specific error counters

3 years agodpdk: initial support with workers runmode
Lukas Sismis [Sun, 21 Nov 2021 22:18:36 +0000 (23:18 +0100)] 
dpdk: initial support with workers runmode

Register a new runmode - DPDK. This enables a new flag on Suricata start
(--dpdk).

With the flag given, DPDK runmode is enabled.

Runmode loads the configuration and then initializes EAL.

If successful, it configures the physical NICs according to the configuration
file. After that, worker threads are initialized and then are in continuous
receive loop.

3 years agodpdk: edit configure.ac to include DPDK compilation option
Lukas Sismis [Sun, 29 Aug 2021 21:43:14 +0000 (23:43 +0200)] 
dpdk: edit configure.ac to include DPDK compilation option

Add a build flag --enable-dpdk to support DPDK parts in the source code.

3 years agonetmap: allow specifying a library directory 6707/head
Jeff Lucovsky [Sat, 11 Dec 2021 13:45:57 +0000 (08:45 -0500)] 
netmap: allow specifying a library directory

Ticket: #4482