suricata
|
#include "tree.h"
Go to the source code of this file.
Data Structures | |
struct | StreamingBufferConfig_ |
struct | StreamingBufferBlock |
block of continues data More... | |
struct | StreamingBuffer_ |
struct | StreamingBufferSegment_ |
Macros | |
#define | STREAMING_BUFFER_NOFLAGS 0 |
#define | STREAMING_BUFFER_AUTOSLIDE (1<<0) |
#define | STREAMING_BUFFER_CONFIG_INITIALIZER { 0, 0, 0, NULL, NULL, NULL, NULL, } |
#define | STREAMING_BUFFER_INITIALIZER(cfg) { (cfg), 0, NULL, 0, 0, { NULL }, NULL, }; |
Typedefs | |
typedef struct StreamingBufferConfig_ | StreamingBufferConfig |
typedef struct StreamingBuffer_ | StreamingBuffer |
Functions | |
struct StreamingBufferBlock | __attribute__ ((__packed__)) StreamingBufferBlock |
block of continues data More... | |
RB_ENTRY (StreamingBufferBlock) rb | |
int | SBBCompare (struct StreamingBufferBlock *a, struct StreamingBufferBlock *b) |
RB_HEAD (SBB, StreamingBufferBlock) | |
RB_PROTOTYPE (SBB, StreamingBufferBlock, rb, SBBCompare) | |
StreamingBufferBlock * | SBB_RB_FIND_INCLUSIVE (struct SBB *head, StreamingBufferBlock *elm) |
StreamingBuffer * | StreamingBufferInit (const StreamingBufferConfig *cfg) |
void | StreamingBufferClear (StreamingBuffer *sb) |
void | StreamingBufferFree (StreamingBuffer *sb) |
void | StreamingBufferSlide (StreamingBuffer *sb, uint32_t slide) |
void | StreamingBufferSlideToOffset (StreamingBuffer *sb, uint64_t offset) |
slide to absolute offset More... | |
StreamingBufferSegment * | StreamingBufferAppendRaw (StreamingBuffer *sb, const uint8_t *data, uint32_t data_len) __attribute__((warn_unused_result)) |
int | StreamingBufferAppend (StreamingBuffer *sb, StreamingBufferSegment *seg, const uint8_t *data, uint32_t data_len) __attribute__((warn_unused_result)) |
int | StreamingBufferAppendNoTrack (StreamingBuffer *sb, const uint8_t *data, uint32_t data_len) __attribute__((warn_unused_result)) |
add data w/o tracking a segment More... | |
int | StreamingBufferInsertAt (StreamingBuffer *sb, StreamingBufferSegment *seg, const uint8_t *data, uint32_t data_len, uint64_t offset) __attribute__((warn_unused_result)) |
void | StreamingBufferSegmentGetData (const StreamingBuffer *sb, const StreamingBufferSegment *seg, const uint8_t **data, uint32_t *data_len) |
void | StreamingBufferSBBGetData (const StreamingBuffer *sb, const StreamingBufferBlock *sbb, const uint8_t **data, uint32_t *data_len) |
get the data for one SBB More... | |
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 More... | |
int | StreamingBufferSegmentCompareRawData (const StreamingBuffer *sb, const StreamingBufferSegment *seg, const uint8_t *rawdata, uint32_t rawdata_len) |
int | StreamingBufferCompareRawData (const StreamingBuffer *sb, 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 | StreamingBufferSegmentIsBeforeWindow (const StreamingBuffer *sb, const StreamingBufferSegment *seg) |
void | StreamingBufferRegisterTests (void) |
Variables | |
uint64_t | offset |
uint32_t | len |
uint32_t | segment_len |
uint64_t | stream_offset |
#define STREAMING_BUFFER_AUTOSLIDE (1<<0) |
Definition at line 65 of file util-streaming-buffer.h.
Referenced by StreamingBufferAppend(), StreamingBufferAppendNoTrack(), StreamingBufferAppendRaw(), StreamingBufferCompareRawData(), and StreamingBufferInsertAt().
#define STREAMING_BUFFER_CONFIG_INITIALIZER { 0, 0, 0, NULL, NULL, NULL, NULL, } |
Definition at line 77 of file util-streaming-buffer.h.
#define STREAMING_BUFFER_INITIALIZER | ( | cfg | ) | { (cfg), 0, NULL, 0, 0, { NULL }, NULL, }; |
Definition at line 111 of file util-streaming-buffer.h.
Referenced by StreamingBufferCompareRawData(), StreamTcpFreeConfig(), StreamTcpUTSetupSession(), StreamTcpUTSetupStream(), and UTHAddSessionToFlow().
#define STREAMING_BUFFER_NOFLAGS 0 |
Definition at line 64 of file util-streaming-buffer.h.
Referenced by StreamTcpAppLayerIsDisabled().
typedef struct StreamingBuffer_ StreamingBuffer |
typedef struct StreamingBufferConfig_ StreamingBufferConfig |
__attribute__::RB_ENTRY | ( | StreamingBufferBlock | ) |
RB_HEAD | ( | SBB | , |
StreamingBufferBlock | |||
) |
RB_PROTOTYPE | ( | SBB | , |
StreamingBufferBlock | , | ||
rb | , | ||
SBBCompare | |||
) |
StreamingBufferBlock* SBB_RB_FIND_INCLUSIVE | ( | struct SBB * | head, |
StreamingBufferBlock * | elm | ||
) |
Definition at line 79 of file util-streaming-buffer.c.
References StreamingBuffer_::buf, StreamingBufferConfig_::buf_size, StreamingBuffer_::buf_size, CALLOC, StreamingBuffer_::cfg, StreamingBufferBlock::len, StreamingBufferBlock::offset, RB_LEFT, RB_RIGHT, RB_ROOT, res, and SCLogDebug.
Referenced by StreamReassembleRawUpdateProgress(), and StreamTcpReassembleAppLayer().
int SBBCompare | ( | struct StreamingBufferBlock * | a, |
struct StreamingBufferBlock * | b | ||
) |
Definition at line 47 of file util-streaming-buffer.c.
References StreamingBufferBlock::len, StreamingBufferBlock::offset, offset, SCLogDebug, and SCReturnInt.
int StreamingBufferAppend | ( | StreamingBuffer * | sb, |
StreamingBufferSegment * | seg, | ||
const uint8_t * | data, | ||
uint32_t | data_len | ||
) |
Definition at line 576 of file util-streaming-buffer.c.
References StreamingBuffer_::buf, StreamingBuffer_::buf_offset, StreamingBuffer_::buf_size, BUG_ON, StreamingBuffer_::cfg, DATA_FITS, StreamingBufferConfig_::flags, RB_EMPTY, StreamingBuffer_::sbb_tree, StreamingBuffer_::stream_offset, and STREAMING_BUFFER_AUTOSLIDE.
Referenced by HtpBodyAppendChunk(), StreamingBufferCompareRawData(), and UTHAddStreamToFlow().
int StreamingBufferAppendNoTrack | ( | StreamingBuffer * | sb, |
const uint8_t * | data, | ||
uint32_t | data_len | ||
) |
add data w/o tracking a segment
Definition at line 619 of file util-streaming-buffer.c.
References StreamingBuffer_::buf, StreamingBuffer_::buf_offset, StreamingBuffer_::buf_size, StreamingBuffer_::cfg, DATA_FITS, StreamingBufferConfig_::flags, RB_EMPTY, StreamingBuffer_::sbb_tree, and STREAMING_BUFFER_AUTOSLIDE.
Referenced by FileContainerSetTx().
StreamingBufferSegment* StreamingBufferAppendRaw | ( | StreamingBuffer * | sb, |
const uint8_t * | data, | ||
uint32_t | data_len | ||
) |
Definition at line 535 of file util-streaming-buffer.c.
References StreamingBuffer_::buf, StreamingBuffer_::buf_offset, StreamingBuffer_::buf_size, CALLOC, StreamingBuffer_::cfg, DATA_FITS, StreamingBufferConfig_::flags, RB_EMPTY, StreamingBuffer_::sbb_tree, StreamingBuffer_::stream_offset, and STREAMING_BUFFER_AUTOSLIDE.
Referenced by StreamingBufferCompareRawData().
void StreamingBufferClear | ( | StreamingBuffer * | sb | ) |
Definition at line 132 of file util-streaming-buffer.c.
References StreamingBuffer_::buf, StreamingBuffer_::buf_size, StreamingBuffer_::cfg, FREE, and SCLogDebug.
Referenced by StreamingBufferCompareRawData(), 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 889 of file util-streaming-buffer.c.
References StreamingBuffer_::buf, StreamingBuffer_::buf_offset, StreamingBuffer_::buf_size, FAIL_IF, FAIL_IF_NOT, FAIL_IF_NULL, StreamingBuffer_::head, StreamingBufferBlock::len, StreamingBufferBlock::offset, offset, PASS, PrintRawDataFp(), RB_EMPTY, RB_MIN, StreamingBuffer_::sbb_tree, SCFree, SCLogDebug, StreamingBuffer_::stream_offset, STREAMING_BUFFER_AUTOSLIDE, STREAMING_BUFFER_INITIALIZER, StreamingBufferAppend(), StreamingBufferAppendRaw(), StreamingBufferClear(), StreamingBufferFree(), StreamingBufferGetData(), StreamingBufferInit(), StreamingBufferInsertAt(), StreamingBufferSegmentCompareRawData(), StreamingBufferSegmentGetData(), StreamingBufferSegmentIsBeforeWindow(), and StreamingBufferSlide().
Referenced by HTPFileClose(), SMTPParserCleanup(), and StreamTcpCheckStreamContents().
void StreamingBufferFree | ( | StreamingBuffer * | sb | ) |
Definition at line 145 of file util-streaming-buffer.c.
References __attribute__, StreamingBuffer_::buf, StreamingBuffer_::buf_offset, StreamingBufferConfig_::buf_size, StreamingBuffer_::buf_size, StreamingBufferConfig_::buf_slide, BUG_ON, CALLOC, StreamingBuffer_::cfg, DEBUG_VALIDATE_BUG_ON, FREE, StreamingBuffer_::head, StreamingBufferBlock::len, len, next, StreamingBufferBlock::offset, offset, RB_EMPTY, RB_FOREACH, RB_FOREACH_FROM, RB_FOREACH_REVERSE_FROM, RB_FOREACH_SAFE, REALLOC, res, StreamingBuffer_::sbb_tree, SCLogDebug, StreamingBuffer_::stream_offset, and StreamingBufferClear().
Referenced by FileContainerFree(), HtpBodyFree(), and StreamingBufferCompareRawData().
int StreamingBufferGetData | ( | const StreamingBuffer * | sb, |
const uint8_t ** | data, | ||
uint32_t * | data_len, | ||
uint64_t * | stream_offset | ||
) |
Definition at line 849 of file util-streaming-buffer.c.
References StreamingBuffer_::buf, StreamingBuffer_::buf_offset, and StreamingBuffer_::stream_offset.
Referenced by DetectFilemagicRegister(), JsonHttpLogJSONBodyPrintable(), StreamingBufferCompareRawData(), StreamReassembleRawUpdateProgress(), StreamTcpReassembleAppLayer(), and TcpSegmentCompare().
int StreamingBufferGetDataAtOffset | ( | const StreamingBuffer * | sb, |
const uint8_t ** | data, | ||
uint32_t * | data_len, | ||
uint64_t | offset | ||
) |
Definition at line 866 of file util-streaming-buffer.c.
References StreamingBuffer_::buf, StreamingBuffer_::buf_offset, and StreamingBuffer_::stream_offset.
Referenced by DetectHttpClientBodyRegister(), OutputRegisterFiledataLogger(), StreamNeedsReassembly(), and StreamTcpReassembleAppLayer().
StreamingBuffer* StreamingBufferInit | ( | const StreamingBufferConfig * | cfg | ) |
Definition at line 112 of file util-streaming-buffer.c.
References StreamingBufferConfig_::buf_size, StreamingBuffer_::buf_size, CALLOC, StreamingBuffer_::cfg, and FREE.
Referenced by FileSetRange(), HtpBodyAppendChunk(), and StreamingBufferCompareRawData().
int StreamingBufferInsertAt | ( | StreamingBuffer * | sb, |
StreamingBufferSegment * | seg, | ||
const uint8_t * | data, | ||
uint32_t | data_len, | ||
uint64_t | offset | ||
) |
offset | offset relative to StreamingBuffer::stream_offset |
Definition at line 661 of file util-streaming-buffer.c.
References StreamingBuffer_::buf, StreamingBuffer_::buf_offset, BUG_ON, StreamingBuffer_::cfg, DATA_FITS_AT_OFFSET, StreamingBufferConfig_::flags, offset, RB_EMPTY, StreamingBuffer_::sbb_tree, SCLogDebug, stream_offset, StreamingBuffer_::stream_offset, and STREAMING_BUFFER_AUTOSLIDE.
Referenced by StreamingBufferCompareRawData(), and TcpSegmentCompare().
void StreamingBufferRegisterTests | ( | void | ) |
Definition at line 1477 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 743 of file util-streaming-buffer.c.
References StreamingBuffer_::buf, StreamingBuffer_::buf_offset, StreamingBufferBlock::len, len, StreamingBufferBlock::offset, offset, and StreamingBuffer_::stream_offset.
Referenced by StreamNeedsReassembly(), StreamReassembleRawUpdateProgress(), and StreamTcpReassembleAppLayer().
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 769 of file util-streaming-buffer.c.
References StreamingBuffer_::buf, StreamingBuffer_::buf_size, BUG_ON, StreamingBufferBlock::len, StreamingBufferBlock::offset, and StreamingBuffer_::stream_offset.
Referenced by StreamNeedsReassembly().
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 833 of file util-streaming-buffer.c.
References StreamingBufferSegmentGetData().
Referenced by DetectPcrePayloadMatch(), and StreamingBufferCompareRawData().
void StreamingBufferSegmentGetData | ( | const StreamingBuffer * | sb, |
const StreamingBufferSegment * | seg, | ||
const uint8_t ** | data, | ||
uint32_t * | data_len | ||
) |
Definition at line 802 of file util-streaming-buffer.c.
References StreamingBuffer_::buf, StreamingBuffer_::buf_size, likely, offset, segment_len, and StreamingBuffer_::stream_offset.
Referenced by HtpBodyPrint(), StreamingBufferCompareRawData(), StreamingBufferSegmentCompareRawData(), StreamTcpInlineSegmentCompare(), StreamTcpInlineSegmentReplacePacket(), StreamTcpSegmentForEach(), and TcpSegmentCompare().
int StreamingBufferSegmentIsBeforeWindow | ( | const StreamingBuffer * | sb, |
const StreamingBufferSegment * | seg | ||
) |
Definition at line 731 of file util-streaming-buffer.c.
References StreamingBuffer_::stream_offset.
Referenced by HtpBodyPrune(), StreamingBufferCompareRawData(), and StreamTcpReassembleInsertSegment().
void StreamingBufferSlide | ( | StreamingBuffer * | sb, |
uint32_t | slide | ||
) |
Definition at line 522 of file util-streaming-buffer.c.
References StreamingBuffer_::buf, StreamingBuffer_::buf_offset, SCLogDebug, and StreamingBuffer_::stream_offset.
Referenced by StreamingBufferCompareRawData().
void StreamingBufferSlideToOffset | ( | StreamingBuffer * | sb, |
uint64_t | offset | ||
) |
slide to absolute offset
Definition at line 507 of file util-streaming-buffer.c.
References StreamingBuffer_::buf, StreamingBuffer_::buf_offset, SCLogDebug, stream_offset, and StreamingBuffer_::stream_offset.
Referenced by FileTrackedSize(), HtpBodyPrune(), and StreamTcpPruneSession().
uint32_t len |
Definition at line 1480 of file util-streaming-buffer.h.
uint64_t offset |
Definition at line 1478 of file util-streaming-buffer.h.
Referenced by AlertJsonHeader(), Asn1DerGet(), DecodeCIPPDU(), DecodeCIPRequestMSPPDU(), DecodeCIPRequestPDU(), DecodeCIPResponseMSPPDU(), DecodeIPV6FragHeader(), DefragRbFragCompare(), DetectBase64DecodeDoMatch(), DetectByteExtractDoMatch(), DetectBytejumpDoMatch(), DetectBytetestDoMatch(), DetectContentPropagateLimits(), DetectEngineContentInspection(), DetectEngineInspectBufferGeneric(), DetectEngineInspectPktBufferGeneric(), DetectFastPatternRegister(), DetectFileextRegister(), DetectFilemagicRegister(), DetectFtpbounceRegister(), DetectHttpClientBodyRegister(), DetectIsdataatRegister(), DetectIsdataatSetup(), DetectLoadCompleteSigPath(), DetectLuaRegister(), DetectPcrePayloadMatch(), DNP3FreeObjectPointList(), FileSwfDecompression(), JsonAddStringN(), MimeDecAddEntity(), MpmAddPattern(), MpmAddPatternCI(), PrintRawJsonFp(), PrintRawLineHexBuf(), PrintRawUriFp(), ROHashInitFinalize(), ROHashLookup(), SBBCompare(), SCACSearch(), SCJsonString(), SigMatchFree(), StatsSetUI64(), StatsToJSON(), StreamingBufferCompareRawData(), StreamingBufferFree(), StreamingBufferInsertAt(), StreamingBufferSBBGetData(), StreamingBufferSegmentGetData(), StreamNeedsReassembly(), StreamTcpReassembleAppLayer(), StreamTcpReturnStreamSegments(), and TmModuleDecodeAFPRegister().
uint32_t segment_len |
Definition at line 94 of file util-streaming-buffer.h.
Referenced by StreamingBufferSegmentGetData().
uint64_t stream_offset |
Definition at line 95 of file util-streaming-buffer.h.
Referenced by StreamingBufferInsertAt(), StreamingBufferSlideToOffset(), and TcpSegmentCompare().