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"
Go to the source code of this file.
Macros | |
#define | MALLOC(cfg, s) (cfg)->Malloc ? (cfg)->Malloc((s)) : SCMalloc((s)) |
#define | CALLOC(cfg, n, s) (cfg)->Calloc ? (cfg)->Calloc((n), (s)) : SCCalloc((n), (s)) |
#define | REALLOC(cfg, ptr, orig_s, s) (cfg)->Realloc ? (cfg)->Realloc((ptr), (orig_s), (s)) : SCRealloc((ptr), (s)) |
#define | FREE(cfg, ptr, s) (cfg)->Free ? (cfg)->Free((ptr), (s)) : SCFree((ptr)) |
#define | DATA_FITS(sb, len) ((sb)->buf_offset + (len) <= (sb)->buf_size) |
#define | DATA_FITS_AT_OFFSET(sb, len, offset) ((offset) + (len) <= (sb)->buf_size) |
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) |
void | StreamingBufferFree (StreamingBuffer *sb) |
void | StreamingBufferSlideToOffset (StreamingBuffer *sb, uint64_t offset) |
slide to absolute offset More... | |
void | StreamingBufferSlide (StreamingBuffer *sb, uint32_t slide) |
StreamingBufferSegment * | StreamingBufferAppendRaw (StreamingBuffer *sb, const uint8_t *data, uint32_t data_len) |
int | StreamingBufferAppend (StreamingBuffer *sb, StreamingBufferSegment *seg, const uint8_t *data, uint32_t data_len) |
int | StreamingBufferAppendNoTrack (StreamingBuffer *sb, const uint8_t *data, uint32_t data_len) |
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) |
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 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... | |
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)) : SCCalloc((n), (s)) |
Definition at line 37 of file util-streaming-buffer.c.
Definition at line 532 of file util-streaming-buffer.c.
Definition at line 643 of file util-streaming-buffer.c.
#define FREE | ( | cfg, | |
ptr, | |||
s | |||
) | (cfg)->Free ? (cfg)->Free((ptr), (s)) : SCFree((ptr)) |
Definition at line 41 of file util-streaming-buffer.c.
#define MALLOC | ( | cfg, | |
s | |||
) | (cfg)->Malloc ? (cfg)->Malloc((s)) : SCMalloc((s)) |
Definition at line 35 of file util-streaming-buffer.c.
#define REALLOC | ( | cfg, | |
ptr, | |||
orig_s, | |||
s | |||
) | (cfg)->Realloc ? (cfg)->Realloc((ptr), (orig_s), (s)) : SCRealloc((ptr), (s)) |
Definition at line 39 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 79 of file util-streaming-buffer.c.
References head, StreamingBufferBlock::len, StreamingBufferBlock::offset, RB_ROOT, res, and SCLogDebug.
int SBBCompare | ( | struct StreamingBufferBlock * | a, |
struct StreamingBufferBlock * | b | ||
) |
Definition at line 47 of file util-streaming-buffer.c.
References StreamingBufferBlock::len, StreamingBufferBlock::offset, SCLogDebug, and SCReturnInt.
int StreamingBufferAppend | ( | StreamingBuffer * | sb, |
StreamingBufferSegment * | seg, | ||
const uint8_t * | data, | ||
uint32_t | data_len | ||
) |
Definition at line 571 of file util-streaming-buffer.c.
References StreamingBuffer_::buf, and BUG_ON.
Referenced by UTHAddStreamToFlow().
int StreamingBufferAppendNoTrack | ( | StreamingBuffer * | sb, |
const uint8_t * | data, | ||
uint32_t | data_len | ||
) |
add data w/o tracking a segment
Definition at line 610 of file util-streaming-buffer.c.
References StreamingBuffer_::buf.
StreamingBufferSegment* StreamingBufferAppendRaw | ( | StreamingBuffer * | sb, |
const uint8_t * | data, | ||
uint32_t | data_len | ||
) |
Definition at line 534 of file util-streaming-buffer.c.
References StreamingBuffer_::buf.
void StreamingBufferClear | ( | StreamingBuffer * | sb | ) |
Definition at line 132 of file util-streaming-buffer.c.
References StreamingBuffer_::buf_size, 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 872 of file util-streaming-buffer.c.
References offset, PrintRawDataFp(), SCLogDebug, and StreamingBufferGetData().
Referenced by StreamTcpCheckStreamContents().
void StreamingBufferFree | ( | StreamingBuffer * | sb | ) |
Definition at line 145 of file util-streaming-buffer.c.
References StreamingBuffer_::cfg, 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 832 of file util-streaming-buffer.c.
References StreamingBuffer_::buf, StreamingBuffer_::buf_offset, stream_offset, and StreamingBuffer_::stream_offset.
Referenced by StreamingBufferCompareRawData().
int StreamingBufferGetDataAtOffset | ( | const StreamingBuffer * | sb, |
const uint8_t ** | data, | ||
uint32_t * | data_len, | ||
uint64_t | offset | ||
) |
Definition at line 849 of file util-streaming-buffer.c.
References StreamingBuffer_::buf, StreamingBuffer_::buf_offset, offset, and StreamingBuffer_::stream_offset.
StreamingBuffer* StreamingBufferInit | ( | const StreamingBufferConfig * | cfg | ) |
Definition at line 112 of file util-streaming-buffer.c.
References StreamingBufferConfig_::buf_size, StreamingBuffer_::buf_size, CALLOC, and StreamingBuffer_::cfg.
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 652 of file util-streaming-buffer.c.
References StreamingBuffer_::buf, BUG_ON, DEBUG_VALIDATE_BUG_ON, and stream_offset.
void StreamingBufferRegisterTests | ( | void | ) |
Definition at line 1404 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 726 of file util-streaming-buffer.c.
References StreamingBuffer_::buf, StreamingBuffer_::buf_offset, len, StreamingBufferBlock::len, offset, StreamingBufferBlock::offset, and StreamingBuffer_::stream_offset.
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 752 of file util-streaming-buffer.c.
References StreamingBuffer_::buf, StreamingBuffer_::buf_size, BUG_ON, StreamingBufferBlock::len, offset, StreamingBufferBlock::offset, and StreamingBuffer_::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 816 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 785 of file util-streaming-buffer.c.
References StreamingBuffer_::buf, StreamingBuffer_::buf_size, likely, offset, segment_len, and StreamingBuffer_::stream_offset.
Referenced by HtpBodyPrint(), StreamingBufferSegmentCompareRawData(), StreamTcpInlineSegmentCompare(), and StreamTcpInlineSegmentReplacePacket().
int StreamingBufferSegmentIsBeforeWindow | ( | const StreamingBuffer * | sb, |
const StreamingBufferSegment * | seg | ||
) |
Definition at line 714 of file util-streaming-buffer.c.
References StreamingBuffer_::stream_offset.
Referenced by HtpBodyPrune().
void StreamingBufferSlide | ( | StreamingBuffer * | sb, |
uint32_t | slide | ||
) |
Definition at line 521 of file util-streaming-buffer.c.
References StreamingBuffer_::buf, StreamingBuffer_::buf_offset, SCLogDebug, and StreamingBuffer_::stream_offset.
void StreamingBufferSlideToOffset | ( | StreamingBuffer * | sb, |
uint64_t | offset | ||
) |
slide to absolute offset
Definition at line 506 of file util-streaming-buffer.c.
References StreamingBuffer_::buf, StreamingBuffer_::buf_offset, offset, SCLogDebug, stream_offset, and StreamingBuffer_::stream_offset.
Referenced by HtpBodyPrune().