suricata
|
#include "suricata-common.h"
#include "rust.h"
#include "stream-tcp-private.h"
#include "stream-tcp.h"
#include "stream-tcp-reassemble.h"
#include "stream-tcp-inline.h"
#include "stream-tcp-list.h"
#include "util-streaming-buffer.h"
#include "util-print.h"
#include "util-validate.h"
#include "app-layer-frames.h"
#include "tests/stream-tcp-list.c"
Go to the source code of this file.
Functions | |
void | StreamTcpReassembleConfigEnableOverlapCheck (void) |
RB_GENERATE (TCPSEG, TcpSegment, rb, TcpSegmentCompare) | |
int | TcpSegmentCompare (struct TcpSegment *a, struct TcpSegment *b) |
compare function for the Segment tree More... | |
int | StreamTcpReassembleInsertSegment (ThreadVars *tv, TcpReassemblyThreadCtx *ra_ctx, TcpStream *stream, TcpSegment *seg, Packet *p, uint32_t pkt_seq, uint8_t *pkt_data, uint16_t pkt_datalen) |
void | StreamTcpPruneSession (Flow *f, uint8_t flags) |
Remove idle TcpSegments from TcpSession. More... | |
Segment list functions for insertions, overlap handling, removal and more.
Definition in file stream-tcp-list.c.
RB_GENERATE | ( | TCPSEG | , |
TcpSegment | , | ||
rb | , | ||
TcpSegmentCompare | |||
) |
void StreamTcpPruneSession | ( | Flow * | f, |
uint8_t | flags | ||
) |
Remove idle TcpSegments from TcpSession.
Checks app progress and raw progress and progresses them if needed, slides the streaming buffer, then gets rid of excess segments.
f | flow |
flags | direction flags |
Definition at line 887 of file stream-tcp-list.c.
References TcpSession_::client, flags, TcpStream_::flags, TcpSession_::flags, Flow_::protoctx, TcpStream_::sb, TcpStreamCnf_::sbcnf, SCEnter, SCLogDebug, SCReturn, TcpSession_::server, stream_config, StreamingBufferClear(), STREAMTCP_FLAG_APP_LAYER_DISABLED, STREAMTCP_STREAM_FLAG_DEPTH_REACHED, STREAMTCP_STREAM_FLAG_DISABLE_RAW, STREAMTCP_STREAM_FLAG_NOREASSEMBLY, and StreamTcpReturnStreamSegments().
void StreamTcpReassembleConfigEnableOverlapCheck | ( | void | ) |
Definition at line 40 of file stream-tcp-list.c.
int StreamTcpReassembleInsertSegment | ( | ThreadVars * | tv, |
TcpReassemblyThreadCtx * | ra_ctx, | ||
TcpStream * | stream, | ||
TcpSegment * | seg, | ||
Packet * | p, | ||
uint32_t | pkt_seq, | ||
uint8_t * | pkt_data, | ||
uint16_t | pkt_datalen | ||
) |
seg | segment, this function takes total ownership |
In case of error, this function returns the segment to the pool
Definition at line 634 of file stream-tcp-list.c.
References SCEnter.
Referenced by StreamTcpUTAddSegmentWithByte(), and StreamTcpUTAddSegmentWithPayload().
int TcpSegmentCompare | ( | struct TcpSegment * | a, |
struct TcpSegment * | b | ||
) |
compare function for the Segment tree
Main sort point is the sequence number. When sequence numbers are equal compare payload_len as well. This way the tree is sorted by seq, and in case of duplicate seqs we are sorted small to large.
Definition at line 51 of file stream-tcp-list.c.
References TcpSegment::payload_len, TcpSegment::seq, SEQ_GT, and SEQ_LT.