stream: add offset to raw stream callback

This gives the called function to understand where it is in the
stream.
pull/7244/head
Victor Julien 3 years ago
parent 205bc1e288
commit afb97d1dee

@ -54,7 +54,8 @@ struct StreamMpmData {
const MpmCtx *mpm_ctx;
};
static int StreamMpmFunc(void *cb_data, const uint8_t *data, const uint32_t data_len)
static int StreamMpmFunc(
void *cb_data, const uint8_t *data, const uint32_t data_len, const uint64_t _offset)
{
struct StreamMpmData *smd = cb_data;
if (data_len >= smd->mpm_ctx->minlen) {
@ -221,7 +222,8 @@ struct StreamContentInspectData {
Flow *f;
};
static int StreamContentInspectFunc(void *cb_data, const uint8_t *data, const uint32_t data_len)
static int StreamContentInspectFunc(
void *cb_data, const uint8_t *data, const uint32_t data_len, const uint64_t _offset)
{
SCEnter();
int r = 0;
@ -279,7 +281,8 @@ struct StreamContentInspectEngineData {
Flow *f;
};
static int StreamContentInspectEngineFunc(void *cb_data, const uint8_t *data, const uint32_t data_len)
static int StreamContentInspectEngineFunc(
void *cb_data, const uint8_t *data, const uint32_t data_len, const uint64_t _offset)
{
SCEnter();
int r = 0;

@ -253,7 +253,8 @@ struct StreamLogData {
Flow *f;
};
static int StreamLogFunc(void *cb_data, const uint8_t *data, const uint32_t data_len)
static int StreamLogFunc(
void *cb_data, const uint8_t *data, const uint32_t data_len, const uint64_t _offset)
{
struct StreamLogData *log = cb_data;

@ -1597,7 +1597,7 @@ static int StreamReassembleRawInline(TcpSession *ssn, const Packet *p,
}
/* run the callback */
r = Callback(cb_data, mydata, mydata_len);
r = Callback(cb_data, mydata, mydata_len, mydata_offset);
BUG_ON(r < 0);
if (return_progress) {
@ -1745,7 +1745,7 @@ static int StreamReassembleRawDo(TcpSession *ssn, TcpStream *stream,
SCLogDebug("data %p len %u", mydata, mydata_len);
/* we have data. */
r = Callback(cb_data, mydata, mydata_len);
r = Callback(cb_data, mydata, mydata_len, mydata_offset);
BUG_ON(r < 0);
if (mydata_offset == progress) {

@ -127,7 +127,8 @@ int StreamTcpSegmentForEach(const Packet *p, uint8_t flag,
void StreamTcpReassembleConfigEnableOverlapCheck(void);
void TcpSessionSetReassemblyDepth(TcpSession *ssn, uint32_t size);
typedef int (*StreamReassembleRawFunc)(void *data, const uint8_t *input, const uint32_t input_len);
typedef int (*StreamReassembleRawFunc)(
void *data, const uint8_t *input, const uint32_t input_len, const uint64_t offset);
int StreamReassembleLog(TcpSession *ssn, TcpStream *stream,
StreamReassembleRawFunc Callback, void *cb_data,

@ -31,7 +31,8 @@ struct TestReassembleRawCallbackData {
const uint32_t expect_data_len;
};
static int TestReassembleRawCallback(void *cb_data, const uint8_t *data, const uint32_t data_len)
static int TestReassembleRawCallback(
void *cb_data, const uint8_t *data, const uint32_t data_len, const uint64_t offset)
{
struct TestReassembleRawCallbackData *cb = cb_data;

Loading…
Cancel
Save