#define CHK_SEQ 0
#define NO_CHK_SEQ 1
-#define S5_UNALIGNED 0
-#define S5_ALIGNED 1
+#define STREAM_UNALIGNED 0
+#define STREAM_ALIGNED 1
/* actions */
#define ACTION_NOTHING 0x00000000
#define STREAM_INSERT_TIMEOUT 2
#define STREAM_INSERT_FAILED 3
-#define S5_DEFAULT_TCP_PACKET_MEMCAP 8388608 /* 8MB */
-#define S5_MIN_OVERLAP_LIMIT 0
-#define S5_MAX_OVERLAP_LIMIT 255
-#define S5_MAX_FLUSH_FACTOR 2048
+#define STREAM_DEFAULT_TCP_PACKET_MEMCAP 8388608 /* 8MB */
+#define STREAM_MIN_OVERLAP_LIMIT 0
+#define STREAM_MAX_OVERLAP_LIMIT 255
+#define STREAM_MAX_FLUSH_FACTOR 2048
/* target-based policy types */
#define STREAM_POLICY_FIRST 1
#define REASSEMBLY_POLICY_VISTA 13
#define REASSEMBLY_POLICY_DEFAULT REASSEMBLY_POLICY_BSD
-#define S5_MAX_MAX_WINDOW 0x3FFFc000 /* max window allowed by TCP */
+#define STREAM_MAX_MAX_WINDOW 0x3FFFc000 /* max window allowed by TCP */
/* 65535 << 14 (max wscale) */
-#define S5_MIN_MAX_WINDOW 0
+#define STREAM_MIN_MAX_WINDOW 0
#define MAX_PORTS_TO_PRINT 20
-#define S5_DEFAULT_MAX_QUEUED_BYTES 1048576 /* 1 MB */
-#define S5_MIN_MAX_QUEUED_BYTES 1024 /* Don't let this go below 1024 */
-#define S5_MAX_MAX_QUEUED_BYTES 0x40000000 /* 1 GB, most we could reach within
+#define STREAM_DEFAULT_MAX_QUEUED_BYTES 1048576 /* 1 MB */
+#define STREAM_MIN_MAX_QUEUED_BYTES 1024 /* Don't let this go below 1024 */
+#define STREAM_MAX_MAX_QUEUED_BYTES 0x40000000 /* 1 GB, most we could reach within
* largest window scale */
#define AVG_PKT_SIZE 400
-#define S5_DEFAULT_MAX_QUEUED_SEGS (S5_DEFAULT_MAX_QUEUED_BYTES/AVG_PKT_SIZE)
-#define S5_MIN_MAX_QUEUED_SEGS 2 /* Don't let this go below 2 */
-#define S5_MAX_MAX_QUEUED_SEGS 0x40000000 /* 1 GB worth of one-byte segments */
+#define STREAM_DEFAULT_MAX_QUEUED_SEGS (STREAM_DEFAULT_MAX_QUEUED_BYTES/AVG_PKT_SIZE)
+#define STREAM_MIN_MAX_QUEUED_SEGS 2 /* Don't let this go below 2 */
+#define STREAM_MAX_MAX_QUEUED_SEGS 0x40000000 /* 1 GB worth of one-byte segments */
-#define S5_DEFAULT_MAX_SMALL_SEG_SIZE 0 /* disabled */
-#define S5_MAX_MAX_SMALL_SEG_SIZE 2048 /* 2048 bytes in single packet, uh, not small */
-#define S5_MIN_MAX_SMALL_SEG_SIZE 0 /* 0 means disabled */
+#define STREAM_DEFAULT_MAX_SMALL_SEG_SIZE 0 /* disabled */
+#define STREAM_MAX_MAX_SMALL_SEG_SIZE 2048 /* 2048 bytes in single packet, uh, not small */
+#define STREAM_MIN_MAX_SMALL_SEG_SIZE 0 /* 0 means disabled */
-#define S5_DEFAULT_CONSEC_SMALL_SEGS 0 /* disabled */
-#define S5_MAX_CONSEC_SMALL_SEGS 2048 /* 2048 single byte packets without acks is alot */
-#define S5_MIN_CONSEC_SMALL_SEGS 0 /* 0 means disabled */
+#define STREAM_DEFAULT_CONSEC_SMALL_SEGS 0 /* disabled */
+#define STREAM_MAX_CONSEC_SMALL_SEGS 2048 /* 2048 single byte packets without acks is alot */
+#define STREAM_MIN_CONSEC_SMALL_SEGS 0 /* 0 means disabled */
#define SUB_SYN_SENT 0x01
#define SUB_ACK_SENT 0x02
#define SLAM_MAX 4
-//#define DEBUG_STREAM5
-#ifdef DEBUG_STREAM5
-#define STREAM5_DEBUG_WRAP(x) DEBUG_WRAP(x)
+//#define DEBUG_STREAM_EX
+#ifdef DEBUG_STREAM_EX
+#define STREAM_DEBUG_WRAP(x) DEBUG_WRAP(x)
#else
-#define STREAM5_DEBUG_WRAP(x)
+#define STREAM_DEBUG_WRAP(x)
#endif
#define SL_BUF_FLUSHED 1
}
/* P R O T O T Y P E S ********************************************/
-static void Stream5PrintTcpConfig(StreamTcpConfig*);
+static void StreamPrintTcpConfig(StreamTcpConfig*);
static inline void SetupTcpDataBlock(TcpDataBlock *, Packet *);
static int ProcessTcp(Flow *, Packet *, TcpDataBlock *,
TcpSession *, StreamTracker *, StreamTracker *, Packet *);
static inline int CheckFlushPolicyOnAck(
TcpSession *, StreamTracker *, StreamTracker *, Packet *);
-static void Stream5SeglistAddNode(StreamTracker *, StreamSegment *,
+static void StreamSeglistAddNode(StreamTracker *, StreamSegment *,
StreamSegment *);
-static int Stream5SeglistDeleteNode(StreamTracker*, StreamSegment*);
-static int Stream5SeglistDeleteNodeTrim(StreamTracker*, StreamSegment*, uint32_t flush_seq);
+static int StreamSeglistDeleteNode(StreamTracker*, StreamSegment*);
+static int StreamSeglistDeleteNodeTrim(StreamTracker*, StreamSegment*, uint32_t flush_seq);
static int AddStreamNode(
StreamTracker*, Packet*, TcpDataBlock*,
int16_t len, uint32_t slide, uint32_t trunc,
StreamSegment* left,
StreamSegment** retSeg);
-static uint32_t Stream5GetWscale(Packet *, uint16_t *);
-static uint32_t Stream5PacketHasWscale(Packet *);
-static uint32_t Stream5GetMss(Packet *, uint16_t *);
-static uint32_t Stream5GetTcpTimestamp(Packet *, uint32_t *, int strip);
+static uint32_t StreamGetWscale(Packet *, uint16_t *);
+static uint32_t StreamPacketHasWscale(Packet *);
+static uint32_t StreamGetMss(Packet *, uint16_t *);
+static uint32_t StreamGetTcpTimestamp(Packet *, uint32_t *, int strip);
int s5TcpStreamSizeInit(SnortConfig* sc, char *name, char *parameters, void **dataPtr);
int s5TcpStreamSizeEval(Packet*, const uint8_t **cursor, void *dataPtr);
"IPS"
};
-#ifdef DEBUG_STREAM5
+#ifdef DEBUG_STREAM_EX
static const char* const state_names[] = {
"NONE",
"LISTEN",
trk->flush_policy = STREAM_FLPOLICY_ON_DATA;
}
-bool Stream5IsPafActiveTcp (Flow* lwssn, bool c2s)
+bool StreamIsPafActiveTcp (Flow* lwssn, bool c2s)
{
TcpSession* tcpssn = (TcpSession*)lwssn->session;
StreamSplitter* ss = c2s ? tcpssn->server.splitter : tcpssn->client.splitter;
return ss && ss->is_paf();
}
-void Stream5SetSplitterTcp (Flow* lwssn, bool c2s, StreamSplitter* ss)
+void StreamSetSplitterTcp (Flow* lwssn, bool c2s, StreamSplitter* ss)
{
TcpSession* tcpssn = (TcpSession*)lwssn->session;
StreamTracker* trk;
s5_paf_setup(&trk->paf_state);
}
-StreamSplitter* Stream5GetSplitterTcp (Flow* lwssn, bool c2s)
+StreamSplitter* StreamGetSplitterTcp (Flow* lwssn, bool c2s)
{
TcpSession* tcpssn = (TcpSession*)lwssn->session;
StreamTracker* trk;
return trk->splitter;
}
-void Stream5UpdatePerfBaseState(SFBASE *sf_base,
+void StreamUpdatePerfBaseState(SFBASE *sf_base,
Flow *lwssn,
char newState)
{
default:
break;
}
- sf_base->stream5_mem_in_use = tcp_memcap->used();
+ sf_base->stream_mem_in_use = tcp_memcap->used();
}
//-------------------------------------------------------------------------
flags = 0;
flush_factor = 0;
- session_timeout = S5_DEFAULT_SSN_TIMEOUT;
+ session_timeout = STREAM_DEFAULT_SSN_TIMEOUT;
max_window = 0;
overlap_limit = 0;
- max_queued_bytes = S5_DEFAULT_MAX_QUEUED_BYTES;
- max_queued_segs = S5_DEFAULT_MAX_QUEUED_SEGS;
+ max_queued_bytes = STREAM_DEFAULT_MAX_QUEUED_BYTES;
+ max_queued_segs = STREAM_DEFAULT_MAX_QUEUED_SEGS;
- max_consec_small_segs = S5_DEFAULT_CONSEC_SMALL_SEGS;
- max_consec_small_seg_size = S5_DEFAULT_MAX_SMALL_SEG_SIZE;
+ max_consec_small_segs = STREAM_DEFAULT_CONSEC_SMALL_SEGS;
+ max_consec_small_seg_size = STREAM_DEFAULT_MAX_SMALL_SEG_SIZE;
hs_timeout = -1;
footprint = 0;
// make sense of the code in this file.
//-------------------------------------------------------------------------
-static void Stream5PrintTcpConfig(StreamTcpConfig* config)
+static void StreamPrintTcpConfig(StreamTcpConfig* config)
{
- LogMessage("Stream5 TCP Policy config:\n");
+ LogMessage("Stream TCP Policy config:\n");
LogMessage(" Reassembly Policy: %s\n",
reassembly_policy_names[config->reassembly_policy]);
LogMessage(" Timeout: %d seconds\n", config->session_timeout);
if (config->flags)
{
LogMessage(" Options:\n");
- if (config->flags & STREAM5_CONFIG_IGNORE_ANY)
+ if (config->flags & STREAM_CONFIG_IGNORE_ANY)
{
LogMessage(" Ignore Any -> Any Rules: YES\n");
}
- if (config->flags & STREAM5_CONFIG_NO_ASYNC_REASSEMBLY)
+ if (config->flags & STREAM_CONFIG_NO_ASYNC_REASSEMBLY)
{
LogMessage(" Don't queue packets on one-sided sessions: YES\n");
}
// attribute table foo
//-------------------------------------------------------------------------
-int Stream5VerifyTcpConfig(SnortConfig*, StreamTcpConfig*)
+int StreamVerifyTcpConfig(SnortConfig*, StreamTcpConfig*)
{
return 0;
}
-#ifdef DEBUG_STREAM5
+#ifdef DEBUG_STREAM_EX
static void PrintStateMgr(StateMgr *s)
{
LogMessage("StateMgr:\n");
LogMessage(" end: 0x%08X\n", tdb->end_seq);
}
-#ifdef DEBUG_STREAM5
static void PrintFlushMgr(FlushMgr *fm)
{
if(fm == NULL)
switch(fm->flush_policy)
{
case STREAM_FLPOLICY_IGNORE:
- STREAM5_DEBUG_WRAP(DebugMessage(
+ STREAM_DEBUG_WRAP(DebugMessage(
DEBUG_STREAM_STATE, " IGNORE\n"););
break;
case STREAM_FLPOLICY_ON_ACK:
- STREAM5_DEBUG_WRAP(DebugMessage(
+ STREAM_DEBUG_WRAP(DebugMessage(
DEBUG_STREAM_STATE, " PROTOCOL\n"););
break;
case STREAM_FLPOLICY_ON_DATA:
- STREAM5_DEBUG_WRAP(DebugMessage(
+ STREAM_DEBUG_WRAP(DebugMessage(
DEBUG_STREAM_STATE, " PROTOCOL_IPS\n"););
break;
}
}
-#endif // DEBUG
-#endif // DEBUG_STREAM5
+#endif // DEBUG_STREAM_EX
static inline void Discard ()
{
tcpStats.internalEvents++;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
- "Stream5 raised internal event %d\n", eventSid););
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ "Stream raised internal event %d\n", eventSid););
SnortEventqAdd(GENERATOR_INTERNAL, eventSid);
}
static inline int IsBetween(uint32_t low, uint32_t high, uint32_t cur)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"(%X, %X, %X) = (low, high, cur)\n", low,high,cur););
/* If we haven't seen anything, ie, low & high are 0, return true */
return ( (lwssn->s5_state.session_flags & SSNFLAG_SEEN_BOTH) == SSNFLAG_SEEN_BOTH );
}
-static inline uint32_t Stream5GetWindow(
+static inline uint32_t StreamGetWindow(
Flow* lwssn, StreamTracker* st, TcpDataBlock* tdb)
{
int32_t window;
if ( st->l_window )
{
// don't use the window if we may have missed scaling
- if ( !(lwssn->session_state & STREAM5_STATE_MIDSTREAM) )
+ if ( !(lwssn->session_state & STREAM_STATE_MIDSTREAM) )
return st->l_window;
}
// one way zero window is unitialized
static inline int ValidRst(
Flow* lwssn, StreamTracker *st, TcpDataBlock *tdb)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Checking end_seq (%X) > r_win_base (%X) && "
"seq (%X) < r_nxt_ack(%X)\n",
tdb->end_seq, st->r_win_base, tdb->seq,
- st->r_nxt_ack+Stream5GetWindow(lwssn, st, tdb)););
+ st->r_nxt_ack+StreamGetWindow(lwssn, st, tdb)););
switch (st->os_policy)
{
case STREAM_POLICY_HPUX11:
if (SEQ_GEQ(tdb->seq, st->r_nxt_ack))
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"rst is valid seq (>= next seq)!\n"););
return 1;
}
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"rst is not valid seq (>= next seq)!\n"););
return 0;
break;
case STREAM_POLICY_IRIX:
if (SEQ_EQ(tdb->seq, st->r_nxt_ack))
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"rst is valid seq (next seq)!\n"););
return 1;
}
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"rst is not valid seq (next seq)!\n"););
return 0;
break;
if(SEQ_GEQ(tdb->end_seq, st->r_win_base))
{
// reset must be admitted when window closed
- if ( SEQ_LEQ(tdb->seq, st->r_win_base+Stream5GetWindow(lwssn, st, tdb)) )
+ if ( SEQ_LEQ(tdb->seq, st->r_win_base+StreamGetWindow(lwssn, st, tdb)) )
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"rst is valid seq (within window)!\n"););
return 1;
}
}
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"rst is not valid seq (within window)!\n"););
return 0;
break;
}
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"rst is not valid!\n"););
return 0;
}
if((talker->flags & TF_TSTAMP) && (listener->flags & TF_TSTAMP))
{
char validate_timestamp = 1;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Checking timestamps for PAWS\n"););
- *got_ts = Stream5GetTcpTimestamp(p, &tdb->ts, 0);
+ *got_ts = StreamGetTcpTimestamp(p, &tdb->ts, 0);
if (*got_ts)
{
if(result < 0)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Packet outside PAWS window, dropping\n"););
/* bail, we've got a packet outside the PAWS window! */
//Discard();
((uint32_t)p->pkth->ts.tv_sec > talker->ts_last_pkt+PAWS_24DAYS))
{
/* this packet is from way too far into the future */
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"packet PAWS timestamp way too far ahead of"
"last packet %d %d...\n", p->pkth->ts.tv_sec,
talker->ts_last_pkt););
}
else
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"packet PAWS ok...\n"););
}
}
* but continue to process the packet
*/
*eventcode |= EVENT_NO_TIMESTAMP;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"packet no timestamp, had one earlier from this side...ok for now...\n"););
if (listener->config->policy == STREAM_POLICY_SOLARIS)
}
else if ( p->ptrs.tcph->is_syn_only() )
{
- *got_ts = Stream5GetTcpTimestamp(p, &tdb->ts, 0);
+ *got_ts = StreamGetTcpTimestamp(p, &tdb->ts, 0);
if ( *got_ts )
talker->flags |= TF_TSTAMP;
}
// (nop) the timestamp option. this includes the cases where
// we disable timestamp handling.
int strip = ( SetupOK(talker) && SetupOK(listener) );
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"listener not doing timestamps...\n"););
- *got_ts = Stream5GetTcpTimestamp(p, &tdb->ts, strip);
+ *got_ts = StreamGetTcpTimestamp(p, &tdb->ts, strip);
if (*got_ts)
{
/* Old Linux & Windows allows a 0 timestamp value. */
break;
default:
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Packet with 0 timestamp, dropping\n"););
//Discard();
/* bail */
static inline int ValidSeq(
const Packet* p, Flow* lwssn, StreamTracker *st, TcpDataBlock *tdb)
{
- uint32_t win = Stream5GetWindow(lwssn, st, tdb);
+ uint32_t win = StreamGetWindow(lwssn, st, tdb);
if ( !p->dsize )
{
int right_ok;
uint32_t left_seq;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Checking end_seq (%X) > r_win_base (%X) && "
"seq (%X) < r_nxt_ack(%X)\n",
tdb->end_seq, st->r_win_base, tdb->seq,
- st->r_nxt_ack+Stream5GetWindow(lwssn, st, tdb)););
+ st->r_nxt_ack+StreamGetWindow(lwssn, st, tdb)););
if ( SEQ_LT(st->r_nxt_ack, st->r_win_base) )
left_seq = st->r_nxt_ack;
if ( right_ok )
{
- uint32_t win = Stream5GetWindow(lwssn, st, tdb);
+ uint32_t win = StreamGetWindow(lwssn, st, tdb);
if( SEQ_LEQ(tdb->seq, st->r_win_base+win) )
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"seq is within window!\n"););
return 1;
}
else
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"seq is past the end of the window!\n"););
}
}
else
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"end_seq is before win_base\n"););
}
return 0;
// we will bump if/when fin is processed
-#ifdef DEBUG_STREAM5
+#ifdef DEBUG_STREAM_EX
PrintTcpDataBlock(&tdb);
#endif
}
{
unsigned dropped = sizeof(StreamSegment);
- STREAM5_DEBUG_WRAP( DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP( DebugMessage(DEBUG_STREAM_STATE,
"Dumping segment at seq %X, size %d, caplen %d\n",
seg->seq, seg->size, seg->caplen););
free(seg);
tcpStats.segs_released++;
- STREAM5_DEBUG_WRAP( DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP( DebugMessage(DEBUG_STREAM_STATE,
"SegmentFree dropped %d bytes\n", dropped););
}
StreamSegment *dump_me;
int i = 0;
- STREAM5_DEBUG_WRAP( DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP( DebugMessage(DEBUG_STREAM_STATE,
"In DeleteSeglist\n"););
while(idx)
{
SegmentFree(dump_me);
}
- STREAM5_DEBUG_WRAP( DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP( DebugMessage(DEBUG_STREAM_STATE,
"Dropped %d segments\n", i););
}
for (i=0;i<st->alert_count;i++)
{
- Stream5AlertInfo* ai = st->alerts + i;
+ StreamAlertInfo* ai = st->alerts + i;
if (SEQ_LT(ai->seq, flush_seq) )
{
{
if ( SEQ_LT(st->seglist_base_seq, flush_seq) )
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"setting st->seglist_base_seq to 0x%X\n", flush_seq););
st->seglist_base_seq = flush_seq;
}
ss = st->seglist;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"In purge_to_seq, start seq = 0x%X end seq = 0x%X delta %d\n",
ss->seq, flush_seq, flush_seq-ss->seq););
while(ss)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"s: %X sz: %d\n", ss->seq, ss->size););
dump_me = ss;
{
last_ts = dump_me->ts;
}
- purged_bytes += Stream5SeglistDeleteNodeTrim(st, dump_me, flush_seq);
+ purged_bytes += StreamSeglistDeleteNodeTrim(st, dump_me, flush_seq);
}
else
break;
if ( SEQ_LT(st->seglist_base_seq, flush_seq) )
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"setting st->seglist_base_seq to 0x%X\n", flush_seq););
st->seglist_base_seq = flush_seq;
}
static void ShowRebuiltPacket (TcpSession* ssn, Packet* pkt)
{
- if ( (ssn->client.config->flags & STREAM5_CONFIG_SHOW_PACKETS) ||
- (ssn->server.config->flags & STREAM5_CONFIG_SHOW_PACKETS) )
+ if ( (ssn->client.config->flags & STREAM_CONFIG_SHOW_PACKETS) ||
+ (ssn->server.config->flags & STREAM_CONFIG_SHOW_PACKETS) )
{
#ifdef REG_TEST
printf("+++++++++++++++++++Stream Packet+++++++++++++++++++++\n");
const uint8_t *flushbuf_end)
{
uint16_t bytes_flushed = 0;
- STREAM5_DEBUG_WRAP(uint32_t bytes_queued = st->seg_bytes_logical;);
+ STREAM_DEBUG_WRAP(uint32_t bytes_queued = st->seg_bytes_logical;);
uint32_t segs = 0;
uint32_t flags = PKT_PDU_HEAD;
PROFILE_VARS;
unsigned bytes_copied = 0;
assert(bytes_to_copy);
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Flushing %u bytes from %X\n", bytes_to_copy, ss->seq));
if (
break;
}
- STREAM5_DEBUG_WRAP(bytes_queued -= bytes_flushed;);
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(bytes_queued -= bytes_flushed;);
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"flushed %d bytes / %d segs on stream, "
"%d still queued\n",
bytes_flushed, segs, bytes_queued););
if(footprint == 0)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Negative footprint, bailing %d (0x%X - 0x%X)\n",
footprint, stop_seq, st->seglist_base_seq););
MODULE_PROFILE_END(s5TcpFlushPerfStats);
return bytes_processed;
}
-#ifdef DEBUG_STREAM5
+#ifdef DEBUG_STREAM_EX
if(footprint < st->seg_bytes_logical)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Footprint less than queued bytes, "
"win_base: 0x%X base_seq: 0x%X\n",
stop_seq, st->seglist_base_seq););
stop_seq = st->seglist_base_seq + footprint;
}
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Attempting to flush %lu bytes\n", footprint););
((DAQ_PktHdr_t*)s5_pkt->pkth)->ts.tv_sec = st->seglist_next->tv.tv_sec;
st->seglist_base_seq += flushed_bytes;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"setting st->seglist_base_seq to 0x%X\n", st->seglist_base_seq););
if ( st->splitter )
TcpSession *tcpssn, StreamTracker *st, uint32_t bytes, Packet *p,
uint32_t dir)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"In flush_to_seq()\n"););
if ( !bytes )
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"bailing, no data\n"););
return 0;
}
if ( !st->seglist_next )
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"bailing, bad seglist ptr\n"););
return 0;
}
if (!DataToFlush(st) && !(st->flags & TF_FORCE_FLUSH))
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"only 1 packet in seglist no need to flush\n"););
return 0;
}
return flush_ackd(tcpssn, st, p, dir);
}
-int Stream5FlushServer(Packet *p, Flow *lwssn)
+int StreamFlushServer(Packet *p, Flow *lwssn)
{
int flushed;
TcpSession* tcpssn = (TcpSession*)lwssn->session;
return flushed;
}
-int Stream5FlushClient(Packet *p, Flow *lwssn)
+int StreamFlushClient(Packet *p, Flow *lwssn)
{
int flushed;
TcpSession* tcpssn = (TcpSession*)lwssn->session;
return flushed;
}
-int Stream5FlushListener(Packet *p, Flow *lwssn)
+int StreamFlushListener(Packet *p, Flow *lwssn)
{
StreamTracker *listener = NULL;
int dir = 0;
* looked at it, so the packet_flags are already set. */
if(p->packet_flags & PKT_FROM_SERVER)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Flushing listener on packet from server\n"););
listener = &tcpssn->client;
/* dir of flush is the data from the opposite side */
}
else if (p->packet_flags & PKT_FROM_CLIENT)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Flushing listener on packet from client\n"););
listener = &tcpssn->server;
/* dir of flush is the data from the opposite side */
return flushed;
}
-int Stream5FlushTalker(Packet *p, Flow *lwssn)
+int StreamFlushTalker(Packet *p, Flow *lwssn)
{
StreamTracker *talker = NULL;
int dir = 0;
* looked at it, so the packet_flags are already set. */
if(p->packet_flags & PKT_FROM_SERVER)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Flushing talker on packet from server\n"););
talker = &tcpssn->server;
/* dir of flush is the data from the opposite side */
}
else if (p->packet_flags & PKT_FROM_CLIENT)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Flushing talker on packet from client\n"););
talker = &tcpssn->client;
/* dir of flush is the data from the opposite side */
static void TcpSessionClear (Flow* lwssn, TcpSession* tcpssn, int freeApplicationData)
{
- STREAM5_DEBUG_WRAP( DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP( DebugMessage(DEBUG_STREAM_STATE,
"In TcpSessionClear, %lu bytes in use\n", tcp_memcap->used()););
- STREAM5_DEBUG_WRAP( DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP( DebugMessage(DEBUG_STREAM_STATE,
"client has %d segs queued\n", tcpssn->client.seg_count););
- STREAM5_DEBUG_WRAP( DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP( DebugMessage(DEBUG_STREAM_STATE,
"server has %d segs queued\n", tcpssn->server.seg_count););
// update stats
else
return;
- Stream5UpdatePerfBaseState(&sfBase, tcpssn->flow, TCP_STATE_CLOSED);
+ StreamUpdatePerfBaseState(&sfBase, tcpssn->flow, TCP_STATE_CLOSED);
RemoveStreamSession(&sfBase);
if (lwssn->s5_state.session_flags & SSNFLAG_PRUNED)
// generate event for rate filtering
EventInternal(INTERNAL_EVENT_SESSION_DEL);
- STREAM5_DEBUG_WRAP( DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP( DebugMessage(DEBUG_STREAM_STATE,
"After cleaning, %lu bytes in use\n", tcp_memcap->used()););
memset(&tcpssn->client, 0, sizeof(tcpssn->client));
int flushed;
/* Flush the client */
- if (tcpssn->client.seglist && !(lwssn->s5_state.ignore_direction & SSN_DIR_SERVER) )
+ if (tcpssn->client.seglist && !(lwssn->s5_state.ignore_direction & SSN_DIR_FROM_SERVER) )
{
DAQ_PktHdr_t* const tmp_pcap_hdr = const_cast<DAQ_PktHdr_t*>(cleanup_pkt->pkth);
tcpStats.s5tcp1++;
}
/* Flush the server */
- if (tcpssn->server.seglist && !(lwssn->s5_state.ignore_direction & SSN_DIR_CLIENT) )
+ if (tcpssn->server.seglist && !(lwssn->s5_state.ignore_direction & SSN_DIR_FROM_CLIENT) )
{
DAQ_PktHdr_t* const tmp_pcap_hdr = const_cast<DAQ_PktHdr_t*>(cleanup_pkt->pkth);
tcpStats.s5tcp2++;
#define S5TraceTCP(pkt, flow, tdb, evt)
#endif // REG_TEST
-static uint32_t Stream5GetTcpTimestamp(Packet *p, uint32_t *ts, int strip)
+static uint32_t StreamGetTcpTimestamp(Packet *p, uint32_t *ts, int strip)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Getting timestamp...\n"););
TcpOptIterator iter(p->ptrs.tcph, p);
else
{
*ts = EXTRACT_32BITS(opt.data);
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Found timestamp %lu\n", *ts););
return TF_TSTAMP;
}
*ts = 0;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"No timestamp...\n"););
return TF_NONE;
}
-static uint32_t Stream5GetMss(Packet *p, uint16_t *value)
+static uint32_t StreamGetMss(Packet *p, uint16_t *value)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Getting MSS...\n"););
TcpOptIterator iter(p->ptrs.tcph, p);
if(opt.code == TcpOptCode::MAXSEG)
{
*value = EXTRACT_16BITS(opt.data);
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Found MSS %u\n", *value););
return TF_MSS;
}
*value = 0;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"No MSS...\n"););
return TF_NONE;
}
-static uint32_t Stream5GetWscale(Packet *p, uint16_t *value)
+static uint32_t StreamGetWscale(Packet *p, uint16_t *value)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Getting wscale...\n"););
if(opt.code == TcpOptCode::WSCALE)
{
*value = (uint16_t) opt.data[0];
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Found wscale %d\n", *value););
/* If scale specified in option is larger than 14,
}
*value = 0;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"No wscale...\n"););
return TF_NONE;
}
-static uint32_t Stream5PacketHasWscale(Packet *p)
+static uint32_t StreamPacketHasWscale(Packet *p)
{
uint16_t wscale;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Checking for wscale...\n"););
- return Stream5GetWscale(p, &wscale);
+ return StreamGetWscale(p, &wscale);
}
#if 0
if ( p->ptrs.tcph->th_flags & TH_FIN )
server->l_nxt_seq--;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"seglist_base_seq = %X\n", client->seglist_base_seq););
- if (!(ssn->flow->session_state & STREAM5_STATE_MIDSTREAM))
+ if (!(ssn->flow->session_state & STREAM_STATE_MIDSTREAM))
{
server->s_mgr.state = TCP_STATE_SYN_RCVD;
client->seglist_base_seq = server->l_unackd;
client->seglist_base_seq = tdb->seq;
client->r_win_base = tdb->seq;
}
- server->flags |= Stream5GetTcpTimestamp(p, &server->ts_last, 0);
+ server->flags |= StreamGetTcpTimestamp(p, &server->ts_last, 0);
if (server->ts_last == 0)
server->flags |= TF_TSTAMP_ZERO;
else
server->ts_last_pkt = p->pkth->ts.tv_sec;
- server->flags |= Stream5GetMss(p, &server->mss);
- server->flags |= Stream5GetWscale(p, &server->wscale);
+ server->flags |= StreamGetMss(p, &server->mss);
+ server->flags |= StreamGetWscale(p, &server->wscale);
-#ifdef DEBUG_STREAM5
+#ifdef DEBUG_STREAM_EX
PrintTcpSession(ssn);
#endif
}
uint32_t overlap = 0;
PROFILE_VARS;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"In NewQueue\n"););
MODULE_PROFILE_START(s5TcpInsertPerfStats);
/* new packet seq is below the last ack... */
if ( SEQ_GT(st->r_win_base, seq) )
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"segment overlaps ack'd data...\n"););
overlap = st->r_win_base - tdb->seq;
if(overlap >= p->dsize)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"full overlap on ack'd data, dropping segment\n"););
MODULE_PROFILE_END(s5TcpInsertPerfStats);
return;
AddStreamNode(st, p, tdb, p->dsize, overlap, 0, tdb->seq+overlap, NULL, &ss);
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Attached new queue to seglist, %d bytes queued, "
"base_seq 0x%X\n",
ss->size, st->seglist_base_seq););
static inline int SegmentFastTrack(StreamSegment *tail, TcpDataBlock *tdb)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Checking seq for fast track: %X > %X\n", tdb->seq,
tail->seq + tail->size););
* zero size data because of trimming. Don't
* insert it
*/
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"zero size TCP data after left & right trimming "
"(len: %d slide: %d trunc: %d)\n",
len, slide, trunc););
Discard();
NormalTrimPayloadIf(p, NORM_TCP_TRIM, 0, tdb);
-#ifdef DEBUG_STREAM5
+#ifdef DEBUG_STREAM_EX
{
StreamSegment *idx = st->seglist;
unsigned long i = 0;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Dumping seglist, %d segments\n", st->seg_count););
while (idx)
{
i++;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"%d ptr: %p seq: 0x%X size: %d nxt: %p prv: %p\n",
i, idx, idx->seq, idx->size, idx->next, idx->prev););
}
}
- Stream5SeglistAddNode(st, left, ss);
+ StreamSeglistAddNode(st, left, ss);
st->seg_bytes_logical += ss->size;
st->seg_bytes_total += ss->caplen; /* Includes protocol headers and payload */
st->total_segs_queued++;
p->packet_flags |= PKT_STREAM_INSERT;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"added %d bytes on segment list @ seq: 0x%X, total %lu, "
"%d segments queued\n", ss->size, ss->seq,
st->seg_bytes_logical, SegsToFlush(st, 0)););
ss->size = left->size;
ss->seq = left->seq;
- Stream5SeglistAddNode(st, left, ss);
+ StreamSeglistAddNode(st, left, ss);
st->seg_bytes_total += ss->caplen;
st->total_segs_queued++;
//st->total_bytes_queued += ss->size;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"added %d bytes on segment list @ seq: 0x%X, total %lu, "
"%d segments queued\n", ss->size, ss->seq,
st->seg_bytes_logical, SegsToFlush(st, 0)););
uint16_t rsize = p->dsize;
uint32_t rseq = tdb->seq;
PROFILE_VARS;
- STREAM5_DEBUG_WRAP(
+ STREAM_DEBUG_WRAP(
StreamSegment *lastptr = NULL;
uint32_t base_seq = st->seglist_base_seq;
int last = 0;
else
reassembly_policy = st->reassembly_policy;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Queuing %d bytes on stream!\n"
"base_seq: %X seq: %X seq_end: %X\n",
seq_end - seq, base_seq, seq, seq_end););
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"%d segments on seglist\n", SegsToFlush(st, 0)););
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+\n"););
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+\n"););
MODULE_PROFILE_START(s5TcpInsertPerfStats);
left = st->seglist_tail;
right = NULL;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Fast tracking segment! (tail_seq %X size %d)\n",
st->seglist_tail->seq, st->seglist_tail->size););
/* Start iterating at the head (left) */
for(ss = st->seglist; ss; ss = ss->next)
{
- STREAM5_DEBUG_WRAP(
+ STREAM_DEBUG_WRAP(
DebugMessage(DEBUG_STREAM_STATE,
"ss: %p seq: 0x%X size: %lu delta: %d\n",
ss, ss->seq, ss->size, (ss->seq-base_seq) - last);
/* Start iterating at the tail (right) */
for(ss = st->seglist_tail; ss; ss = ss->prev)
{
- STREAM5_DEBUG_WRAP(
+ STREAM_DEBUG_WRAP(
DebugMessage(DEBUG_STREAM_STATE,
"ss: %p seq: 0x%X size: %lu delta: %d\n",
ss, ss->seq, ss->size, (ss->seq-base_seq) - last);
left = NULL;
}
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+\n"););
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+\n"););
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"left: %p:0x%X right: %p:0x%X\n", left,
left?left->seq:0, right, right?right->seq:0););
/* check if the new segment overlaps on the left side */
overlap = left->seq + left->size - seq;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"left overlap %d\n", overlap););
if(overlap > 0)
case REASSEMBLY_POLICY_IRIX:
case REASSEMBLY_POLICY_OLD_LINUX:
case REASSEMBLY_POLICY_MACOS:
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"left overlap, honoring old data\n"););
if ( ips_data )
{
/* New packet is entirely overlapped by an
* existing packet on both sides. Drop the
* new data. */
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"left overlap, honoring old data\n"););
seq += overlap;
//slide = overlap;
/* Otherwise, trim the old data accordingly */
left->size -= (int16_t)overlap;
st->seg_bytes_logical -= overlap;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"left overlap, honoring new data\n"););
break;
case REASSEMBLY_POLICY_LAST:
st->seg_bytes_logical -= overlap;
}
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"left overlap, honoring new data\n"););
break;
}
if(SEQ_LEQ(seq_end, seq))
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"seq_end < seq"););
/*
* houston, we have a problem
}
else
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"No left overlap\n"););
}
}
//overlap = right->size - (right->seq - seq);
//right->seq + right->size - seq_end;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"right overlap(%d): len: %d right->seq: 0x%X seq: 0x%X\n",
overlap, len, right->seq, seq););
tcpStats.overlaps++;
st->overlap_count++;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Got partial right overlap\n"););
switch(reassembly_policy)
continue;
}
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Got full right overlap\n"););
tcpStats.overlaps++;
{
dump_me = right;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"retrans, dropping old data at seq %d, size %d\n",
right->seq, right->size););
right = right->next;
- Stream5SeglistDeleteNode(st, dump_me);
+ StreamSeglistDeleteNode(st, dump_me);
break;
}
else
/* Fall through */
case REASSEMBLY_POLICY_FIRST:
case REASSEMBLY_POLICY_VISTA:
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Got full right overlap, truncating new\n"););
if ( ips_data )
{
/* Adjusted seq is fully overlapped */
if (SEQ_EQ(seq, seq_end))
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"StreamQueue got full right overlap with "
"resulting seq too high, bad segment "
"(seq: %X seq_end: %X overlap: %lu\n",
trunc += overlap;
if(SEQ_LEQ((int)(seq_end - trunc), seq))
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"StreamQueue got full right overlap with "
"resulting seq too high, bad segment "
"(seq: %X seq_end: %X overlap: %lu\n",
case REASSEMBLY_POLICY_OLD_LINUX:
case REASSEMBLY_POLICY_LAST:
right_overlap_last:
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Got full right overlap of old, dropping old\n"););
dump_me = right;
right = right->next;
- Stream5SeglistDeleteNode(st, dump_me);
+ StreamSeglistDeleteNode(st, dump_me);
break;
}
}
}
else
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Fully truncated right overlap\n"););
}
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"StreamQueue returning normally\n"););
MODULE_PROFILE_END(s5TcpInsertPerfStats);
StreamTcpConfig* config)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"In ProcessTcpStream(), %d bytes to queue\n", p->dsize););
if ( p->packet_flags & PKT_IGNORE )
SetPacketHeaderFoo(tcpssn, p);
#endif
- if ((config->flags & STREAM5_CONFIG_NO_ASYNC_REASSEMBLY) &&
+ if ((config->flags & STREAM_CONFIG_NO_ASYNC_REASSEMBLY) &&
!TwoWayTraffic(tcpssn->flow))
{
return;
{
if(rcv->flush_policy == STREAM_FLPOLICY_IGNORE)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Ignoring segment due to IGNORE flush_policy\n"););
return;
}
else
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"queuing segment\n"););
if ( SEQ_GT(rcv->r_win_base, tdb->seq) )
if ((rcv->config->overlap_limit) &&
(rcv->overlap_count > rcv->config->overlap_limit))
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Reached the overlap limit. Flush the data "
"and kill the session if configured\n"););
if (p->packet_flags & PKT_FROM_CLIENT)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Flushing data on packet from the client\n"););
flush_stream(tcpssn, rcv, p, PKT_FROM_CLIENT);
}
else
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Flushing data on packet from the server\n"););
flush_stream(tcpssn, rcv, p, PKT_FROM_SERVER);
{
if(rcv->flush_policy == STREAM_FLPOLICY_IGNORE)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Ignoring segment due to IGNORE flush_policy\n"););
return;
}
else
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"queuing segment\n"););
NewQueue(rcv, p, tdb);
}
{
PROFILE_VARS;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"In ProcessTcpData()\n"););
MODULE_PROFILE_START(s5TcpDataPerfStats);
if ((p->ptrs.tcph->th_flags & TH_SYN) && (listener->os_policy != STREAM_POLICY_MACOS))
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Bailing, data on SYN, not MAC Policy!\n"););
NormalTrimPayloadIf(p, NORM_TCP_TRIM, 0, tdb);
MODULE_PROFILE_END(s5TcpDataPerfStats);
- return S5_UNALIGNED;
+ return STREAM_UNALIGNED;
}
/* we're aligned, so that's nice anyway */
if(tdb->seq == listener->r_nxt_ack)
{
/* check if we're in the window */
- if(Stream5GetWindow(tcpssn->flow, listener, tdb) == 0)
+ if(StreamGetWindow(tcpssn->flow, listener, tdb) == 0)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Bailing, we're out of the window!\n"););
NormalTrimPayloadIf(p, NORM_TCP_TRIM, 0, tdb);
MODULE_PROFILE_END(s5TcpDataPerfStats);
- return S5_UNALIGNED;
+ return STREAM_UNALIGNED;
}
/* move the ack boundry up, this is the only way we'll accept data */
/* set flags to session flags */
MODULE_PROFILE_END(s5TcpDataPerfStats);
- return S5_ALIGNED;
+ return STREAM_ALIGNED;
}
}
else
* See HP, Solaris, et al. for those that favor
* duplicate data over the original in some cases.
*/
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"out of order segment (tdb->seq: 0x%X "
"l->r_nxt_ack: 0x%X!\n", tdb->seq, listener->r_nxt_ack););
if (listener->s_mgr.state_queue == TCP_STATE_NONE)
{
/* check if we're in the window */
- if(Stream5GetWindow(tcpssn->flow, listener, tdb) == 0)
+ if(StreamGetWindow(tcpssn->flow, listener, tdb) == 0)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Bailing, we're out of the window!\n"););
NormalTrimPayloadIf(p, NORM_TCP_TRIM, 0, tdb);
MODULE_PROFILE_END(s5TcpDataPerfStats);
- return S5_UNALIGNED;
+ return STREAM_UNALIGNED;
}
if ((listener->s_mgr.state == TCP_STATE_ESTABLISHED) &&
}
MODULE_PROFILE_END(s5TcpDataPerfStats);
- return S5_UNALIGNED;
+ return STREAM_UNALIGNED;
}
void SetTcpReassemblyPolicy(StreamTracker *st)
}
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"adding TcpSession to lightweight session\n"););
lwssn->protocol = p->type();
tmp->flow = lwssn;
init_flush_policy(lwssn, &tmp->server);
init_flush_policy(lwssn, &tmp->client);
-#ifdef DEBUG_STREAM5
+#ifdef DEBUG_STREAM_EX
PrintTcpSession(tmp);
#endif
lwssn->set_expire(p, dstPolicy->session_timeout);
AddStreamSession(
- &sfBase, lwssn->session_state & STREAM5_STATE_MIDSTREAM ? SSNFLAG_MIDSTREAM : 0);
+ &sfBase, lwssn->session_state & STREAM_STATE_MIDSTREAM ? SSNFLAG_MIDSTREAM : 0);
- Stream5UpdatePerfBaseState(&sfBase, tmp->flow, TCP_STATE_SYN_SENT);
+ StreamUpdatePerfBaseState(&sfBase, tmp->flow, TCP_STATE_SYN_SENT);
EventInternal(INTERNAL_EVENT_SESSION_ADD);
* start new sessions on proper SYN packets
*****************************************************************/
tmp = (TcpSession*)lwssn->session;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Creating new session tracker on SYN!\n"););
lwssn->s5_state.session_flags |= SSNFLAG_SEEN_CLIENT;
tmp->server.r_nxt_ack = tmp->client.l_unackd;
tmp->server.r_win_base = tdb->seq+1;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"seglist_base_seq = %X\n", tmp->server.seglist_base_seq););
tmp->server.s_mgr.state = TCP_STATE_LISTEN;
- tmp->client.flags |= Stream5GetTcpTimestamp(p, &tmp->client.ts_last, 0);
+ tmp->client.flags |= StreamGetTcpTimestamp(p, &tmp->client.ts_last, 0);
if (tmp->client.ts_last == 0)
tmp->client.flags |= TF_TSTAMP_ZERO;
- tmp->client.flags |= Stream5GetMss(p, &tmp->client.mss);
- tmp->client.flags |= Stream5GetWscale(p, &tmp->client.wscale);
+ tmp->client.flags |= StreamGetMss(p, &tmp->client.mss);
+ tmp->client.flags |= StreamGetWscale(p, &tmp->client.wscale);
/* Set the StreamTcpConfig for each direction (pkt from client) */
TcpSession* tmp;
{
tmp = (TcpSession*)lwssn->session;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Creating new session tracker on SYN_ACK!\n"););
lwssn->s5_state.session_flags |= SSNFLAG_SEEN_SERVER;
tmp->client.l_nxt_seq = tdb->ack;
tmp->client.isn = tdb->ack-1;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"seglist_base_seq = %X\n", tmp->client.seglist_base_seq););
tmp->client.s_mgr.state = TCP_STATE_SYN_SENT;
- tmp->server.flags |= Stream5GetTcpTimestamp(p, &tmp->server.ts_last, 0);
+ tmp->server.flags |= StreamGetTcpTimestamp(p, &tmp->server.ts_last, 0);
if (tmp->server.ts_last == 0)
tmp->server.flags |= TF_TSTAMP_ZERO;
- tmp->server.flags |= Stream5GetMss(p, &tmp->server.mss);
- tmp->server.flags |= Stream5GetWscale(p, &tmp->server.wscale);
+ tmp->server.flags |= StreamGetMss(p, &tmp->server.mss);
+ tmp->server.flags |= StreamGetWscale(p, &tmp->server.wscale);
/* Set the config for each direction (pkt from server) */
tmp->server.config = dstPolicy;
* start new sessions on completion of 3-way (ACK only, no data)
*****************************************************************/
tmp = (TcpSession*)lwssn->session;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Creating new session tracker on ACK!\n"););
lwssn->s5_state.session_flags |= SSNFLAG_SEEN_CLIENT;
tmp->server.r_nxt_ack = tmp->client.l_unackd;
tmp->server.r_win_base = tdb->seq+1;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"seglist_base_seq = %X\n", tmp->server.seglist_base_seq););
tmp->server.s_mgr.state = TCP_STATE_ESTABLISHED;
- tmp->client.flags |= Stream5GetTcpTimestamp(p, &tmp->client.ts_last, 0);
+ tmp->client.flags |= StreamGetTcpTimestamp(p, &tmp->client.ts_last, 0);
if (tmp->client.ts_last == 0)
tmp->client.flags |= TF_TSTAMP_ZERO;
- tmp->client.flags |= Stream5GetMss(p, &tmp->client.mss);
- tmp->client.flags |= Stream5GetWscale(p, &tmp->client.wscale);
+ tmp->client.flags |= StreamGetMss(p, &tmp->client.mss);
+ tmp->client.flags |= StreamGetWscale(p, &tmp->client.wscale);
/* Set the config for each direction (pkt from client) */
tmp->client.config = dstPolicy;
TcpSession* tmp;
{
tmp = (TcpSession*)lwssn->session;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Creating new session tracker on data packet (ACK|PSH)!\n"););
if (lwssn->s5_state.direction == FROM_CLIENT)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Session direction is FROM_CLIENT\n"););
/* Sender is client (src port is higher) */
//tmp->server.l_nxt_seq = tdb->ack + 1;
tmp->server.l_unackd = tdb->ack - 1;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"seglist_base_seq = %X\n", tmp->server.seglist_base_seq););
tmp->server.s_mgr.state = TCP_STATE_ESTABLISHED;
- tmp->client.flags |= Stream5GetTcpTimestamp(p, &tmp->client.ts_last, 0);
+ tmp->client.flags |= StreamGetTcpTimestamp(p, &tmp->client.ts_last, 0);
if (tmp->client.ts_last == 0)
tmp->client.flags |= TF_TSTAMP_ZERO;
- tmp->client.flags |= Stream5GetMss(p, &tmp->client.mss);
- tmp->client.flags |= Stream5GetWscale(p, &tmp->client.wscale);
+ tmp->client.flags |= StreamGetMss(p, &tmp->client.mss);
+ tmp->client.flags |= StreamGetWscale(p, &tmp->client.wscale);
/* Set the config for each direction (pkt from client) */
tmp->client.config = dstPolicy;
}
else
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Session direction is FROM_SERVER\n"););
/* Sender is server (src port is lower) */
tmp->client.l_window = 0; /* reset later */
tmp->client.isn = tdb->ack-1;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"seglist_base_seq = %X\n", tmp->client.seglist_base_seq););
tmp->client.s_mgr.state = TCP_STATE_ESTABLISHED;
- tmp->server.flags |= Stream5GetTcpTimestamp(p, &tmp->server.ts_last, 0);
+ tmp->server.flags |= StreamGetTcpTimestamp(p, &tmp->server.ts_last, 0);
if (tmp->server.ts_last == 0)
tmp->server.flags |= TF_TSTAMP_ZERO;
- tmp->server.flags |= Stream5GetMss(p, &tmp->server.mss);
- tmp->server.flags |= Stream5GetWscale(p, &tmp->server.wscale);
+ tmp->server.flags |= StreamGetMss(p, &tmp->server.mss);
+ tmp->server.flags |= StreamGetWscale(p, &tmp->server.wscale);
/* Set the config for each direction (pkt from server) */
tmp->server.config = dstPolicy;
*/
if (SEQ_EQ(tdb->seq, listener->r_nxt_ack))
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Got syn on established windows ssn, which causes Reset,"
"bailing\n"););
tcpssn->flow->s5_state.session_flags |= SSNFLAG_RESET;
}
else
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Got syn on established windows ssn, not causing Reset,"
"bailing\n"););
Discard();
break;
case STREAM_POLICY_MACOS:
/* MACOS ignores a 2nd SYN, regardless of the sequence number. */
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Got syn on established macos ssn, not causing Reset,"
"bailing\n"););
Discard();
/* If its not a retransmission of the actual SYN... RESET */
if(!SEQ_EQ(tdb->seq,talker->isn))
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Got syn on established ssn, which causes Reset, bailing\n"););
tcpssn->flow->s5_state.session_flags |= SSNFLAG_RESET;
talker->s_mgr.state = TCP_STATE_CLOSED;
}
else
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Got syn on established ssn, not causing Reset,"
"bailing\n"););
Discard();
TcpSession *tcpssn = NULL;
StreamTracker *talker = NULL;
StreamTracker *listener = NULL;
- STREAM5_DEBUG_WRAP(char *t = NULL; char *l = NULL;)
+ STREAM_DEBUG_WRAP(char *t = NULL; char *l = NULL;)
PROFILE_VARS;
if (lwssn->protocol != PktType::TCP)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Lightweight session not TCP on TCP packet\n"););
return retcode;
}
if ( p->ptrs.tcph->is_syn_only() )
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
- "Stream5 SYN PACKET, establishing lightweight"
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ "Stream SYN PACKET, establishing lightweight"
"session direction.\n"););
/* SYN packet from client */
lwssn->s5_state.direction = FROM_CLIENT;
- lwssn->session_state |= STREAM5_STATE_SYN;
+ lwssn->session_state |= STREAM_STATE_SYN;
- if ( require3Way || (Stream5PacketHasWscale(p) & TF_WSCALE) ||
+ if ( require3Way || (StreamPacketHasWscale(p) & TF_WSCALE) ||
(p->dsize > 0) )
{
/* Create TCP session if we
else if ( p->ptrs.tcph->is_syn_ack() )
{
/* SYN-ACK from server */
- if ((lwssn->session_state == STREAM5_STATE_NONE) ||
+ if ((lwssn->session_state == STREAM_STATE_NONE) ||
(lwssn->s5_state.session_flags & SSNFLAG_RESET))
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
- "Stream5 SYN|ACK PACKET, establishing lightweight"
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ "Stream SYN|ACK PACKET, establishing lightweight"
"session direction.\n"););
lwssn->s5_state.direction = FROM_SERVER;
}
- lwssn->session_state |= STREAM5_STATE_SYN_ACK;
+ lwssn->session_state |= STREAM_STATE_SYN_ACK;
if ( !require3Way || allow_midstream )
{
}
else if (
p->ptrs.tcph->is_ack() && !p->ptrs.tcph->is_rst() &&
- (lwssn->session_state & STREAM5_STATE_SYN_ACK) )
+ (lwssn->session_state & STREAM_STATE_SYN_ACK) )
{
/* TODO: do we need to verify the ACK field is >= the seq of the SYN-ACK? */
/* 3-way Handshake complete, create TCP session */
- lwssn->session_state |= STREAM5_STATE_ACK | STREAM5_STATE_ESTABLISHED;
+ lwssn->session_state |= STREAM_STATE_ACK | STREAM_STATE_ESTABLISHED;
NewTcpSessionOn3Way(p, lwssn, tdb, config);
new_ssn = 1;
NormalTrackECN(tcpssn, (TCPHdr*)p->ptrs.tcph, require3Way);
- Stream5UpdatePerfBaseState(&sfBase, lwssn, TCP_STATE_ESTABLISHED);
+ StreamUpdatePerfBaseState(&sfBase, lwssn, TCP_STATE_ESTABLISHED);
}
else if ( p->dsize && (!require3Way || allow_midstream) )
{
else
lwssn->s5_state.direction = FROM_SERVER;
- lwssn->session_state |= STREAM5_STATE_MIDSTREAM;
+ lwssn->session_state |= STREAM_STATE_MIDSTREAM;
lwssn->s5_state.session_flags |= SSNFLAG_MIDSTREAM;
NewTcpSessionOnData(p, lwssn, tdb, config);
new_ssn = 1;
NormalTrackECN(tcpssn, (TCPHdr*)p->ptrs.tcph, require3Way);
- if (lwssn->session_state & STREAM5_STATE_ESTABLISHED)
- Stream5UpdatePerfBaseState(&sfBase, lwssn, TCP_STATE_ESTABLISHED);
+ if (lwssn->session_state & STREAM_STATE_ESTABLISHED)
+ StreamUpdatePerfBaseState(&sfBase, lwssn, TCP_STATE_ESTABLISHED);
}
else if ( !p->dsize )
{
else
{
/* If session is already marked as established */
- if ( !(lwssn->session_state & STREAM5_STATE_ESTABLISHED) &&
+ if ( !(lwssn->session_state & STREAM_STATE_ESTABLISHED) &&
(!config->require_3whs() || config->midstream_allowed(p)) )
{
/* If not requiring 3-way Handshake... */
if ( p->ptrs.tcph->is_syn_ack() )
{
/* SYN-ACK from server */
- if (lwssn->session_state != STREAM5_STATE_NONE)
+ if (lwssn->session_state != STREAM_STATE_NONE)
{
- lwssn->session_state |= STREAM5_STATE_SYN_ACK;
+ lwssn->session_state |= STREAM_STATE_SYN_ACK;
}
}
else if ( p->ptrs.tcph->is_ack() &&
- (lwssn->session_state & STREAM5_STATE_SYN_ACK) )
+ (lwssn->session_state & STREAM_STATE_SYN_ACK) )
{
- lwssn->session_state |= STREAM5_STATE_ACK | STREAM5_STATE_ESTABLISHED;
- Stream5UpdatePerfBaseState(&sfBase, lwssn, TCP_STATE_ESTABLISHED);
+ lwssn->session_state |= STREAM_STATE_ACK | STREAM_STATE_ESTABLISHED;
+ StreamUpdatePerfBaseState(&sfBase, lwssn, TCP_STATE_ESTABLISHED);
}
}
if ( p->ptrs.tcph->is_syn() )
if(p->packet_flags & PKT_FROM_SERVER)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
- "Stream5: Updating on packet from server\n"););
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ "Stream: Updating on packet from server\n"););
lwssn->s5_state.session_flags |= SSNFLAG_SEEN_SERVER;
if (tcpssn->tcp_init)
{
listener = &tcpssn->client;
}
- STREAM5_DEBUG_WRAP(
+ STREAM_DEBUG_WRAP(
t = "Server";
l = "Client");
eventcode |= EVENT_4WHS;
}
/* If we picked this guy up midstream, finish the initialization */
- if ((lwssn->session_state & STREAM5_STATE_MIDSTREAM) &&
- !(lwssn->session_state & STREAM5_STATE_ESTABLISHED))
+ if ((lwssn->session_state & STREAM_STATE_MIDSTREAM) &&
+ !(lwssn->session_state & STREAM_STATE_ESTABLISHED))
{
FinishServerInit(p, tdb, tcpssn);
if((p->ptrs.tcph->th_flags & TH_ECE) &&
if (lwssn->s5_state.session_flags & SSNFLAG_SEEN_CLIENT)
{
// should TCP state go to established too?
- lwssn->session_state |= STREAM5_STATE_ESTABLISHED;
+ lwssn->session_state |= STREAM_STATE_ESTABLISHED;
lwssn->s5_state.session_flags |= SSNFLAG_ESTABLISHED;
- Stream5UpdatePerfBaseState(&sfBase, lwssn, TCP_STATE_ESTABLISHED);
+ StreamUpdatePerfBaseState(&sfBase, lwssn, TCP_STATE_ESTABLISHED);
}
}
if ( !lwssn->inner_server_ttl )
}
else
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
- "Stream5: Updating on packet from client\n"););
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ "Stream: Updating on packet from client\n"););
/* if we got here we had to see the SYN already... */
lwssn->s5_state.session_flags |= SSNFLAG_SEEN_CLIENT;
if (tcpssn->tcp_init)
listener = &tcpssn->server;
}
- STREAM5_DEBUG_WRAP(
+ STREAM_DEBUG_WRAP(
t = "Client";
l = "Server";);
- if ((lwssn->session_state & STREAM5_STATE_MIDSTREAM) &&
- !(lwssn->session_state & STREAM5_STATE_ESTABLISHED))
+ if ((lwssn->session_state & STREAM_STATE_MIDSTREAM) &&
+ !(lwssn->session_state & STREAM_STATE_ESTABLISHED))
{
/* Midstream and seen server. */
if (lwssn->s5_state.session_flags & SSNFLAG_SEEN_SERVER)
{
- lwssn->session_state |= STREAM5_STATE_ESTABLISHED;
+ lwssn->session_state |= STREAM_STATE_ESTABLISHED;
lwssn->s5_state.session_flags |= SSNFLAG_ESTABLISHED;
}
}
else if ( p->ptrs.tcph->is_syn_only() )
{
lwssn->s5_state.direction = FROM_CLIENT;
- lwssn->session_state = STREAM5_STATE_SYN;
+ lwssn->session_state = STREAM_STATE_SYN;
lwssn->set_ttl(p, true);
NewTcpSessionOnSyn(p, lwssn, tdb, config);
tcpStats.resyns++;
else if ( p->ptrs.tcph->is_syn_ack() )
{
lwssn->s5_state.direction = FROM_SERVER;
- lwssn->session_state = STREAM5_STATE_SYN_ACK;
+ lwssn->session_state = STREAM_STATE_SYN_ACK;
lwssn->set_ttl(p, false);
NewTcpSessionOnSynAck(p, lwssn, tdb, config);
tcpStats.resyns++;
lwssn->s5_state.session_flags = SSNFLAG_SEEN_SERVER;
}
}
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Got SYN pkt on reset ssn, re-SYN-ing\n"););
}
{
if ( talker && (talker->flags & TF_FORCE_FLUSH) )
{
- Stream5FlushTalker(p, lwssn);
+ StreamFlushTalker(p, lwssn);
talker->flags &= ~TF_FORCE_FLUSH;
}
if ( listener && (listener->flags & TF_FORCE_FLUSH) )
{
- Stream5FlushListener(p, lwssn);
+ StreamFlushListener(p, lwssn);
listener->flags &= ~TF_FORCE_FLUSH;
}
p->packet_flags |= PKT_IGNORE;
}
else
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Got data on SYN packet, not processing it\n"););
//EventDataOnSyn(config);
eventcode |= EVENT_DATA_ON_SYN;
return retcode;
}
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
" %s [talker] state: %s\n", t,
state_names[talker->s_mgr.state]););
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
" %s state: %s(%d)\n", l,
state_names[listener->s_mgr.state],
listener->s_mgr.state););
*/
if(!IsBetween(listener->l_unackd, listener->l_nxt_seq, tdb->ack))
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Pkt ack is out of bounds, bailing!\n"););
Discard();
NormalTrimPayloadIf(p, NORM_TCP_TRIM, 0, tdb);
}
}
- talker->flags |= Stream5GetTcpTimestamp(p, &tdb->ts, 0);
+ talker->flags |= StreamGetTcpTimestamp(p, &tdb->ts, 0);
if (tdb->ts == 0)
talker->flags |= TF_TSTAMP_ZERO;
*/
if(p->ptrs.tcph->th_flags & TH_RST)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"got RST\n"););
NormalTrimPayloadIf(p, NORM_TCP_TRIM, 0, tdb);
*/
if(ValidRstSynSent(listener, tdb))
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"got RST, closing talker\n"););
/* Reset is valid */
/* Mark session as reset... Leave it around so that any
*/
lwssn->s5_state.session_flags |= SSNFLAG_RESET;
talker->s_mgr.state = TCP_STATE_CLOSED;
- Stream5UpdatePerfBaseState(&sfBase, lwssn, TCP_STATE_CLOSING);
+ StreamUpdatePerfBaseState(&sfBase, lwssn, TCP_STATE_CLOSING);
/* Leave listener open, data may be in transit */
LogTcpEvents(eventcode);
MODULE_PROFILE_END(s5TcpStatePerfStats);
return retcode | ACTION_RST;
}
/* Reset not valid. */
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"bad sequence number, bailing\n"););
Discard();
eventcode |= EVENT_BAD_RST;
talker->ts_last_pkt = p->pkth->ts.tv_sec;
talker->ts_last = tdb->ts;
}
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Finish server init got called!\n"););
}
else
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Finish server init didn't get called!\n"););
}
* explicitly set the state
*/
listener->s_mgr.state = TCP_STATE_SYN_SENT;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Accepted SYN ACK\n"););
LogTcpEvents(eventcode);
MODULE_PROFILE_END(s5TcpStatePerfStats);
if(ValidRst(lwssn, listener, tdb))
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Got RST, bailing\n"););
if (
listener->s_mgr.state == TCP_STATE_CLOSE_WAIT ||
listener->s_mgr.state == TCP_STATE_CLOSING
) {
- Stream5FlushTalker(p, lwssn);
- Stream5FlushListener(p, lwssn);
+ StreamFlushTalker(p, lwssn);
+ StreamFlushListener(p, lwssn);
lwssn->free_application_data();
}
lwssn->s5_state.session_flags |= SSNFLAG_RESET;
talker->s_mgr.state = TCP_STATE_CLOSED;
talker->s_mgr.sub_state |= SUB_RST_SENT;
- Stream5UpdatePerfBaseState(&sfBase, lwssn, TCP_STATE_CLOSING);
+ StreamUpdatePerfBaseState(&sfBase, lwssn, TCP_STATE_CLOSING);
if ( Normalize_IsEnabled(NORM_TCP_IPS) )
listener->s_mgr.state = TCP_STATE_CLOSED;
return retcode | ACTION_RST;
}
/* Reset not valid. */
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"bad sequence number, bailing\n"););
Discard();
eventcode |= EVENT_BAD_RST;
if ( (listener->s_mgr.state >= TCP_STATE_ESTABLISHED) &&
!ValidSeq(p, lwssn, listener, tdb) )
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"bad sequence number, bailing\n"););
Discard();
NormalTrimPayloadIf(p, NORM_TCP_TRIM, 0, tdb);
if (ts_action != ACTION_NOTHING)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"bad timestamp, bailing\n"););
Discard();
// this packet was normalized elsewhere
/*
* update PAWS timestamps
*/
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"PAWS update tdb->seq %lu > listener->r_win_base %lu\n",
tdb->seq, listener->r_win_base););
if(got_ts && SEQ_EQ(listener->r_win_base, tdb->seq))
if((int32_t)(tdb->ts - talker->ts_last) >= 0 ||
(uint32_t)p->pkth->ts.tv_sec >= talker->ts_last_pkt+PAWS_24DAYS)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"updating timestamps...\n"););
talker->ts_last = tdb->ts;
talker->ts_last_pkt = p->pkth->ts.tv_sec;
}
else
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"not updating timestamps...\n"););
}
*/
if (listener->config->max_window && (tdb->win > listener->config->max_window))
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Got window that was beyond the allowed policy value, bailing\n"););
/* got a window too large, alert! */
eventcode |= EVENT_WINDOW_TOO_LARGE;
&& !(p->ptrs.tcph->th_flags & (TH_FIN|TH_RST))
&& !(lwssn->s5_state.session_flags & SSNFLAG_MIDSTREAM))
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Window slammed shut!\n"););
/* got a window slam alert! */
eventcode |= EVENT_WINDOW_SLAM;
if(talker->s_mgr.state_queue != TCP_STATE_NONE)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Found queued state transition on ack 0x%X, "
"current 0x%X!\n", talker->s_mgr.transition_seq,
tdb->ack););
if(tdb->ack == talker->s_mgr.transition_seq)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"accepting transition!\n"););
talker->s_mgr.state = talker->s_mgr.state_queue;
talker->s_mgr.state_queue = TCP_STATE_NONE;
*/
if(p->ptrs.tcph->th_flags & TH_ACK)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Got an ACK...\n"););
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
" %s [listener] state: %s\n", l,
state_names[listener->s_mgr.state]););
case TCP_STATE_SYN_SENT:
break;
case TCP_STATE_SYN_RCVD:
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"listener state is SYN_SENT...\n"););
if ( IsBetween(listener->l_unackd, listener->l_nxt_seq, tdb->ack) )
{
UpdateSsn(p, listener, talker, tdb);
lwssn->s5_state.session_flags |= SSNFLAG_ESTABLISHED;
- lwssn->session_state |= STREAM5_STATE_ESTABLISHED;
+ lwssn->session_state |= STREAM_STATE_ESTABLISHED;
listener->s_mgr.state = TCP_STATE_ESTABLISHED;
talker->s_mgr.state = TCP_STATE_ESTABLISHED;
- Stream5UpdatePerfBaseState(&sfBase, lwssn, TCP_STATE_ESTABLISHED);
+ StreamUpdatePerfBaseState(&sfBase, lwssn, TCP_STATE_ESTABLISHED);
/* Indicate this packet completes 3-way handshake */
p->packet_flags |= PKT_STREAM_TWH;
}
case TCP_STATE_FIN_WAIT_1:
UpdateSsn(p, listener, talker, tdb);
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"tdb->ack %X >= talker->r_nxt_ack %X\n",
tdb->ack, talker->r_nxt_ack););
if ( (p->ptrs.tcph->th_flags & TH_FIN) )
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"seq ok, setting state!\n"););
if (talker->s_mgr.state_queue == TCP_STATE_NONE)
}
else
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"bad ack!\n"););
}
break;
*/
if(p->dsize)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
" %s state: %s(%d) getting data\n", l,
state_names[listener->s_mgr.state],
listener->s_mgr.state););
}
else
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Queuing data on listener, t %s, l %s...\n",
flush_policy_names[talker->flush_policy],
flush_policy_names[listener->flush_policy]););
if(p->ptrs.tcph->th_flags & TH_FIN)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Got an FIN...\n"););
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
" %s state: %s(%d)\n", l,
state_names[talker->s_mgr.state],
talker->s_mgr.state););
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"checking ack (0x%X) vs nxt_ack (0x%X)\n",
tdb->end_seq, listener->r_win_base););
if(SEQ_LT(tdb->end_seq,listener->r_win_base))
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"FIN inside r_win_base, bailing\n"););
goto dupfin;
}
if ( !p->dsize )
CheckFlushPolicyOnData(tcpssn, talker, listener, p);
- Stream5UpdatePerfBaseState(&sfBase, tcpssn->flow, TCP_STATE_CLOSING);
+ StreamUpdatePerfBaseState(&sfBase, tcpssn->flow, TCP_STATE_CLOSING);
break;
case TCP_STATE_CLOSE_WAIT:
if ( (listener->s_mgr.expected_flags == TH_ACK) &&
SEQ_GEQ(end_seq, listener->s_mgr.transition_seq) )
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"FIN beyond previous, ignoring\n"););
eventcode |= EVENT_BAD_FIN;
LogTcpEvents(eventcode);
dupfin:
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
" %s [talker] state: %s\n", t,
state_names[talker->s_mgr.state]););
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
" %s state: %s(%d)\n", l,
state_names[listener->s_mgr.state],
listener->s_mgr.state););
(listener->s_mgr.state == TCP_STATE_TIME_WAIT && talker->s_mgr.state == TCP_STATE_TIME_WAIT))
{
//dropssn:
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Session terminating, flushing session buffers\n"););
if(p->packet_flags & PKT_FROM_SERVER)
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"flushing FROM_SERVER\n"););
if(talker->seg_bytes_logical)
{
}
else
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"flushing FROM_CLIENT\n"););
if(listener->seg_bytes_logical)
{
LogTcpEvents(eventcode);
/* The last ACK is a part of the session. Delete the session after processing is complete. */
TcpSessionCleanup(lwssn, 0);
- lwssn->session_state |= STREAM5_STATE_CLOSED;
+ lwssn->session_state |= STREAM_STATE_CLOSED;
MODULE_PROFILE_END(s5TcpStatePerfStats);
return retcode | ACTION_LWSSN_CLOSED;
}
{
uint32_t flushed = 0;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"In CheckFlushPolicyOnData\n"););
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Talker flush policy: %s\n",
flush_policy_names[talker->flush_policy]););
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Listener flush policy: %s\n",
flush_policy_names[listener->flush_policy]););
switch(listener->flush_policy)
{
case STREAM_FLPOLICY_IGNORE:
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"STREAM_FLPOLICY_IGNORE\n"););
return 0;
{
uint32_t flushed = 0;
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"In CheckFlushPolicyOnAck\n"););
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Talker flush policy: %s\n",
flush_policy_names[talker->flush_policy]););
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"Listener flush policy: %s\n",
flush_policy_names[listener->flush_policy]););
switch(talker->flush_policy)
{
case STREAM_FLPOLICY_IGNORE:
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
"STREAM_FLPOLICY_IGNORE\n"););
return 0;
return flushed;
}
-static void Stream5SeglistAddNode(StreamTracker *st, StreamSegment *prev,
+static void StreamSeglistAddNode(StreamTracker *st, StreamSegment *prev,
StreamSegment *ss)
{
tcpStats.segs_queued++;
#endif
}
-static int Stream5SeglistDeleteNode (StreamTracker* st, StreamSegment* seg)
+static int StreamSeglistDeleteNode (StreamTracker* st, StreamSegment* seg)
{
int ret;
assert(st && seg);
- STREAM5_DEBUG_WRAP( DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP( DebugMessage(DEBUG_STREAM_STATE,
"Dropping segment at seq %X, len %d\n",
seg->seq, seg->size););
return ret;
}
-static int Stream5SeglistDeleteNodeTrim (
+static int StreamSeglistDeleteNodeTrim (
StreamTracker* st, StreamSegment* seg, uint32_t flush_seq)
{
assert(st && seg);
if ( delta < seg->size )
{
- STREAM5_DEBUG_WRAP( DebugMessage(DEBUG_STREAM_STATE,
+ STREAM_DEBUG_WRAP( DebugMessage(DEBUG_STREAM_STATE,
"Left-Trimming segment at seq %X, len %d, delta %u\n",
seg->seq, seg->size, delta););
return 0;
}
}
- return Stream5SeglistDeleteNode(st, seg);
+ return StreamSeglistDeleteNode(st, seg);
}
/* Iterates through the packets that were reassembled for
return packets;
}
-int Stream5AddSessionAlertTcp(
+int StreamAddSessionAlertTcp(
Flow* lwssn, Packet* p,
uint32_t gid, uint32_t sid)
{
StreamTracker *st;
- Stream5AlertInfo* ai;
+ StreamAlertInfo* ai;
TcpSession *tcpssn = (TcpSession*)lwssn->session;
if (sfip_equals(p->ptrs.ip_api.get_src(),&tcpssn->flow->client_ip))
return 1;
}
-int Stream5CheckSessionAlertTcp(Flow *lwssn, Packet *p, uint32_t gid, uint32_t sid)
+int StreamCheckSessionAlertTcp(Flow *lwssn, Packet *p, uint32_t gid, uint32_t sid)
{
StreamTracker *st;
int i;
return iRet;
}
-int Stream5UpdateSessionAlertTcp (
+int StreamUpdateSessionAlertTcp (
Flow *lwssn, Packet *p,
uint32_t gid, uint32_t sid,
uint32_t event_id, uint32_t event_second)
for (i=0;i<st->alert_count;i++)
{
- Stream5AlertInfo* ai = st->alerts + i;
+ StreamAlertInfo* ai = st->alerts + i;
if ( ai->gid == gid &&
ai->sid == sid && SEQ_EQ(ai->seq, seq_num))
return -1;
}
-void Stream5SetExtraDataTcp (Flow* lwssn, Packet* p, uint32_t xid)
+void StreamSetExtraDataTcp (Flow* lwssn, Packet* p, uint32_t xid)
{
StreamTracker *st;
TcpSession *tcpssn = (TcpSession*)lwssn->session;
st->xtradata_mask |= BIT(xid);
}
-void Stream5ClearExtraDataTcp (Flow* lwssn, Packet* p, uint32_t xid)
+void StreamClearExtraDataTcp (Flow* lwssn, Packet* p, uint32_t xid)
{
StreamTracker *st;
TcpSession *tcpssn = (TcpSession*)lwssn->session;
st->xtradata_mask = 0;
}
-char Stream5GetReassemblyDirectionTcp(Flow *lwssn)
+char StreamGetReassemblyDirectionTcp(Flow *lwssn)
{
char dir = SSN_DIR_NONE;
TcpSession *tcpssn = NULL;
if ( tcpssn->server.flush_policy != STREAM_FLPOLICY_IGNORE )
{
- dir |= SSN_DIR_SERVER;
+ dir |= SSN_DIR_FROM_CLIENT;
}
if ( tcpssn->client.flush_policy != STREAM_FLPOLICY_IGNORE )
{
- dir |= SSN_DIR_CLIENT;
+ dir |= SSN_DIR_FROM_SERVER;
}
return dir;
}
-bool Stream5GetReassemblyFlushPolicyTcp(Flow *lwssn, char dir)
+bool StreamGetReassemblyFlushPolicyTcp(Flow *lwssn, char dir)
{
TcpSession *tcpssn = NULL;
tcpssn = (TcpSession*)lwssn->session;
- if (dir & SSN_DIR_CLIENT)
+ if (dir & SSN_DIR_FROM_CLIENT)
{
return (char)tcpssn->client.flush_policy != STREAM_FLPOLICY_IGNORE;
}
- if (dir & SSN_DIR_SERVER)
+ if (dir & SSN_DIR_FROM_SERVER)
{
return (char)tcpssn->server.flush_policy != STREAM_FLPOLICY_IGNORE;
}
return false;
}
-char Stream5IsStreamSequencedTcp(Flow *lwssn, char dir)
+char StreamIsStreamSequencedTcp(Flow *lwssn, char dir)
{
TcpSession *tcpssn = NULL;
tcpssn = (TcpSession*)lwssn->session;
- if (dir & SSN_DIR_CLIENT)
+ if (dir & SSN_DIR_FROM_CLIENT)
{
if ( tcpssn->server.flags & (TF_MISSING_PREV_PKT|TF_MISSING_PKT) )
return 0;
}
- if (dir & SSN_DIR_SERVER)
+ if (dir & SSN_DIR_FROM_SERVER)
{
if ( tcpssn->client.flags & (TF_MISSING_PREV_PKT|TF_MISSING_PKT) )
return 0;
/* This will falsly return SSN_MISSING_BEFORE on the first reassembed
* packet if reassembly for this direction was set mid-session */
-int Stream5MissingInReassembledTcp(Flow *lwssn, char dir)
+int StreamMissingInReassembledTcp(Flow *lwssn, char dir)
{
TcpSession *tcpssn = NULL;
tcpssn = (TcpSession *)lwssn->session;
- if (dir & SSN_DIR_CLIENT)
+ if (dir & SSN_DIR_FROM_CLIENT)
{
if ((tcpssn->server.flags & TF_MISSING_PKT) &&
(tcpssn->server.flags & TF_MISSING_PREV_PKT))
else if (tcpssn->server.flags & TF_MISSING_PKT)
return SSN_MISSING_AFTER;
}
- else if (dir & SSN_DIR_SERVER)
+ else if (dir & SSN_DIR_FROM_SERVER)
{
if ((tcpssn->client.flags & TF_MISSING_PKT) &&
(tcpssn->client.flags & TF_MISSING_PREV_PKT))
return SSN_MISSING_NONE;
}
-char Stream5PacketsMissingTcp(Flow *lwssn, char dir)
+char StreamPacketsMissingTcp(Flow *lwssn, char dir)
{
TcpSession *tcpssn = NULL;
tcpssn = (TcpSession *)lwssn->session;
- if (dir & SSN_DIR_CLIENT)
+ if (dir & SSN_DIR_FROM_CLIENT)
{
if (tcpssn->server.flags & TF_PKT_MISSED)
return 1;
}
- if (dir & SSN_DIR_SERVER)
+ if (dir & SSN_DIR_FROM_SERVER)
{
if (tcpssn->client.flags & TF_PKT_MISSED)
return 1;
if (sfip_equals(&flow->client_ip, ip) && (flow->client_port == port))
{
- if ((dir == SSN_DIR_CLIENT) && (flow->s5_state.direction == SSN_DIR_CLIENT))
+ if ((dir == SSN_DIR_FROM_CLIENT) && (flow->s5_state.direction == SSN_DIR_FROM_CLIENT))
{
/* Direction already set as client */
return;
}
else if (sfip_equals(&flow->server_ip, ip) && (flow->server_port == port))
{
- if ((dir == SSN_DIR_SERVER) && (flow->s5_state.direction == SSN_DIR_SERVER))
+ if ((dir == SSN_DIR_FROM_SERVER) && (flow->s5_state.direction == SSN_DIR_FROM_SERVER))
{
/* Direction already set as server */
return;
int status;
PROFILE_VARS;
- STREAM5_DEBUG_WRAP(
+ STREAM_DEBUG_WRAP(
char flagbuf[9];
CreateTCPFlagString(p->ptrs.tcph, flagbuf);
DebugMessage((DEBUG_STREAM|DEBUG_STREAM_STATE),
MODULE_PROFILE_START(s5TcpPerfStats);
if ( stream.blocked_session(flow, p) ||
- (flow->session_state & STREAM5_STATE_IGNORE) )
+ (flow->session_state & STREAM_STATE_IGNORE) )
{
MODULE_PROFILE_END(s5TcpPerfStats);
return ACTION_NOTHING;
if ( p->ptrs.tcph->is_syn_only() )
{
/* SYN only */
- flow->session_state = STREAM5_STATE_SYN;
+ flow->session_state = STREAM_STATE_SYN;
}
else
{
// Do nothing with this packet since we require a 3-way ;)
DEBUG_WRAP(
- DebugMessage(DEBUG_STREAM_STATE, "Stream5: Requiring 3-way "
+ DebugMessage(DEBUG_STREAM_STATE, "Stream: Requiring 3-way "
"Handshake, but failed to retrieve session object "
"for non SYN packet.\n"););
if (
!p->ptrs.tcph->is_syn_ack() &&
!p->dsize &&
- !(Stream5PacketHasWscale(p) & TF_WSCALE) )
+ !(StreamPacketHasWscale(p) & TF_WSCALE) )
{
MODULE_PROFILE_END(s5TcpPerfStats);
#ifdef REG_TEST
}
else
{
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
- "Stream5 TCP session timedout!\n"););
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ "Stream TCP session timedout!\n"););
/* Not reset, simply time'd out. Clean it up */
TcpSessionCleanup(flow, 1);
}
status = ProcessTcp(flow, p, &tdb, config);
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
- "Finished Stream5 TCP cleanly!\n"
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ "Finished Stream TCP cleanly!\n"
"---------------------------------------------------\n"););
if ( !(status & ACTION_LWSSN_CLOSED) )
{
DisableInspection(p);
- STREAM5_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
- "Stream5 Ignoring packet from %d. Session marked as ignore\n",
+ STREAM_DEBUG_WRAP(DebugMessage(DEBUG_STREAM_STATE,
+ "Stream Ignoring packet from %d. Session marked as ignore\n",
p->packet_flags & PKT_FROM_SERVER? "server" : "client"););
}
bool TcpSession::add_alert(Packet* p, uint32_t gid, uint32_t sid)
{
- return Stream5AddSessionAlertTcp(p->flow, p, gid, sid) != 0;
+ return StreamAddSessionAlertTcp(p->flow, p, gid, sid) != 0;
}
bool TcpSession::check_alerted(Packet* p, uint32_t gid, uint32_t sid)
{
- return Stream5CheckSessionAlertTcp(p->flow, p, gid, sid) != 0;
+ return StreamCheckSessionAlertTcp(p->flow, p, gid, sid) != 0;
}
//-------------------------------------------------------------------------
void tcp_show(StreamTcpConfig* tcp_config)
{
- Stream5PrintTcpConfig(tcp_config);
+ StreamPrintTcpConfig(tcp_config);
}