|
suricata
|
Streaming Buffer API. More...
#include "suricata-common.h"#include "util-streaming-buffer.h"#include "util-unittest.h"#include "util-print.h"#include "util-validate.h"#include "util-debug.h"#include "util-error.h"#include "app-layer-htp-mem.h"#include "conf-yaml-loader.h"#include "app-layer-htp.h"
Go to the source code of this file.
Macros | |
| #define | DUMP_REGIONS 0 |
| #define | CALLOC(cfg, n, s) (cfg)->Calloc ? (cfg)->Calloc((n), (s)) : CallocFunc((n), (s)) |
| #define | REALLOC(cfg, ptr, orig_s, s) (cfg)->Realloc ? (cfg)->Realloc((ptr), (orig_s), (s)) : ReallocFunc((ptr), (s)) |
| #define | FREE(cfg, ptr, s) (cfg)->Free ? (cfg)->Free((ptr), (s)) : SCFree((ptr)) |
Functions | |
| RB_GENERATE (SBB, StreamingBufferBlock, rb, SBBCompare) | |
| int | SBBCompare (struct StreamingBufferBlock *a, struct StreamingBufferBlock *b) |
| StreamingBufferBlock * | SBB_RB_FIND_INCLUSIVE (struct SBB *head, StreamingBufferBlock *elm) |
| StreamingBuffer * | StreamingBufferInit (const StreamingBufferConfig *cfg) |
| void | StreamingBufferClear (StreamingBuffer *sb, const StreamingBufferConfig *cfg) |
| void | StreamingBufferFree (StreamingBuffer *sb, const StreamingBufferConfig *cfg) |
| void | StreamingBufferSlideToOffset (StreamingBuffer *sb, const StreamingBufferConfig *cfg, uint64_t offset) |
| slide to absolute offset | |
| int | StreamingBufferAppend (StreamingBuffer *sb, const StreamingBufferConfig *cfg, StreamingBufferSegment *seg, const uint8_t *data, uint32_t data_len) |
| int | StreamingBufferAppendNoTrack (StreamingBuffer *sb, const StreamingBufferConfig *cfg, const uint8_t *data, uint32_t data_len) |
| add data w/o tracking a segment | |
| int | StreamingBufferInsertAt (StreamingBuffer *sb, const StreamingBufferConfig *cfg, StreamingBufferSegment *seg, const uint8_t *data, uint32_t data_len, uint64_t offset) |
| int | StreamingBufferSegmentIsBeforeWindow (const StreamingBuffer *sb, const StreamingBufferSegment *seg) |
| void | StreamingBufferSBBGetData (const StreamingBuffer *sb, const StreamingBufferBlock *sbb, const uint8_t **data, uint32_t *data_len) |
| get the data for one SBB | |
| void | StreamingBufferSBBGetDataAtOffset (const StreamingBuffer *sb, const StreamingBufferBlock *sbb, const uint8_t **data, uint32_t *data_len, uint64_t offset) |
| get the data for one SBB | |
| void | StreamingBufferSegmentGetData (const StreamingBuffer *sb, const StreamingBufferSegment *seg, const uint8_t **data, uint32_t *data_len) |
| int | StreamingBufferSegmentCompareRawData (const StreamingBuffer *sb, const StreamingBufferSegment *seg, const uint8_t *rawdata, uint32_t rawdata_len) |
| int | StreamingBufferGetData (const StreamingBuffer *sb, const uint8_t **data, uint32_t *data_len, uint64_t *stream_offset) |
| int | StreamingBufferGetDataAtOffset (const StreamingBuffer *sb, const uint8_t **data, uint32_t *data_len, uint64_t offset) |
| int | StreamingBufferCompareRawData (const StreamingBuffer *sb, const uint8_t *rawdata, uint32_t rawdata_len) |
| void | StreamingBufferRegisterTests (void) |
Streaming Buffer API.
Definition in file util-streaming-buffer.c.
| #define CALLOC | ( | cfg, | |
| n, | |||
| s | |||
| ) | (cfg)->Calloc ? (cfg)->Calloc((n), (s)) : CallocFunc((n), (s)) |
Definition at line 63 of file util-streaming-buffer.c.
| #define DUMP_REGIONS 0 |
Definition at line 32 of file util-streaming-buffer.c.
| #define FREE | ( | cfg, | |
| ptr, | |||
| s | |||
| ) | (cfg)->Free ? (cfg)->Free((ptr), (s)) : SCFree((ptr)) |
Definition at line 66 of file util-streaming-buffer.c.
| #define REALLOC | ( | cfg, | |
| ptr, | |||
| orig_s, | |||
| s | |||
| ) | (cfg)->Realloc ? (cfg)->Realloc((ptr), (orig_s), (s)) : ReallocFunc((ptr), (s)) |
Definition at line 64 of file util-streaming-buffer.c.
| RB_GENERATE | ( | SBB | , |
| StreamingBufferBlock | , | ||
| rb | , | ||
| SBBCompare | |||
| ) |
| StreamingBufferBlock * SBB_RB_FIND_INCLUSIVE | ( | struct SBB * | head, |
| StreamingBufferBlock * | elm | ||
| ) |
Definition at line 104 of file util-streaming-buffer.c.
References head, StreamingBufferBlock::len, StreamingBufferBlock::offset, RB_LEFT, RB_RIGHT, RB_ROOT, and SCLogDebug.
| int SBBCompare | ( | struct StreamingBufferBlock * | a, |
| struct StreamingBufferBlock * | b | ||
| ) |
Definition at line 73 of file util-streaming-buffer.c.
References StreamingBufferBlock::len, StreamingBufferBlock::offset, SCLogDebug, and SCReturnInt.
| int StreamingBufferAppend | ( | StreamingBuffer * | sb, |
| const StreamingBufferConfig * | cfg, | ||
| StreamingBufferSegment * | seg, | ||
| const uint8_t * | data, | ||
| uint32_t | data_len | ||
| ) |
Definition at line 1100 of file util-streaming-buffer.c.
References BIT_U32, StreamingBufferRegion_::buf, StreamingBufferRegion_::buf_offset, StreamingBufferRegion_::buf_size, DEBUG_VALIDATE_BUG_ON, RB_EMPTY, StreamingBuffer_::region, StreamingBuffer_::sbb_tree, SC_OK, and StreamingBufferRegion_::stream_offset.
Referenced by HtpBodyAppendChunk(), and UTHAddStreamToFlow().

| int StreamingBufferAppendNoTrack | ( | StreamingBuffer * | sb, |
| const StreamingBufferConfig * | cfg, | ||
| const uint8_t * | data, | ||
| uint32_t | data_len | ||
| ) |
add data w/o tracking a segment
Definition at line 1144 of file util-streaming-buffer.c.
References BIT_U32, StreamingBufferRegion_::buf, StreamingBufferRegion_::buf_offset, StreamingBufferRegion_::buf_size, DEBUG_VALIDATE_BUG_ON, RB_EMPTY, StreamingBuffer_::region, StreamingBuffer_::sbb_tree, and SC_OK.
| void StreamingBufferClear | ( | StreamingBuffer * | sb, |
| const StreamingBufferConfig * | cfg | ||
| ) |
Definition at line 271 of file util-streaming-buffer.c.
References StreamingBufferRegion_::buf, StreamingBufferRegion_::buf_size, FREE, StreamingBuffer_::max_regions, next, StreamingBufferRegion_::next, StreamingBuffer_::region, StreamingBuffer_::regions, and SCLogDebug.
Referenced by StreamingBufferFree(), StreamTcpPruneSession(), and StreamTcpStreamCleanup().

| int StreamingBufferCompareRawData | ( | const StreamingBuffer * | sb, |
| const uint8_t * | rawdata, | ||
| uint32_t | rawdata_len | ||
| ) |
| 1 | data is the same |
| 0 | data is different |
Definition at line 1853 of file util-streaming-buffer.c.
References offset, PrintRawDataFp(), SCLogDebug, and StreamingBufferGetData().

| void StreamingBufferFree | ( | StreamingBuffer * | sb, |
| const StreamingBufferConfig * | cfg | ||
| ) |
Definition at line 294 of file util-streaming-buffer.c.
References FREE, and StreamingBufferClear().
Referenced by HtpBodyFree().


| int StreamingBufferGetData | ( | const StreamingBuffer * | sb, |
| const uint8_t ** | data, | ||
| uint32_t * | data_len, | ||
| uint64_t * | stream_offset | ||
| ) |
Definition at line 1813 of file util-streaming-buffer.c.
References StreamingBufferRegion_::buf, StreamingBufferRegion_::buf_offset, StreamingBuffer_::region, stream_offset, and StreamingBufferRegion_::stream_offset.
Referenced by StreamingBufferCompareRawData().

| int StreamingBufferGetDataAtOffset | ( | const StreamingBuffer * | sb, |
| const uint8_t ** | data, | ||
| uint32_t * | data_len, | ||
| uint64_t | offset | ||
| ) |
Definition at line 1830 of file util-streaming-buffer.c.
References StreamingBufferRegion_::buf, StreamingBufferRegion_::buf_offset, DEBUG_VALIDATE_BUG_ON, offset, and StreamingBufferRegion_::stream_offset.
Referenced by OutputFiledataLogFfc().

| StreamingBuffer * StreamingBufferInit | ( | const StreamingBufferConfig * | cfg | ) |
Definition at line 248 of file util-streaming-buffer.c.
References StreamingBufferConfig_::buf_size, StreamingBufferRegion_::buf_size, CALLOC, FREE, StreamingBuffer_::max_regions, StreamingBuffer_::region, StreamingBuffer_::regions, sc_errno, and SC_OK.
Referenced by HtpBodyAppendChunk().

| int StreamingBufferInsertAt | ( | StreamingBuffer * | sb, |
| const StreamingBufferConfig * | cfg, | ||
| StreamingBufferSegment * | seg, | ||
| const uint8_t * | data, | ||
| uint32_t | data_len, | ||
| uint64_t | offset | ||
| ) |
| offset | offset relative to StreamingBuffer::stream_offset |
Definition at line 1532 of file util-streaming-buffer.c.
References BIT_U32, StreamingBufferRegion_::buf, StreamingBufferRegion_::buf_offset, StreamingBufferRegion_::buf_size, DEBUG_VALIDATE_BUG_ON, StreamingBuffer_::head, MAX, offset, RB_EMPTY, StreamingBuffer_::region, StreamingBuffer_::sbb_tree, SC_EINVAL, SC_ELIMIT, sc_errno, SC_OK, SCLogDebug, and StreamingBufferRegion_::stream_offset.
| void StreamingBufferRegisterTests | ( | void | ) |
Definition at line 2440 of file util-streaming-buffer.c.
References UtRegisterTest().

| void StreamingBufferSBBGetData | ( | const StreamingBuffer * | sb, |
| const StreamingBufferBlock * | sbb, | ||
| const uint8_t ** | data, | ||
| uint32_t * | data_len | ||
| ) |
get the data for one SBB
Definition at line 1684 of file util-streaming-buffer.c.
References StreamingBufferRegion_::buf, StreamingBufferRegion_::buf_offset, StreamingBufferRegion_::buf_size, DEBUG_VALIDATE_BUG_ON, len, StreamingBufferBlock::len, offset, StreamingBufferBlock::offset, SCLogDebug, and StreamingBufferRegion_::stream_offset.
Referenced by UTHCheckDataAtPosition().

| void StreamingBufferSBBGetDataAtOffset | ( | const StreamingBuffer * | sb, |
| const StreamingBufferBlock * | sbb, | ||
| const uint8_t ** | data, | ||
| uint32_t * | data_len, | ||
| uint64_t | offset | ||
| ) |
get the data for one SBB
Definition at line 1720 of file util-streaming-buffer.c.
References StreamingBufferRegion_::buf, StreamingBufferRegion_::buf_size, DEBUG_VALIDATE_BUG_ON, StreamingBufferBlock::len, offset, StreamingBufferBlock::offset, and StreamingBufferRegion_::stream_offset.
| int StreamingBufferSegmentCompareRawData | ( | const StreamingBuffer * | sb, |
| const StreamingBufferSegment * | seg, | ||
| const uint8_t * | rawdata, | ||
| uint32_t | rawdata_len | ||
| ) |
| 1 | data is the same |
| 0 | data is different |
Definition at line 1797 of file util-streaming-buffer.c.
References StreamingBufferSegmentGetData().

| void StreamingBufferSegmentGetData | ( | const StreamingBuffer * | sb, |
| const StreamingBufferSegment * | seg, | ||
| const uint8_t ** | data, | ||
| uint32_t * | data_len | ||
| ) |
Definition at line 1763 of file util-streaming-buffer.c.
References StreamingBufferRegion_::buf, StreamingBufferRegion_::buf_size, offset, SCLogDebug, segment_len, and StreamingBufferRegion_::stream_offset.
Referenced by StreamingBufferSegmentCompareRawData(), StreamTcpInlineSegmentCompare(), StreamTcpInlineSegmentReplacePacket(), StreamTcpSegmentForEach(), and StreamTcpSegmentForSession().

| int StreamingBufferSegmentIsBeforeWindow | ( | const StreamingBuffer * | sb, |
| const StreamingBufferSegment * | seg | ||
| ) |
Definition at line 1652 of file util-streaming-buffer.c.
References StreamingBuffer_::region, and StreamingBufferRegion_::stream_offset.
Referenced by HtpBodyPrune().

| void StreamingBufferSlideToOffset | ( | StreamingBuffer * | sb, |
| const StreamingBufferConfig * | cfg, | ||
| uint64_t | offset | ||
| ) |
slide to absolute offset
Definition at line 1022 of file util-streaming-buffer.c.
References StreamingBufferRegion_::buf, StreamingBufferRegion_::buf_offset, StreamingBufferRegion_::buf_size, DEBUG_VALIDATE_BUG_ON, StreamingBuffer_::head, StreamingBufferBlock::len, StreamingBufferRegion_::next, offset, StreamingBufferBlock::offset, StreamingBuffer_::region, SCLogDebug, and StreamingBufferRegion_::stream_offset.
Referenced by HtpBodyPrune(), and StreamTcpPruneSession().
