]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
Merge pull request #1769 in SNORT/snort3 from ~THOPETER/snort3:small_seg2 to master
authorMike Stepanek (mstepane) <mstepane@cisco.com>
Fri, 27 Sep 2019 16:32:18 +0000 (12:32 -0400)
committerMike Stepanek (mstepane) <mstepane@cisco.com>
Fri, 27 Sep 2019 16:32:18 +0000 (12:32 -0400)
Squashed commit of the following:

commit 9e8b9922d6aa9046b0eaa320af3d35679698060a
Author: Tom Peters <thopeter@cisco.com>
Date:   Thu Sep 19 17:04:44 2019 -0400

    stream: cleanup

src/stream/libtcp/tcp_segment_descriptor.cc
src/stream/libtcp/tcp_segment_descriptor.h
src/stream/libtcp/tcp_state_machine.cc
src/stream/libtcp/tcp_stream_session.cc
src/stream/libtcp/tcp_stream_tracker.h
src/stream/tcp/stream_tcp.cc
src/stream/tcp/tcp_session.cc
src/stream/tcp/tcp_stream_config.cc
src/stream/tcp/tcp_stream_config.h
src/stream/tcp/tcp_stream_state_machine.h
src/stream/udp/udp_session.cc

index 5986dc92f39c66b490d7f9d41a7143063ee62fbd..443bd9a9a567ffa7e3c5819dc8e496f807917192 100644 (file)
 
 using namespace snort;
 
-TcpSegmentDescriptor::TcpSegmentDescriptor(Flow* flow, Packet* pkt, TcpEventLogger& tel) :
-    flow(flow), pkt(pkt)
+TcpSegmentDescriptor::TcpSegmentDescriptor(Flow* flow_, Packet* pkt_, TcpEventLogger& tel) :
+    flow(flow_),
+    pkt(pkt_),
+    tcph(pkt->ptrs.tcph),
+    src_port(tcph->src_port()),
+    dst_port(tcph->dst_port()),
+    seg_seq(tcph->seq()),
+    seg_ack(tcph->ack()),
+    seg_wnd(tcph->win()),
+    end_seq(seg_seq + (uint32_t)pkt->dsize)
 {
-    tcph = pkt->ptrs.tcph;
-    src_port = tcph->src_port();
-    dst_port = tcph->dst_port();
-    seg_seq = tcph->seq();
-    seg_ack = tcph->ack();
-    seg_wnd = tcph->win();
-    end_seq = seg_seq + (uint32_t)pkt->dsize;
-    ts = 0;
-
     // don't bump end_seq for fin here we will bump if/when fin is processed
     if ( tcph->is_syn() )
     {
index 30c5181dfe372d8e42bf69354be95a391f4dd3b9..7e2fe2035a605849eb62ceb99c2af2e5160b9f76 100644 (file)
@@ -54,7 +54,7 @@ public:
 
     void set_seg_seq(uint32_t seq)
     {
-        this->seg_seq = seq;
+        seg_seq = seq;
     }
 
     void update_seg_seq(int32_t offset)
@@ -94,7 +94,7 @@ public:
 
     void scale_seg_wnd(uint16_t wscale)
     {
-        this->seg_wnd <<= wscale;
+        seg_wnd <<= wscale;
     }
 
     uint32_t get_seg_wnd() const
@@ -124,11 +124,13 @@ public:
 
     void set_seg_len(uint16_t seg_len)
     {
+        // Reset segment size to seg_len
         pkt->dsize = seg_len;
     }
 
     void update_seg_len(int32_t offset)
     {
+        // Increase segment size by offset
         pkt->dsize += offset;
     }
 
@@ -139,23 +141,24 @@ public:
 
     void slide_segment_in_rcv_window(int32_t offset)
     {
+        // This actually deletes the first offset bytes of the segment, no sliding involved
         seg_seq += offset;
         pkt->data += offset;
         pkt->dsize -= offset;
     }
 
 private:
-    snort::Flow* flow;
-    snort::Packet* pkt;
+    snort::Flow* const flow;
+    snort::Packet* const pkt;
 
-    const snort::tcp::TCPHdr* tcph;
-    uint16_t src_port;
-    uint16_t dst_port;
+    const snort::tcp::TCPHdr* const tcph;
+    const uint16_t src_port;
+    const uint16_t dst_port;
     uint32_t seg_seq;
-    uint32_t seg_ack;
+    const uint32_t seg_ack;
     uint32_t seg_wnd;
     uint32_t end_seq;
-    uint32_t ts;
+    uint32_t ts = 0;
 };
 
 #endif
index 9b1d887941163debfbf44242af3a82b40ad85f2f..a8bbdd6533d6ec9554d256428e02811fa255ce2a 100644 (file)
@@ -47,17 +47,17 @@ void TcpStateMachine::register_state_handler(TcpStreamTracker::TcpState state,
 bool TcpStateMachine::eval(TcpSegmentDescriptor& tsd, TcpStreamTracker& talker,
     TcpStreamTracker& listener)
 {
-    TcpStreamTracker::TcpState tcp_state = talker.get_tcp_state( );
+    const TcpStreamTracker::TcpState talker_state = talker.get_tcp_state( );
 
     talker.set_tcp_event(tsd);
-    if ( tcp_state_handlers[ tcp_state ]->do_pre_sm_packet_actions(tsd, talker) )
+    if ( tcp_state_handlers[ talker_state ]->do_pre_sm_packet_actions(tsd, talker) )
     {
-        if ( tcp_state_handlers[ tcp_state ]->eval(tsd, talker) )
+        if ( tcp_state_handlers[ talker_state ]->eval(tsd, talker) )
         {
-            tcp_state = listener.get_tcp_state( );
+            const TcpStreamTracker::TcpState listener_state = listener.get_tcp_state( );
             listener.set_tcp_event(tsd);
-            tcp_state_handlers[ tcp_state ]->eval(tsd, listener);
-            tcp_state_handlers[ tcp_state ]->do_post_sm_packet_actions(tsd, listener);
+            tcp_state_handlers[ listener_state ]->eval(tsd, listener);
+            tcp_state_handlers[ listener_state ]->do_post_sm_packet_actions(tsd, listener);
             return true;
         }
 
index 9da3ba3aa1629ce7d780f366a66988868f1db987..f6619bf952520396333cc152df39eabff11e6811 100644 (file)
@@ -244,7 +244,7 @@ void TcpStreamSession::update_direction(char dir, const SfIp* ip, uint16_t port)
     flow->server_port = tmpPort;
 
     SwapPacketHeaderFoo( );
-    TcpStreamTracker& tracker = client;
+    TcpStreamTracker tracker = client;
     client = server;
     server = tracker;
 }
index 50104c60816de94fb67ec1f1903e5c1b5e0f77dd..fd26b684666f661eb05c202828fc3d29fa15e8eb 100644 (file)
@@ -121,7 +121,7 @@ public:
     { return rcv_nxt; }
 
     void set_rcv_nxt(uint32_t rcv_nxt)
-    {  this->rcv_nxt = rcv_nxt; }
+    { this->rcv_nxt = rcv_nxt; }
 
     uint32_t get_rcv_wnd() const
     { return rcv_wnd; }
@@ -200,9 +200,8 @@ public:
 
     bool is_ack_valid(uint32_t cur)
     {
-        // FIXIT-H do we need this check? we've always seen something by the time we get here
         // If we haven't seen anything, ie, low & high are 0, return true
-        if ( ( snd_una == 0 ) && ( snd_una == snd_nxt ) )
+        if ( ( snd_una == 0 ) && ( snd_nxt == 0 ) )
             return true;
 
         return ( SEQ_GEQ(cur, snd_una) && SEQ_LEQ(cur, snd_nxt) );
index b973ab7e879ff66adaaf786e9a5a90bd45488f0c..8dedb1960d66e9e22f42b1e2945779068e0d949d 100644 (file)
@@ -49,13 +49,10 @@ public:
     NORETURN_ASSERT void eval(Packet*) override;
 
 public:
-    TcpStreamConfig* config;
+    TcpStreamConfig* const config;
 };
 
-StreamTcp::StreamTcp (TcpStreamConfig* c)
-{
-    config = c;
-}
+StreamTcp::StreamTcp (TcpStreamConfig* c) : config(c) {}
 
 StreamTcp::~StreamTcp()
 {
index 269f4b18c2d3c775ffd222081ff521dd20c70ce4..e09fa3764dee33c046177b57f5ca4eb36a2f19de 100644 (file)
@@ -96,7 +96,7 @@ bool TcpSession::setup(Packet* p)
     TcpStreamSession::setup(p);
     splitter_init = false;
 
-    TcpStreamConfig* pc = get_tcp_cfg(flow->ssn_server);
+    const TcpStreamConfig* pc = get_tcp_cfg(flow->ssn_server);
     flow->set_default_session_timeout(pc->session_timeout, false);
 
     SESSION_STATS_ADD(tcpStats);
index c62fea4c8bacac097df0fe7562dabca9eb0a29cc..f3383a9cfce68ead6aaa4af4a0739bfeaaf0be1d 100644 (file)
@@ -35,12 +35,12 @@ static const char* const reassembly_policy_names[] =
 
 TcpStreamConfig::TcpStreamConfig() = default;
 
-void TcpStreamConfig::show_config()
+void TcpStreamConfig::show_config() const
 {
     TcpStreamConfig::show_config(this);
 }
 
-void TcpStreamConfig::show_config(TcpStreamConfig* config)
+void TcpStreamConfig::show_config(const TcpStreamConfig* config)
 {
     LogMessage("Stream TCP Policy config:\n");
     LogMessage("    Reassembly Policy: %s\n",
index 6409ad5a57cd2b26896a1d53a4ae1001dc1ebe36..b30dccfec7636b5224f8c9098ccb340d7da6c1d7 100644 (file)
@@ -50,8 +50,8 @@ public:
         return false;
     }
 
-    void show_config();
-    static void show_config(TcpStreamConfig*);
+    void show_config() const;
+    static void show_config(const TcpStreamConfig*);
 
     StreamPolicy policy = StreamPolicy::OS_DEFAULT;
     ReassemblyPolicy reassembly_policy = ReassemblyPolicy::OS_DEFAULT;
index b9271f09d69425bb3792c4cd96c68ff2eac427bb..45ccda06c1eb9f9b6ec17f545e9ef0e807a787f9 100644 (file)
@@ -35,7 +35,6 @@ public:
 
 private:
     TcpStreamStateMachine();
-
 };
 #endif
 
index df1fe1ca4b7ca07ba213d975f25c2477e0647013..cb81e4064ac17a8c73b78f7d17fa2eb97ddbf104 100644 (file)
@@ -152,7 +152,7 @@ void UdpSession::update_direction(
     {
         if ((dir == SSN_DIR_FROM_CLIENT) && (flow->ssn_state.direction == FROM_CLIENT))
         {
-            /* Direction already set as CLIENT */
+            // Direction already set as CLIENT
             return;
         }
     }
@@ -160,12 +160,12 @@ void UdpSession::update_direction(
     {
         if ((dir == SSN_DIR_FROM_SERVER) && (flow->ssn_state.direction == FROM_SERVER))
         {
-            /* Direction already set as SERVER */
+            // Direction already set as SERVER
             return;
         }
     }
 
-    /* Swap them -- leave flow->ssn_state.direction the same */
+    // Swap them -- leave flow->ssn_state.direction the same
     tmpIp = flow->client_ip;
     tmpPort = flow->client_port;
     flow->client_ip = flow->server_ip;