]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
stream: add state to string funcs
authorVictor Julien <victor@inliniac.net>
Fri, 3 Jul 2020 12:35:07 +0000 (14:35 +0200)
committerVictor Julien <victor@inliniac.net>
Tue, 7 Jul 2020 08:31:10 +0000 (10:31 +0200)
src/stream-tcp-private.h
src/stream-tcp.c
src/stream-tcp.h

index bd1f6d04ba6d468e6a393559dfeaa162c6c28360..c74feb601e72317448216ba926626f602623aec3 100644 (file)
@@ -134,7 +134,7 @@ typedef struct TcpStream_ {
 #define STREAM_LOG_PROGRESS(stream) (STREAM_BASE_OFFSET((stream)) + (stream)->log_progress_rel)
 
 /* from /usr/include/netinet/tcp.h */
-enum
+enum TcpState
 {
     TCP_NONE,
     TCP_LISTEN,
index ec3b7fa896412aa5251c23c04520c62b6b3a9a12..10cc5ccc014cd0009564f32c578c44a7224bc565 100644 (file)
@@ -6271,6 +6271,57 @@ void TcpSessionSetReassemblyDepth(TcpSession *ssn, uint32_t size)
     return;
 }
 
+const char *StreamTcpStateAsString(const enum TcpState state)
+{
+    const char *tcp_state = NULL;
+    switch (state) {
+        case TCP_NONE:
+            tcp_state = "none";
+            break;
+        case TCP_LISTEN:
+            tcp_state = "listen";
+            break;
+        case TCP_SYN_SENT:
+            tcp_state = "syn_sent";
+            break;
+        case TCP_SYN_RECV:
+            tcp_state = "syn_recv";
+            break;
+        case TCP_ESTABLISHED:
+            tcp_state = "established";
+            break;
+        case TCP_FIN_WAIT1:
+            tcp_state = "fin_wait1";
+            break;
+        case TCP_FIN_WAIT2:
+            tcp_state = "fin_wait2";
+            break;
+        case TCP_TIME_WAIT:
+            tcp_state = "time_wait";
+            break;
+        case TCP_LAST_ACK:
+            tcp_state = "last_ack";
+            break;
+        case TCP_CLOSE_WAIT:
+            tcp_state = "close_wait";
+            break;
+        case TCP_CLOSING:
+            tcp_state = "closing";
+            break;
+        case TCP_CLOSED:
+            tcp_state = "closed";
+            break;
+    }
+    return tcp_state;
+}
+
+const char *StreamTcpSsnStateAsString(const TcpSession *ssn)
+{
+    if (ssn == NULL)
+        return NULL;
+    return StreamTcpStateAsString(ssn->state);
+}
+
 #ifdef UNITTESTS
 
 #define SET_ISN(stream, setseq)             \
index 64a4f86bc00837660db35ee89c6e290e06496b04..653e8d3aa1d76a6fb2f35adee3aaca14ceded249 100644 (file)
@@ -140,6 +140,8 @@ void StreamReassembleRawUpdateProgress(TcpSession *ssn, Packet *p, uint64_t prog
 
 void StreamTcpDetectLogFlush(ThreadVars *tv, StreamTcpThread *stt, Flow *f, Packet *p, PacketQueueNoLock *pq);
 
+const char *StreamTcpStateAsString(const enum TcpState);
+const char *StreamTcpSsnStateAsString(const TcpSession *ssn);
 
 /** ------- Inline functions: ------ */