|
|
|
|
@ -70,6 +70,29 @@ void StreamTcpUTClearStream(TcpStream *s) {
|
|
|
|
|
StreamTcpReturnStreamSegments(s);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int StreamTcpUTAddSegmentWithPayload(ThreadVars *tv, TcpReassemblyThreadCtx *ra_ctx, TcpStream *stream, uint32_t seq, uint8_t *payload, uint16_t len) {
|
|
|
|
|
TcpSegment *s = StreamTcpGetSegment(tv, ra_ctx, len);
|
|
|
|
|
if (s == NULL) {
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
s->seq = seq;
|
|
|
|
|
s->payload_len = len;
|
|
|
|
|
memcpy(s->payload, payload, len);
|
|
|
|
|
|
|
|
|
|
Packet *p = UTHBuildPacketReal(s->payload, s->payload_len, IPPROTO_TCP, "1.1.1.1", "2.2.2.2", 1024, 80);
|
|
|
|
|
if (p == NULL) {
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
p->tcph->th_seq = htonl(seq);
|
|
|
|
|
|
|
|
|
|
if (StreamTcpReassembleInsertSegment(tv, ra_ctx, stream, s, p) < 0)
|
|
|
|
|
return -1;
|
|
|
|
|
|
|
|
|
|
UTHFreePacket(p);
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int StreamTcpUTAddSegmentWithByte(ThreadVars *tv, TcpReassemblyThreadCtx *ra_ctx, TcpStream *stream, uint32_t seq, uint8_t byte, uint16_t len) {
|
|
|
|
|
TcpSegment *s = StreamTcpGetSegment(tv, ra_ctx, len);
|
|
|
|
|
if (s == NULL) {
|
|
|
|
|
@ -80,7 +103,7 @@ int StreamTcpUTAddSegmentWithByte(ThreadVars *tv, TcpReassemblyThreadCtx *ra_ctx
|
|
|
|
|
s->payload_len = len;
|
|
|
|
|
memset(s->payload, byte, len);
|
|
|
|
|
|
|
|
|
|
Packet *p = UTHBuildPacketReal(s->payload, 5, IPPROTO_TCP, "1.1.1.1", "2.2.2.2", 1024, 80);
|
|
|
|
|
Packet *p = UTHBuildPacketReal(s->payload, s->payload_len, IPPROTO_TCP, "1.1.1.1", "2.2.2.2", 1024, 80);
|
|
|
|
|
if (p == NULL) {
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
|