]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
seperating Decode Data from Codec
authorJosh <jrosenba@cisco.com>
Fri, 3 Oct 2014 15:54:04 +0000 (10:54 -0500)
committerJosh <jrosenba@cisco.com>
Fri, 3 Oct 2014 15:54:04 +0000 (10:54 -0500)
76 files changed:
CMakeLists.txt
extra/CMakeLists.txt
extra/FindSNORT.cmake
extra/src/inspectors/dpx.cc
src/codecs/ip/cd_auth.cc
src/codecs/ip/cd_dst_opts.cc
src/codecs/ip/cd_esp.cc
src/codecs/ip/cd_frag.cc
src/codecs/ip/cd_gre.cc
src/codecs/ip/cd_hop_opts.cc
src/codecs/ip/cd_icmp4.cc
src/codecs/ip/cd_icmp6.cc
src/codecs/ip/cd_igmp.cc
src/codecs/ip/cd_ipv4.cc
src/codecs/ip/cd_ipv6.cc
src/codecs/ip/cd_mobility.cc
src/codecs/ip/cd_no_next.cc
src/codecs/ip/cd_pgm.cc
src/codecs/ip/cd_routing.cc
src/codecs/ip/cd_sun_nd.cc
src/codecs/ip/cd_swipe.cc
src/codecs/ip/cd_tcp.cc
src/codecs/ip/cd_udp.cc
src/codecs/link/cd_arp.cc
src/codecs/link/cd_eapol.cc
src/codecs/link/cd_erspan2.cc
src/codecs/link/cd_erspan3.cc
src/codecs/link/cd_mpls.cc
src/codecs/link/cd_ppp_encap.cc
src/codecs/link/cd_pppoe.cc
src/codecs/link/cd_trans_bridge.cc
src/codecs/link/cd_vlan.cc
src/codecs/misc/cd_default.cc
src/codecs/misc/cd_gtp.cc
src/codecs/misc/cd_icmp4_ip.cc
src/codecs/misc/cd_icmp6_ip.cc
src/codecs/misc/cd_llc.cc
src/codecs/misc/cd_teredo.cc
src/codecs/root/cd_eth.cc
src/codecs/root/cd_i4l_rawip.cc
src/codecs/root/cd_linux_sll.cc
src/codecs/root/cd_null.cc
src/codecs/root/cd_ppp.cc
src/codecs/root/cd_raw4.cc
src/codecs/root/cd_raw6.cc
src/codecs/root/cd_slip.cc
src/codecs/root/cd_wlan.cc
src/codecs/template.cc
src/detection/fpdetect.cc
src/flow/flow_control.cc
src/flow/flow_key.cc
src/framework/codec.h
src/ips_options/ips_ack.cc
src/ips_options/ips_flags.cc
src/ips_options/ips_icmp_id.cc
src/ips_options/ips_icmp_seq.cc
src/ips_options/ips_icode.cc
src/ips_options/ips_itype.cc
src/ips_options/ips_seq.cc
src/ips_options/ips_window.cc
src/loggers/alert_csv.cc
src/loggers/unified2.cc
src/network_inspectors/arp_spoof/arp_spoof.cc
src/network_inspectors/normalize/norm.cc
src/network_inspectors/perf_monitor/perf_base.cc
src/network_inspectors/perf_monitor/perf_flow.cc
src/network_inspectors/port_scan/ps_detect.cc
src/protocols/packet.h
src/protocols/packet_manager.cc
src/protocols/tcp.h
src/service_inspectors/ftp_telnet/ftp_data.cc
src/service_inspectors/http_inspect/hi_main.cc
src/service_inspectors/http_inspect/hi_server.cc
src/service_inspectors/rpc_decode/rpc_decode.cc
src/stream/icmp/icmp_session.cc
src/stream/tcp/tcp_session.cc

index d0d7c048a0757fb69b370fe8ab3d6a80af563f7e..0f82d34f778fa2b5d0cee3f6f9231188c32ecb98 100644 (file)
@@ -34,9 +34,7 @@ add_subdirectory (lua)
 add_subdirectory (doc)
 
 
-
 # Miscelaneous stuff.  Does NOT directly effect snort's building environment
-
 include (cmake/packaging_data.cmake)
 include (cmake/create_pkg_config.cmake)
 
@@ -51,7 +49,7 @@ add_custom_target(uninstall
     COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
 
 
-# Test Plugins!!
+# Test plugins in the 'Extra' directory!!
 if (BUILD_EXTRA_PLUGINS)
     if (${CMAKE_GENERATOR} MATCHES "Make")
         add_subdirectory(extra)
index 1271063ec556226c9081c055c00be03d9934774e..7bc7539d7a506a462bb97b8d5609db82dc68d039 100644 (file)
@@ -33,6 +33,7 @@ else (BUILD_EXTRA_PLUGINS)
 
 
     # Some shared library flags for the two platforms which I am using
+    include(CheckCXXCompilerFlag)
     set(CMAKE_REQUIRED_FLAGS "-Wl,-undefined,dynamic_lookup")
     check_cxx_compiler_flag("" HAVE_DYNAMIC_LOOKUP)
     if(HAVE_DYNAMIC_LOOKUP)
index d448073a3834224dcbdbe70b6731aa22dc012e51..99c17ca09b0f8705682bdd6f394278390c12b208 100644 (file)
@@ -20,6 +20,7 @@ set(ERROR_MESSAGE
           -DSNORT_INCLUDE_DIR:PATH=/full/path/to/snort/include/dir
 
     3)  set the environment variable SNORT_DIR
+
     "
 )
 
index 8da9d4328348008b89b2e3b52e9f02eae2c4c231..2ba8672cf45921b94083de3ec3758616003a55f1 100644 (file)
@@ -94,7 +94,7 @@ void DpxPH::show(SnortConfig*)
 void DpxPH::eval(Packet* p)
 {
     // precondition - what we registered for
-    assert(IsUDP(p));
+    assert(p->is_udp());
 
     if ( p->ptrs.dp == port && p->dsize > max )
         SnortEventqAdd(DPX_GID, DPX_SID);
index eecb2d925e2e32d425850d9d50d7fe2559378aeb..97341af0152f8304400330ec7d6aebebb2f0f152 100644 (file)
@@ -67,7 +67,7 @@ public:
     ~AuthCodec(){};
 
     virtual void get_protocol_ids(std::vector<uint16_t>& v);
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
 };
 
 /*  Valid for both IPv4 and IPv6 */
@@ -92,7 +92,7 @@ void AuthCodec::get_protocol_ids(std::vector<uint16_t>& v)
     v.push_back(IPPROTO_ID_AUTH);
 }
 
-bool AuthCodec::decode(const RawData& raw, CodecData& codec, SnortData& snort)
+bool AuthCodec::decode(const RawData& raw, CodecData& codec, DecodeData& snort)
 {
 
     const AuthHdr* const ah = reinterpret_cast<const AuthHdr* const>(raw.data);
index 0f313e99f45ffb72fd0c5adaf207a52f97f77cb1..e6326620ad322e68712a0f929d5a6c3340b71f18 100644 (file)
@@ -46,7 +46,7 @@ public:
 
 
     virtual void get_protocol_ids(std::vector<uint16_t>& v);
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
     virtual bool update(Packet*, Layer*, uint32_t* len);
 
 };
@@ -62,7 +62,7 @@ struct IP6Dest
 } // anonymous namespace
 
 
-bool Ipv6DSTOptsCodec::decode(const RawData& raw, CodecData& codec, SnortData&)
+bool Ipv6DSTOptsCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
 {
     const IP6Dest* const dsthdr = reinterpret_cast<const IP6Dest *>(raw.data);
 
index 8d8ff71e6962fb57aee8792ba10b11b207a54702..ef6b554c97fa0d75df70997ca56848f7626d918e 100644 (file)
@@ -81,7 +81,7 @@ public:
 
 
     virtual void get_protocol_ids(std::vector<uint16_t>& v);
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
 };
 
 
@@ -109,7 +109,7 @@ void EspCodec::get_protocol_ids(std::vector<uint16_t>& v)
  *          the encryption type (or lack thereof).
  *
  */
-bool EspCodec::decode(const RawData& raw, CodecData& codec, SnortData& snort)
+bool EspCodec::decode(const RawData& raw, CodecData& codec, DecodeData& snort)
 {
     const uint8_t *esp_payload;
     uint8_t pad_length;
index 9e6beadac64fd506e7d3b5c119b02fb1b073c0cf..fff9b574d0c4a0c34f395fd67ce69efa8b4f9029 100644 (file)
@@ -49,7 +49,7 @@ public:
     ~Ipv6FragCodec() {};
 
 
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
 
     virtual void log(TextLog* const, const uint8_t* /*raw_pkt*/,
                     const Packet* const);
@@ -61,7 +61,7 @@ public:
 } // namespace
 
 
-bool Ipv6FragCodec::decode(const RawData& raw, CodecData& codec, SnortData& snort)
+bool Ipv6FragCodec::decode(const RawData& raw, CodecData& codec, DecodeData& snort)
 {
     const ip::IP6Frag* const ip6frag_hdr = reinterpret_cast<const ip::IP6Frag*>(raw.data);
 
index 9d7a11a967a88d5768f8bf970e14f10029f308fe..20387cbbe51268c7237d2dfc3eeab7cf20c9c0da 100644 (file)
@@ -64,7 +64,7 @@ public:
     ~GreCodec(){};
 
     virtual void get_protocol_ids(std::vector<uint16_t>& v);
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
      void log(TextLog* const, const uint8_t* /*raw_pkt*/,
                     const Packet* const);
 };
@@ -111,7 +111,7 @@ void GreCodec::get_protocol_ids(std::vector<uint16_t>& v)
  *
  * Notes: see RFCs 1701, 2784 and 2637
  */
-bool GreCodec::decode(const RawData& raw, CodecData& codec, SnortData&)
+bool GreCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
 {
     if (raw.len < GRE_HEADER_LEN)
     {
index d9139576e6ebbb0a4cfdf3eb2b3ceccdd931b28f..87be09e53e0b8562ab31963e6d85f383fdfd0c76 100644 (file)
@@ -46,7 +46,7 @@ public:
     ~Ipv6HopOptsCodec() {};
 
     virtual void get_protocol_ids(std::vector<uint16_t>& v);
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
     virtual bool update(Packet*, Layer*, uint32_t* len);
 };
 
@@ -67,7 +67,7 @@ struct IP6HopByHop
  * Class functions
  */
 
-bool Ipv6HopOptsCodec::decode(const RawData& raw, CodecData& codec, SnortData&)
+bool Ipv6HopOptsCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
 {
     const IP6HopByHop *hbh_hdr = reinterpret_cast<const IP6HopByHop*>(raw.data);
 
index e44f0dd6a81e36f0785474c2a3472da6c202e158..35e481e80206a9b27c34eb39e723ad60cbf8b450 100644 (file)
@@ -91,14 +91,14 @@ public:
     ~Icmp4Codec() {};
     
     virtual void get_protocol_ids(std::vector<uint16_t>&);
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
     virtual bool update(Packet*, Layer*, uint32_t* len);
     virtual void format(EncodeFlags, const Packet* p, Packet* c, Layer*);
     virtual void log(TextLog* const, const uint8_t* /*raw_pkt*/,
                     const Packet* const);
 
 private:
-    void ICMP4AddrTests(const SnortData& snort, const CodecData& codec);
+    void ICMP4AddrTests(const DecodeData& snort, const CodecData& codec);
     void ICMP4MiscTests(const ICMPHdr* const, const CodecData&, const uint16_t);
 
 };
@@ -126,7 +126,7 @@ void Icmp4Codec::get_protocol_ids(std::vector<uint16_t> &v)
  *
  * Returns: void function
  */
-bool Icmp4Codec::decode(const RawData& raw, CodecData& codec,SnortData& snort)
+bool Icmp4Codec::decode(const RawData& raw, CodecData& codec,DecodeData& snort)
 {
 
     if(raw.len < icmp::ICMP_HEADER_LEN)
@@ -246,7 +246,7 @@ bool Icmp4Codec::decode(const RawData& raw, CodecData& codec,SnortData& snort)
     return true;
 }
 
-void Icmp4Codec::ICMP4AddrTests(const SnortData& snort, const CodecData& codec)
+void Icmp4Codec::ICMP4AddrTests(const DecodeData& snort, const CodecData& codec)
 {
     uint32_t dst = snort.ip_api.get_dst()->ip32[0];
 
index 485f40fb0a8715484d5cefae18d0f7e82a5770c6..0687192d70be618060eb138e21d3c978c821554c 100644 (file)
@@ -79,7 +79,7 @@ public:
 
 
     virtual void get_protocol_ids(std::vector<uint16_t>& v);
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
     virtual bool update(Packet*, Layer*, uint32_t* len);
     virtual void format(EncodeFlags, const Packet*, Packet*, Layer*);
     virtual void log(TextLog* const, const uint8_t* /*raw_pkt*/,
@@ -97,7 +97,7 @@ void Icmp6Codec::get_protocol_ids(std::vector<uint16_t>& v)
 // decode.c::ICMP6
 //--------------------------------------------------------------------
 
-bool Icmp6Codec::decode(const RawData& raw, CodecData& codec, SnortData& snort)
+bool Icmp6Codec::decode(const RawData& raw, CodecData& codec, DecodeData& snort)
 {
     if(raw.len < icmp::ICMP6_HEADER_MIN_LEN)
     {
index 9062f329621b1a6c120e6edbd593b3d910b40190..24412a765ade425fd6764c706d00958e40eeb921 100644 (file)
@@ -62,7 +62,7 @@ public:
     ~IgmpCodec() {};
 
 
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
 
     virtual void get_protocol_ids(std::vector<uint16_t>&);
     virtual void get_data_link_type(std::vector<int>&){};
@@ -76,7 +76,7 @@ public:
 
 
 
-bool IgmpCodec::decode(const RawData& raw, CodecData& codec, SnortData& snort)
+bool IgmpCodec::decode(const RawData& raw, CodecData& codec, DecodeData& snort)
 {
     if (snort.ip_api.is_ip4() && raw.len >= 1 && raw.data[0] == 0x11)
     {
index f8e264ac167797d89a6b3c516a6d57a2b148a24e..8bb936f2efc76ab41f4f19851aad34cb3a1af1ef 100644 (file)
@@ -100,7 +100,7 @@ public:
     ~Ipv4Codec(){};
 
     virtual void get_protocol_ids(std::vector<uint16_t>& v);
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
     virtual void log(TextLog* const, const uint8_t* /*raw_pkt*/,
         const Packet* const);
     virtual bool encode(const uint8_t* const raw_in, const uint16_t raw_len,
@@ -135,7 +135,7 @@ void Ipv4Codec::get_protocol_ids(std::vector<uint16_t>& v)
 }
 
 
-bool Ipv4Codec::decode(const RawData& raw, CodecData& codec, SnortData& snort)
+bool Ipv4Codec::decode(const RawData& raw, CodecData& codec, DecodeData& snort)
 {
     uint32_t ip_len; /* length from the start of the ip hdr to the pkt end */
     uint16_t hlen;  /* ip header length */
index 130ae47542b0c1e64e0257777e06ffba312f2f8c..bd68fe5ffc31ff800eb733b36ac81552fb179f21 100644 (file)
@@ -93,7 +93,7 @@ public:
     ~Ipv6Codec(){};
 
     virtual void get_protocol_ids(std::vector<uint16_t>& v);
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
     virtual bool encode(const uint8_t* const raw_in, const uint16_t raw_len,
                         EncState&, Buffer&);
     virtual bool update(Packet*, Layer*, uint32_t* len);
@@ -107,9 +107,9 @@ public:
 
 
 static inline void IPV6CheckIsatap(const ip::IP6Hdr* const,
-                                    const SnortData&,
+                                    const DecodeData&,
                                     const CodecData&);
-static inline void IPV6MiscTests(const SnortData&, const CodecData&);
+static inline void IPV6MiscTests(const DecodeData&, const CodecData&);
 static void CheckIPV6Multicast(const ip::IP6Hdr* const, const CodecData&);
 static inline bool CheckTeredoPrefix(const ip::IP6Hdr* const hdr);
 
@@ -124,7 +124,7 @@ void Ipv6Codec::get_protocol_ids(std::vector<uint16_t>& v)
 }
 
 
-bool Ipv6Codec::decode(const RawData& raw, CodecData& codec, SnortData& snort)
+bool Ipv6Codec::decode(const RawData& raw, CodecData& codec, DecodeData& snort)
 {
     // FIXIT-L -J necessary for scoping until the 'goto' statements are deleted
     {
@@ -224,7 +224,7 @@ decodeipv6_fail:
 }
 
 static inline void IPV6CheckIsatap(const ip::IP6Hdr* const ip6h,
-                                    const SnortData& snort,
+                                    const DecodeData& snort,
                                     const CodecData& codec)
 {
     /* Only check for IPv6 over IPv4 */
@@ -250,7 +250,7 @@ static inline void IPV6CheckIsatap(const ip::IP6Hdr* const ip6h,
  *
  * Returns: void function
  */
-static inline void IPV6MiscTests(const SnortData& snort, const CodecData& codec)
+static inline void IPV6MiscTests(const DecodeData& snort, const CodecData& codec)
 {
     const sfip_t *ip_src = snort.ip_api.get_src();
     const sfip_t *ip_dst = snort.ip_api.get_dst();
index 717df0a006cd51d430e7f85c1303d9d14d3411e3..a27fdd94427aa30b4f93fce27cba02ef3742dfb3 100644 (file)
@@ -42,7 +42,7 @@ public:
 
 
     virtual void get_protocol_ids(std::vector<uint16_t>&);
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
 };
 
 } // namespace
@@ -53,7 +53,7 @@ void MobilityCodec::get_protocol_ids(std::vector<uint16_t>& v)
     v.push_back(IPPROTO_ID_MOBILITY);
 }
 
-bool MobilityCodec::decode(const RawData&, CodecData& codec, SnortData&)
+bool MobilityCodec::decode(const RawData&, CodecData& codec, DecodeData&)
 {
     codec_events::decoder_event(codec, DECODE_IP_BAD_PROTO);
     codec.proto_bits |= PROTO_BIT__IP6_EXT; // check for any IP related rules
index e1b4f4ceaaf473913df34d35f1fa5d9538f838c0..68c3032b1c6c580c09d12035daa54fdfba319b80 100644 (file)
@@ -45,7 +45,7 @@ public:
     ~Ipv6NoNextCodec() {};
 
 
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
     virtual void get_protocol_ids(std::vector<uint16_t>&);    
 };
 
@@ -53,7 +53,7 @@ public:
 } // namespace
 
 
-bool Ipv6NoNextCodec::decode(const RawData& raw, CodecData& codec, SnortData&)
+bool Ipv6NoNextCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
 {
     // No need ot check IPv6 extension order since this is automatically
     // the last extension.
index cda4988f7657c5249c51f4eb96835227b5c4effe..265886e624105b043353d0c952c4f957f20cc6ec 100644 (file)
@@ -59,7 +59,7 @@ public:
     PgmCodec() : Codec(CD_PGM_NAME){};
     ~PgmCodec() {};
 
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
     virtual void get_protocol_ids(std::vector<uint16_t>&);
 };
 
@@ -151,7 +151,7 @@ static inline int pgm_nak_detect (const RawData& raw)
 // private functions
 //-------------------------------------------------------------------------
 
-bool PgmCodec::decode(const RawData& raw, CodecData& codec, SnortData&)
+bool PgmCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
 {
     if ( pgm_nak_detect(raw) == PGM_NAK_VULN )
         codec_events::decoder_event(codec, DECODE_PGM_NAK_OVERFLOW);
index a1085c810ba6f9b33921f7258a92d5264ea2ca13..019a18908dab8ac1cb4ddc8c191e442768e7c37a 100644 (file)
@@ -47,7 +47,7 @@ public:
     ~Ipv6RoutingCodec() {};
 
 
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
 
     virtual void get_protocol_ids(std::vector<uint16_t>&);    
 };
@@ -78,7 +78,7 @@ struct IP6Route0
 } // namespace
 
 
-bool Ipv6RoutingCodec::decode(const RawData& raw, CodecData& codec, SnortData&)
+bool Ipv6RoutingCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
 {
     const IP6Route* const rte = reinterpret_cast<const IP6Route *>(raw.data);
 
index a03c36b8851042a3ac88e645f31a8bd5e9d7a7de..a097c2e17581ea245ece5fcf08aaf6a7711935ed 100644 (file)
@@ -43,7 +43,7 @@ public:
 
 
     virtual void get_protocol_ids(std::vector<uint16_t>&);
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
 
 };
 
@@ -57,7 +57,7 @@ void SunNdCodec::get_protocol_ids(std::vector<uint16_t>& v)
     v.push_back(IPPROTO_ID_SUN_ND);
 }
 
-bool SunNdCodec::decode(const RawData&, CodecData& codec, SnortData&)
+bool SunNdCodec::decode(const RawData&, CodecData& codec, DecodeData&)
 {
     codec_events::decoder_event(codec, DECODE_IP_BAD_PROTO);
     return true;
index 6d98acb9cb9a986290c8cd4a75d618514f5d643f..d7143d58dcc25c880264342696c4c42cf1061203 100644 (file)
@@ -40,7 +40,7 @@ public:
     virtual ~SwipeCodec(){};
     
     virtual void get_protocol_ids(std::vector<uint16_t>& v);
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
 };
 
 } // namespace
@@ -53,7 +53,7 @@ void SwipeCodec::get_protocol_ids(std::vector<uint16_t> &proto_ids)
 }
 
 
-bool SwipeCodec::decode(const RawData&, CodecData& codec, SnortData&)
+bool SwipeCodec::decode(const RawData&, CodecData& codec, DecodeData&)
 {
     // currently unsupported
     codec_events::decoder_event(codec, DECODE_IP_BAD_PROTO);
index 529a313c9b1dd6e4fce7ef38b261e4297e68f212..81c09669c0136b59290e03f46640be28ef872dc1 100644 (file)
@@ -97,7 +97,7 @@ public:
     virtual void get_protocol_ids(std::vector<uint16_t>& v);
     virtual void log(TextLog* const, const uint8_t* /*raw_pkt*/,
                     const Packet* const);
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
     virtual bool encode(const uint8_t* const raw_in, const uint16_t raw_len,
                         EncState&, Buffer&);
     virtual bool update(Packet*, Layer*, uint32_t* len);
@@ -117,7 +117,7 @@ static int OptLenValidate(const tcp::TcpOption* const opt,
 
 static void DecodeTCPOptions(const uint8_t *, uint32_t, CodecData&);
 static inline void TCPMiscTests(const tcp::TCPHdr* const tcph,
-                                const SnortData& snort,
+                                const DecodeData& snort,
                                 const CodecData& codec);
 
 void TcpCodec::get_protocol_ids(std::vector<uint16_t>& v)
@@ -125,7 +125,7 @@ void TcpCodec::get_protocol_ids(std::vector<uint16_t>& v)
     v.push_back(IPPROTO_ID_TCP);
 }
 
-bool TcpCodec::decode(const RawData& raw, CodecData& codec, SnortData& snort)
+bool TcpCodec::decode(const RawData& raw, CodecData& codec, DecodeData& snort)
 {
     if(raw.len < tcp::TCP_HEADER_LEN)
     {
@@ -521,7 +521,7 @@ static int OptLenValidate(const tcp::TcpOption* const opt,
 
 /* TCP-layer decoder alerts */
 static inline void TCPMiscTests(const tcp::TCPHdr* const tcph,
-                                const SnortData& snort,
+                                const DecodeData& snort,
                                 const CodecData& codec)
 {
     if ( ((tcph->th_flags & TH_NORESERVED) == TH_SYN ) &&
index 15cbc9a1712005b5542206b6b819702315aeafac..b3a103a1b7bdb621f78f1495319bd292c33f07bf 100644 (file)
@@ -120,7 +120,7 @@ public:
 
 
     virtual void get_protocol_ids(std::vector<uint16_t>& v);
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
 
     virtual bool encode(const uint8_t* const raw_in, const uint16_t raw_len,
                         EncState&, Buffer&);
@@ -137,7 +137,7 @@ public:
 
 
 
-static inline void UDPMiscTests(const SnortData&,
+static inline void UDPMiscTests(const DecodeData&,
                                 const CodecData&,
                                 uint32_t pay_len);
 
@@ -150,7 +150,7 @@ void UdpCodec::get_protocol_ids(std::vector<uint16_t>& v)
 }
 
 
-bool UdpCodec::decode(const RawData& raw, CodecData& codec, SnortData& snort)
+bool UdpCodec::decode(const RawData& raw, CodecData& codec, DecodeData& snort)
 {
     uint16_t uhlen;
     bool fragmented_udp_flag = false;
@@ -316,7 +316,7 @@ bool UdpCodec::decode(const RawData& raw, CodecData& codec, SnortData& snort)
 
 
 /* UDP-layer decoder alerts */
-static inline void UDPMiscTests(const SnortData& snort,
+static inline void UDPMiscTests(const DecodeData& snort,
                                 const CodecData& codec,
                                 uint32_t pay_len)
 {
index eef4d24dfe71692b4a6829fc8375e8c311e7fd39..d9b715ca6d2fc8bc831923386214e5935721b1d0 100644 (file)
@@ -56,7 +56,7 @@ public:
     ~ArpCodec(){};
 
     virtual void get_protocol_ids(std::vector<uint16_t>& v);
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
     virtual void format(EncodeFlags, const Packet*, Packet*, Layer*);
 };
 
@@ -87,7 +87,7 @@ void ArpCodec::get_protocol_ids(std::vector<uint16_t>& v)
  *
  * Returns: void function
  */
-bool ArpCodec::decode(const RawData& raw, CodecData& codec, SnortData& snort)
+bool ArpCodec::decode(const RawData& raw, CodecData& codec, DecodeData& snort)
 {
     if(raw.len < sizeof(arp::EtherARP))
     {
index 81b672886ea6af033f394456d1e08cbde98328db..738882882adb26e790c4a925d6265cba809ccd35 100644 (file)
@@ -61,7 +61,7 @@ public:
     ~EapolCodec() {};
 
 
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
     virtual void get_protocol_ids(std::vector<uint16_t>&);
 };
 
@@ -111,7 +111,7 @@ void DecodeEapolKey(const RawData& raw, const CodecData& codec)
  ************** main codec functions  ************
  *************************************************/
 
-bool EapolCodec::decode(const RawData& raw, CodecData& codec, SnortData&)
+bool EapolCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
 {
     const eapol::EtherEapol* const eplh =
         reinterpret_cast<const eapol::EtherEapol*>(raw.data);
index 9b3313875ced41d43808de0a52d3c4e671bb9dc4..2f2a470030a3eeb60a3cbfc2f5203e45da9aa79f 100644 (file)
@@ -56,7 +56,7 @@ public:
     ~Erspan2Codec(){};
 
     virtual void get_protocol_ids(std::vector<uint16_t>& v);
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
     
 };
 
@@ -95,7 +95,7 @@ void Erspan2Codec::get_protocol_ids(std::vector<uint16_t>& v)
  * Returns: void function
  *
  */
-bool Erspan2Codec::decode(const RawData& raw, CodecData& codec, SnortData& )
+bool Erspan2Codec::decode(const RawData& raw, CodecData& codec, DecodeData& )
 {
     const ERSpanType2Hdr* const erSpan2Hdr =
         reinterpret_cast<const ERSpanType2Hdr*>(raw.data);
index e75d40b35044cc47f5303c0de92675eca14ec57f..fe7301db866b39d365bb83ca4b85d67cd43322b6 100644 (file)
@@ -58,7 +58,7 @@ public:
 
 
     virtual void get_protocol_ids(std::vector<uint16_t>& v);
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
 };
 
 
@@ -107,7 +107,7 @@ void Erspan3Codec::get_protocol_ids(std::vector<uint16_t>& v)
  * Returns: void function
  *
  */
-bool Erspan3Codec::decode(const RawData& raw, CodecData& codec, SnortData&)
+bool Erspan3Codec::decode(const RawData& raw, CodecData& codec, DecodeData&)
 {
     const ERSpanType3Hdr* const erSpan3Hdr =
         reinterpret_cast<const ERSpanType3Hdr*>(raw.data);
index aa0e4b46435d15b2deaf549bd97111a18109fe2e..308f71771af41ac896e82ca1f6f5b2889d66cbeb 100644 (file)
@@ -116,7 +116,7 @@ public:
     ~MplsCodec(){};
 
     virtual void get_protocol_ids(std::vector<uint16_t>& v);
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
     virtual void log(TextLog* const, const uint8_t* /*raw_pkt*/,
         const Packet* const);
 };
@@ -140,7 +140,7 @@ void MplsCodec::get_protocol_ids(std::vector<uint16_t>& v)
 }
 
 
-bool MplsCodec::decode(const RawData& raw, CodecData& codec, SnortData& snort)
+bool MplsCodec::decode(const RawData& raw, CodecData& codec, DecodeData& snort)
 {
     uint32_t mpls_h;
     uint32_t label;
index 177d4eccb5dffc84557062f721ae2750a0e3ac35..961287037593cc5dcf58ce436a7b4b33e4d80594 100644 (file)
@@ -42,7 +42,7 @@ public:
     ~PppEncap(){};
 
     virtual void get_protocol_ids(std::vector<uint16_t>& v);
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
 };
 
 const static uint16_t PPP_IP = 0x0021;       /* Internet Protocol */
@@ -71,7 +71,7 @@ void PppEncap::get_protocol_ids(std::vector<uint16_t>& v)
  *
  * Returns: void function
  */
-bool PppEncap::decode(const RawData& raw, CodecData& codec, SnortData&)
+bool PppEncap::decode(const RawData& raw, CodecData& codec, DecodeData&)
 {
     static THREAD_LOCAL bool had_vj = false;
     uint16_t protocol;
index 5dcd0b8ae3b26ce88a2fe8aea15bb932880cf38f..c70e947625bd70650c2bbceffd99df8859231555 100644 (file)
@@ -106,7 +106,7 @@ constexpr uint16_t PPPoE_TAG_GENERIC_ERROR = 0x0203;
 
 static inline bool pppoepkt_decode(const RawData& raw,
                                     CodecData& codec,
-                                    SnortData&,
+                                    DecodeData&,
                                     PppoepktType ppp_type)
 {
     /* do a little validation */
@@ -297,7 +297,7 @@ public:
 
 
     virtual void get_protocol_ids(std::vector<uint16_t>& v);
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
     virtual bool encode(const uint8_t* const raw_in, const uint16_t raw_len,
                         EncState&, Buffer&);
 };
@@ -311,7 +311,7 @@ void PPPoEDiscCodec::get_protocol_ids(std::vector<uint16_t>& v)
 }
 
 
-bool PPPoEDiscCodec::decode(const RawData& raw, CodecData& codec, SnortData& snort)
+bool PPPoEDiscCodec::decode(const RawData& raw, CodecData& codec, DecodeData& snort)
 {
     return pppoepkt_decode(raw, codec, snort, PppoepktType::DISCOVERY);
 }
@@ -392,7 +392,7 @@ public:
 
 
     virtual void get_protocol_ids(std::vector<uint16_t>& v);
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
     virtual bool encode(const uint8_t* const raw_in, const uint16_t raw_len,
                         EncState&, Buffer&);
 };
@@ -404,7 +404,7 @@ void PPPoESessCodec::get_protocol_ids(std::vector<uint16_t>& v)
 { v.push_back(ETHERNET_TYPE_PPPoE_SESS); }
 
 
-bool PPPoESessCodec::decode(const RawData& raw, CodecData& codec, SnortData& snort)
+bool PPPoESessCodec::decode(const RawData& raw, CodecData& codec, DecodeData& snort)
 { return pppoepkt_decode(raw, codec, snort, PppoepktType::SESSION); }
 
 
index 5cb77f25c11c96da8b868e58ccea32a885587ea5..a4ebcb6c6724b830f16a7d7a31825e496e3fa8ab 100644 (file)
@@ -48,7 +48,7 @@ public:
 
 
     virtual void get_protocol_ids(std::vector<uint16_t>& v);
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
     
 };
 
@@ -77,7 +77,7 @@ void TransbridgeCodec::get_protocol_ids(std::vector<uint16_t>& v)
  * convention needed to be changed and the stuff at the beginning
  * wasn't needed since we are already deep into the packet
  */
-bool TransbridgeCodec::decode(const RawData& raw, CodecData& codec, SnortData&)
+bool TransbridgeCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
 {
     if(raw.len < eth::ETH_HEADER_LEN)
     {
index 35a9077659dd42348cb5d01e3bcb3038632e3697..5d86707b37a9d7fd7c173ed1d3ebef1a92bbfbbc 100644 (file)
@@ -66,7 +66,7 @@ public:
     ~VlanCodec(){};
 
     virtual void get_protocol_ids(std::vector<uint16_t>& v);
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
     virtual void log(TextLog* const, const uint8_t* /*raw_pkt*/,
         const Packet* const);
 };
@@ -83,7 +83,7 @@ void VlanCodec::get_protocol_ids(std::vector<uint16_t>& v)
 }
 
 
-bool VlanCodec::decode(const RawData& raw, CodecData& codec, SnortData&)
+bool VlanCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
 {
     if(raw.len < sizeof(vlan::VlanTagHdr))
     {
index 3a13a5b3c9a9b9fd9b3311ea90776317ff56e30f..46efaa8be0795b2ce37efe092581dd1152cda3c3 100644 (file)
@@ -38,7 +38,7 @@ public:
     virtual void get_protocol_ids(std::vector<uint16_t>& v)
     { v.push_back(FINISHED_DECODE); }
 
-    virtual bool decode(const RawData&, CodecData&, SnortData&)
+    virtual bool decode(const RawData&, CodecData&, DecodeData&)
     { return false; };
 };
 
index 6d5ad8721847c21622de0f868cbb898dd231f80d..29f9924026fbe1a3f5c55d397eeeaadaa90d331e 100644 (file)
@@ -70,7 +70,7 @@ public:
     ~GtpCodec(){};
 
     virtual void get_protocol_ids(std::vector<uint16_t>& v);
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
     virtual bool encode(const uint8_t* const raw_in, const uint16_t raw_len,
                         EncState&, Buffer&);
     virtual bool update(Packet*, Layer*, uint32_t* len);
@@ -106,7 +106,7 @@ void GtpCodec::get_protocol_ids(std::vector<uint16_t>& v)
  *
  */
 
-bool GtpCodec::decode(const RawData& raw, CodecData& codec, SnortData&)
+bool GtpCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
 {
     uint8_t  next_hdr_type;
     uint8_t  version;
index 55de3362452593321b27ea51f9be9967b350d8c5..2d0a18640e1191189e131b5c3199c7c5e118a0c2 100644 (file)
 #include "framework/codec.h"
 #include "protocols/ipv4.h"
 #include "protocols/packet.h"
+#include "protocols/tcp.h"
 #include "codecs/codec_events.h"
 #include "log/text_log.h"
 #include "main/snort.h"
 #include "log/messages.h"
 #include "protocols/packet_manager.h"
+#include "protocols/icmp4.h"
+#include "protocols/udp.h"
 
 namespace
 {
@@ -48,7 +51,7 @@ public:
 
 
     virtual void get_protocol_ids(std::vector<uint16_t>&);
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
     virtual void log(TextLog* const, const uint8_t* /*raw_pkt*/,
                     const Packet* const);
 };
@@ -61,7 +64,7 @@ void Icmp4IpCodec::get_protocol_ids(std::vector<uint16_t>& v)
     v.push_back(IP_EMBEDDED_IN_ICMP4);
 }
 
-bool Icmp4IpCodec::decode(const RawData& raw, CodecData& codec, SnortData& snort)
+bool Icmp4IpCodec::decode(const RawData& raw, CodecData& codec, DecodeData& snort)
 {
     uint32_t ip_len;       /* length from the start of the ip hdr to the
                              * pkt end */
index 8bc251a26611994b5329857e41b4bc106f33d81b..0be55eadfc3bcbf4289c61118a9086cb796d803e 100644 (file)
@@ -54,7 +54,7 @@ public:
 
 
     virtual void get_protocol_ids(std::vector<uint16_t>&);
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
 };
 
 } // namespace
@@ -64,7 +64,7 @@ void Icmp6IpCodec::get_protocol_ids(std::vector<uint16_t>& v)
     v.push_back(IP_EMBEDDED_IN_ICMP6);
 }
 
-bool Icmp6IpCodec::decode(const RawData& raw, CodecData& codec, SnortData&)
+bool Icmp6IpCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
 {
 //    uint16_t orig_frag_offset;
 
index 19e3416bf44e116311cfb1cca0a21d178d04af24..0421081eedecf222582c6b1e8c8678710e0dda7f 100644 (file)
@@ -50,7 +50,7 @@ public:
     ~LlcCodec() {};
 
 
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
 
     virtual void log(TextLog* const, const uint8_t* /*raw_pkt*/,
         const Packet* const);
@@ -89,7 +89,7 @@ void LlcCodec::get_protocol_ids(std::vector<uint16_t>& v)
     v.push_back(ETHERNET_LLC);
 }
 
-bool LlcCodec::decode(const RawData& raw, CodecData& codec, SnortData&)
+bool LlcCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
 {
     if(raw.len < sizeof(EthLlc))
     {
index 05aa7fea6855f55c0070f49b067d9be4c75cf438..c509f1aed8e07118177f560c46396c6268621b77 100644 (file)
@@ -50,7 +50,7 @@ public:
     ~TeredoCodec(){};
 
     virtual void get_protocol_ids(std::vector<uint16_t>& v);
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
 };
 
 } // anonymous namespace
@@ -61,7 +61,7 @@ void TeredoCodec::get_protocol_ids(std::vector<uint16_t>& v)
     v.push_back(PROTOCOL_TEREDO);
 }
 
-bool TeredoCodec::decode(const RawData& raw, CodecData& codec, SnortData& snort)
+bool TeredoCodec::decode(const RawData& raw, CodecData& codec, DecodeData& snort)
 {
     const uint8_t* raw_pkt = raw.data;
 
index 793e3afb1cbdfca4af1a190b4858f7874fe93398..447c346e80f5e5d143d5eeceb35562c9b4bf5995 100644 (file)
@@ -66,7 +66,7 @@ public:
     virtual void get_data_link_type(std::vector<int>&);
     virtual void log(TextLog* const, const uint8_t* /*raw_pkt*/,
         const Packet*const );
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
     virtual bool encode(const uint8_t* const raw_in, const uint16_t raw_len,
                         EncState&, Buffer&);
     virtual bool update(Packet*, Layer*, uint32_t* len);
@@ -108,7 +108,7 @@ void EthCodec::get_protocol_ids(std::vector<uint16_t>&v)
  *
  * Returns: void function
  */
-bool EthCodec::decode(const RawData& raw, CodecData& codec, SnortData&)
+bool EthCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
 {
 
     /* do a little validation */
index 74a79b3166f32d29c414432f7c36edfe17c01d00..6e9214d1a972927919c7f7091b585c1959c5029f 100644 (file)
@@ -45,7 +45,7 @@ public:
 
 
     virtual void get_data_link_type(std::vector<int>&);
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
 };
 
 
@@ -70,7 +70,7 @@ void I4LRawIpCodec::get_data_link_type(std::vector<int>& v)
  * Returns: void function
  */
 
-bool I4LRawIpCodec::decode(const RawData& raw, CodecData& codec, SnortData&)
+bool I4LRawIpCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
 {
     if(raw.len < 2)
         return false;
index 9245e8f278205b8cdb9700b6055ddf6666a3a5a1..db88376bc684f47fade58b69e3ad47862f0a9b21 100644 (file)
@@ -45,7 +45,7 @@ public:
 
 
     virtual void get_data_link_type(std::vector<int>&);
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
 };
 
 } // namespace
@@ -58,7 +58,7 @@ void LinuxSllCodec::get_data_link_type(std::vector<int>&v)
 #endif
 }
 
-bool LinuxSllCodec::decode(const RawData& raw, CodecData& data, SnortData&)
+bool LinuxSllCodec::decode(const RawData& raw, CodecData& data, DecodeData&)
 {
     /* do a little validation */
     if(raw.len < linux_sll::SLL_HDR_LEN)
index b5f97f145b82f7a625c87a49e3112165883c160a..61af816971bcad46be7b3b1496e97cb47332bf64 100644 (file)
@@ -45,7 +45,7 @@ public:
     ~NullCodec() {};
 
 
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
     virtual void get_data_link_type(std::vector<int>&);
 
 };
@@ -68,7 +68,7 @@ static const uint16_t NULL_HDRLEN = 4;
  *
  * Returns: void function
  */
-bool NullCodec::decode(const RawData& raw, CodecData& data, SnortData&)
+bool NullCodec::decode(const RawData& raw, CodecData& data, DecodeData&)
 {
     /* do a little validation */
     if(raw.len < NULL_HDRLEN)
index 93cb27cdfd0a7da9aa7a0ade87a1213fe4e68497..62893883907665bef768c77cf25697f5c5f7f7d9 100644 (file)
@@ -43,7 +43,7 @@ public:
     ~PPPCodec() {}
 
 
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
     virtual void get_data_link_type(std::vector<int>&);
 };
 
@@ -63,7 +63,7 @@ void PPPCodec::get_data_link_type(std::vector<int>& v)
 }
 
 
-bool PPPCodec::decode(const RawData& raw, CodecData& codec, SnortData&)
+bool PPPCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
 {
     if(raw.len < 2)
         return false;
index 490e64edc80961c3b0db988f95955d0037ea32f1..67664c37af99fdf7e4619da3b4fd1cf474ea402f 100644 (file)
@@ -42,7 +42,7 @@ public:
     ~Raw4Codec() {};
 
 
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
     virtual void get_data_link_type(std::vector<int>&);
 
 };
@@ -69,7 +69,7 @@ public:
  *
  * Returns: void function
  */
-bool Raw4Codec::decode(const RawData&, CodecData& data, SnortData&)
+bool Raw4Codec::decode(const RawData&, CodecData& data, DecodeData&)
 {
     data.next_prot_id = ETHERTYPE_IPV4;
     return true;
index 44ca0f7322691b749eba71ee5e57ae2e605fca42..3f0531212a20d9a9c68a798c1197d7e359f33732 100644 (file)
@@ -41,7 +41,7 @@ public:
     Raw6Codec() : Codec(CD_RAW6_NAME){};
     ~Raw6Codec() {};
 
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
     virtual void get_data_link_type(std::vector<int>&);
 
 };
@@ -51,7 +51,7 @@ public:
 
 
 // raw packets are predetermined to be ip4 (above) or ip6 (below) by the DLT
-bool Raw6Codec::decode(const RawData&, CodecData& data, SnortData&)
+bool Raw6Codec::decode(const RawData&, CodecData& data, DecodeData&)
 {
     data.next_prot_id = ETHERTYPE_IPV6;
     return true;
index b7f5117d170b7ee2fefdd36b2775fc59dd571d25..ef39a1f905d34bd63be132a500108e920ec524a2 100644 (file)
@@ -40,7 +40,7 @@ public:
     SlipCodec() : Codec(CD_SLIP_NAME){};
     ~SlipCodec() {};
 
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
     virtual void get_data_link_type(std::vector<int>&);
 };
 
@@ -55,7 +55,7 @@ void SlipCodec::get_data_link_type(std::vector<int>& v)
 }
 
 
-bool SlipCodec::decode(const RawData& raw, CodecData& codec, SnortData&)
+bool SlipCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
 {
     if (raw.len < SLIP_HEADER_LEN)
         return false;
index 008bdb8eb7e75c26d2431823102f27da047c0bbd..272ef817105e12eb556a5921197747c01504a0d2 100644 (file)
@@ -64,7 +64,7 @@ public:
     ~WlanCodec() {};
 
 
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
     virtual void get_data_link_type(std::vector<int>&);
     virtual void log(TextLog* const, const uint8_t* /*raw_pkt*/,
                     const Packet* const);
@@ -83,7 +83,7 @@ void WlanCodec::get_data_link_type(std::vector<int>&v)
 #endif
 }
 
-bool WlanCodec::decode(const RawData& raw, CodecData& codec, SnortData&)
+bool WlanCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
 {
     /* do a little validation */
     if(raw.len < MINIMAL_IEEE80211_HEADER_LEN)
index 0fb26ff4384f43684754549b57ec063316f45680..fd144f12d33934177e9b3fc53bb7ee6958280357 100644 (file)
@@ -115,7 +115,7 @@ public:
 
 
     // decode(...) must be implemented!!
-    virtual bool decode(const RawData&, CodecData&, SnortData&);
+    virtual bool decode(const RawData&, CodecData&, DecodeData&);
 
     virtual void log(TextLog*, const uint8_t* /*raw_pkt*/, const Packet* const);
     virtual void get_protocol_ids(std::vector<uint16_t>&);
@@ -150,7 +150,7 @@ void NameCodec::get_protocol_ids(std::vector<uint16_t>&/*v*/)
 //    v.push_back(ETHERTYPE);
 }
 
-bool NameCodec::decode(const RawData& raw, CodecData& data, SnortData&)
+bool NameCodec::decode(const RawData& raw, CodecData& data, DecodeData&)
 {
     // reinterpret the raw data into this codec's data format
     const NameHdr* const hdr =
index 5bd1c333cc878a67cc73253bc39cb9bcaf3ed388..a3e3da79e59cf010ca9fb2296a69f4a0f799dfe4 100644 (file)
 #include "managers/action_manager.h"
 #include "sfip/sf_ip.h"
 
+#include "protocols/tcp.h"
+#include "protocols/udp.h"
+#include "protocols/icmp4.h"
+
 /*
 **  Static function prototypes
 */
index 1efb0ab5574779bd3b8f340c1e1775f9f1bac6ad..3adbb0b5acbd52c4b701b0ec32ea51d38875fb7f 100644 (file)
 #include "protocols/vlan.h"
 #include "managers/inspector_manager.h"
 #include "sfip/sf_ip.h"
+#include "protocols/tcp.h"
+#include "protocols/udp.h"
+#include "protocols/icmp4.h"
+#include "protocols/icmp6.h"
 
 FlowControl::FlowControl()
 {
index 184b4df17e0327da492c081fc5798118b4e45f5b..e5ec3136f120eaf53d4e9e51a8b2b8d2238468df 100644 (file)
@@ -29,6 +29,8 @@
 #include "snort.h"
 #include "utils/util.h"
 #include "sfip/sf_ip.h"
+#include "protocols/icmp4.h"
+#include "protocols/icmp6.h"
 
 //-------------------------------------------------------------------------
 // init foo
index 126fcea19f3b8f006a13383109318f9a42d33fab..bf8a8a7c3eddc5cc9fd02be428cfa47c408c2632 100644 (file)
@@ -32,6 +32,7 @@
 // unfortunately necessary due to use of Ipapi in struct
 #include "protocols/ip.h"
 #include "protocols/mpls.h"  // FIXIT-M remove MPLS from Convenience pointers
+#include "framework/decode_data.h"
 
 struct TextLog;
 struct Packet;
@@ -196,96 +197,6 @@ struct RawData
 };
 
 
-enum DecodeFlags : std::uint16_t
-{
-    /*
-     * DO NOT USE PKT_TYPE_* directly!! Use PktType enum and
-     *      access methods to get/set.
-     *
-     * Since there are so few Packet Types, I decided to save
-     * some bytes (these get zeroes for every packet), and use
-     * the three least signfignat bits of 'decode_flags' as
-     * the packet_type. Unless you are adding a new PktType,
-     * I highly suggest you ignore this section and use
-     * the SnortData::xxx_pkt_type() setter and getter methods.
-     */
-    PKT_TYPE_UNKNOWN = 0x00,
-    PKT_TYPE_IP = 0x01,
-    PKT_TYPE_TCP = 0x02,
-    PKT_TYPE_UDP = 0x03,
-    PKT_TYPE_ICMP = 0x04,
-    PKT_TYPE_ARP = 0x05,
-    PKT_TYPE_FREE1 = 0x06, /* If protocol is added, update enum class PktType below. */
-    PKT_TYPE_FREE2 = 0x07, /* If protocol is added, update enum class PktType below. */
-    PKT_TYPE_MASK = 0x07,
-
-    /* error flags */
-    DECODE_ERR_CKSUM_IP = 0x0008,
-    DECODE_ERR_CKSUM_TCP = 0x0010,
-    DECODE_ERR_CKSUM_UDP = 0x0020,
-    DECODE_ERR_CKSUM_ICMP = 0x0040,
-    DECODE_ERR_CKSUM_ANY = 0x0080,
-    DECODE_ERR_BAD_TTL = 0x0100,
-    DECODE_ERR_FLAGS = (DECODE_ERR_CKSUM_IP | DECODE_ERR_CKSUM_TCP |
-                        DECODE_ERR_CKSUM_UDP | DECODE_ERR_CKSUM_UDP |
-                        DECODE_ERR_CKSUM_ICMP | DECODE_ERR_CKSUM_ANY |
-                        DECODE_ERR_BAD_TTL),
-
-
-    DECODE_PKT_TRUST = 0x0200,    /* Tell Snort++ to whitelist this packet */
-    DECODE_FRAG = 0x0400,  /* flag to indicate a fragmented packet */
-    DECODE_MF = 0x0800,
-};
-
-/* NOTE: if A protocol is added, update DecodeFlags! */
-enum class PktType : std::uint8_t
-{
-    UNKNOWN = PKT_TYPE_UNKNOWN,
-    IP = PKT_TYPE_IP,
-    TCP = PKT_TYPE_TCP,
-    UDP = PKT_TYPE_UDP,
-    ICMP = PKT_TYPE_ICMP,
-    ARP = PKT_TYPE_ARP,
-};
-
-struct SnortData
-{
-    /*  Pointers which will be used by Snort++. (starting with uint16_t so tcph is 64 bytes from start*/
-
-    /*
-     * these four pounters are each referenced literally
-     * dozens if not hundreds of times.  NOTHING else should be added!!
-     */
-    const tcp::TCPHdr* tcph;
-    const udp::UDPHdr* udph;
-    const icmp::ICMPHdr* icmph;
-    uint16_t sp;            /* source port (TCP/UDP) */
-    uint16_t dp;            /* dest port (TCP/UDP) */
-    uint16_t decode_flags;  /* First bits (currently 3), which are masked using the constant
-                             * DECODE_PKT_TYPE_MASK defined above, are specifically
-                             * for the PktType. Everything else is fair game flag.
-                             *
-                             */
-    ip::IpApi ip_api;
-    mpls::MplsHdr mplsHdr;
-
-    inline void reset()
-    {
-        static_assert(PKT_TYPE_UNKNOWN == 0,
-            "The Packets 'type' gets resets to zero - "
-            "which means zero is unkown");
-        memset((char*)&tcph, '\0', offsetof(SnortData, ip_api));
-        ip_api.reset();
-    }
-
-    inline void set_pkt_type(PktType pkt_type)
-    { decode_flags = (decode_flags & ~PKT_TYPE_MASK) | static_cast<uint16_t>(pkt_type); }
-
-    inline PktType get_pkt_type() const
-    { return static_cast<PktType>(decode_flags & PKT_TYPE_MASK); }
-};
-
-
 struct CodecData
 {
     /* This section will get reset before every decode() function call */
@@ -315,26 +226,6 @@ struct CodecData
     { next_prot_id = init_prot; }
 };
 
-#define PROTO_BIT__NONE     0x0000
-#define PROTO_BIT__IP       0x0001
-#define PROTO_BIT__ARP      0x0002
-#define PROTO_BIT__TCP      0x0004
-#define PROTO_BIT__UDP      0x0008
-#define PROTO_BIT__ICMP     0x0010
-#define PROTO_BIT__TEREDO   0x0020
-#define PROTO_BIT__GTP      0x0040
-#define PROTO_BIT__MPLS     0x0080
-#define PROTO_BIT__VLAN     0x0100
-#define PROTO_BIT__ETH      0x0200
-#define PROTO_BIT__TCP_EMBED_ICMP  0x0400
-#define PROTO_BIT__UDP_EMBED_ICMP  0x0800
-#define PROTO_BIT__ICMP_EMBED_ICMP 0x1000
-#define PROTO_BIT__ICMP_EMBED (PROTO_BIT__TCP_EMBED_ICMP | PROTO_BIT__UDP_EMBED_ICMP | PROTO_BIT__ICMP_EMBED_ICMP)
-#define PROTO_BIT__IP6_EXT  0x2000
-#define PROTO_BIT__FREE     0x4000
-#define PROTO_BIT__OTHER    0x8000
-#define PROTO_BIT__ALL      0xffff
-
 
 
 
@@ -419,11 +310,11 @@ public:
      *                          data.lyr_len = MIN_IP_HEADER_LEN + 12;
      *                          data.invalid_bytes = 8    === 20 - 12
      *
-     *      SnortData& = Data which will be sent to the rest of Snort++.
+     *      DecodeData& = Data which will be sent to the rest of Snort++.
      *                      contains convenience pointers and information
      *                      about this packet.
      **/
-    virtual bool decode(const RawData&, CodecData&, SnortData&)=0;
+    virtual bool decode(const RawData&, CodecData&, DecodeData&)=0;
 
     /*
      *  Log this layer's information
index 8a1f90537dcb0395cd6308fdb9429e121a7a30ae..dcdac7644d5b3fec3321bd842623ca8e93f5e6ea 100644 (file)
@@ -41,6 +41,7 @@
 #include "framework/parameter.h"
 #include "framework/module.h"
 #include "framework/range.h"
+#include "protocols/tcp.h"
 
 static const char* s_name = "ack";
 
index 97a448dc1b6aa6b54c69ea969d53f11756fbcd5e..5400b49b4e0159551556d92b31461d1ef16dd293 100644 (file)
@@ -42,6 +42,7 @@
 #include "framework/ips_option.h"
 #include "framework/parameter.h"
 #include "framework/module.h"
+#include "protocols/tcp.h"
 
 #define M_NORMAL  0
 #define M_ALL     1
index b45110b38cffe86e50eeb5b6ad1e8d252f42b176..155ea75f68e0af959f81a37f96b26b83320ad7ce 100644 (file)
@@ -58,6 +58,8 @@
 #include "framework/parameter.h"
 #include "framework/module.h"
 #include "framework/range.h"
+#include "protocols/icmp4.h"
+#include "protocols/icmp6.h"
 
 static const char* s_name = "icmp_id";
 
index 8e70187024354164aeb5650080f12ad233ce6ab9..4c86b773b98818cd64ae4e517dba123d2e39c4e5 100644 (file)
@@ -58,6 +58,8 @@
 #include "framework/parameter.h"
 #include "framework/module.h"
 #include "framework/range.h"
+#include "protocols/icmp4.h"
+#include "protocols/icmp6.h"
 
 static const char* s_name = "icmp_seq";
 
index a578e8c042c77c50fc14e8f939323c6ab13f7377..ca82959f5eb82a465646fc4d0549667503c22879 100644 (file)
@@ -38,6 +38,7 @@
 #include "framework/parameter.h"
 #include "framework/module.h"
 #include "framework/range.h"
+#include "protocols/icmp4.h"
 
 static const char* s_name = "icode";
 
index 6f8f49db1457dcca69af45e903a95ce56f74ff5c..94fd99433f46a2e80bae93710cfd954a45eb839e 100644 (file)
@@ -34,6 +34,7 @@
 #include "framework/parameter.h"
 #include "framework/module.h"
 #include "framework/range.h"
+#include "protocols/icmp4.h"
 
 static const char* s_name = "itype";
 
index fbfb8899b6388f6ec62b7705aba3dce930e78519..b0edb4f7000a9c39a8ee8e6f580d8fd51cb61736 100644 (file)
@@ -33,6 +33,7 @@
 #include "framework/parameter.h"
 #include "framework/module.h"
 #include "framework/range.h"
+#include "protocols/tcp.h"
 
 static const char* s_name = "seq";
 
index 4d3ecbc8d3ba23be9c19c4144fca5f7e35bbcf40..ade4654f8d3b42b1f885a19f981a4f923eb5aed6 100644 (file)
@@ -33,6 +33,7 @@
 #include "framework/parameter.h"
 #include "framework/module.h"
 #include "framework/range.h"
+#include "protocols/tcp.h"
 
 static const char* s_name = "window";
 
index 82329891d79d7fa34d034749eb3d0bcbe973d444..e8135d20f02679152cb98f7c8d2c2de1bf4b1e85 100644 (file)
 #include "snort.h"
 #include "log/text_log.h"
 #include "log/log_text.h"
+#include "protocols/tcp.h"
+#include "protocols/udp.h"
+#include "protocols/icmp4.h"
+#include "protocols/icmp6.h"
+#include "protocols/eth.h"
 
 #define LOG_BUFFER (4*K_BYTES)
 
index 951631aaae61662af3de0210d59192d4a219d3ad..9f1f4ecbd994dfae2f6be4d7f332da92520ff532 100644 (file)
@@ -64,6 +64,7 @@
 #include "stream/stream_api.h"
 #include "protocols/layer.h"
 #include "protocols/vlan.h"
+#include "protocols/icmp4.h"
 
 using namespace std;
 
index ec1368985d40efbaaeaba72ac61690d8bbe8da59..db1946146ce8d40cc18f7972929ea6724fb41834 100644 (file)
@@ -94,6 +94,7 @@
 #include "protocols/layer.h"
 #include "protocols/arp.h"
 #include "sfip/sf_ip.h"
+#include "protocols/eth.h"
 
 static const uint8_t bcast[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
 
index 44f5efb3d88c7dd17c93b1d1ffed2868c7afce26..4df453938c6ee12c7b61e8f1d9af465902e3efde 100644 (file)
@@ -35,6 +35,8 @@
 #include "protocols/ipv4_options.h"
 #include "protocols/tcp.h"
 #include "protocols/tcp_options.h"
+#include "protocols/icmp4.h"
+#include "protocols/icmp6.h"
 #include "stream/stream.h"
 
 typedef enum {
index f464067342a28bcc9034f365615fe3ed604a50e8..6ba33d2bd6bf1ca59bb2c1ae1fa279c76b634256 100644 (file)
@@ -65,6 +65,7 @@
 #include "perf.h"
 #include "stream/stream_api.h"
 #include "utils/stats.h"
+#include "protocols/tcp.h"
 
 static void GetPktDropStats(SFBASE *, SFBASE_STATS *);
 static void DisplayBasePerfStatsConsole(SFBASE_STATS *, int);
index 405514790e484bd9a7189eff963df809560cd266..4dbde2de2e025b939ff9c86b5b74e29e80c4cd71 100644 (file)
@@ -58,6 +58,7 @@
 #include "snort_types.h"
 #include "perf.h"
 #include "sfip/sf_ip.h"
+#include "protocols/icmp4.h"
 
 static void DisplayFlowStats(SFFLOW_STATS *sfFlowStats);
 static void WriteFlowStats(SFFLOW_STATS *, FILE *);
index 0807fc5b86c6aa4be06dcdba2428143af6eb8371..052ecca664e9f9a343cecc7b07c2932ef028ac7a 100644 (file)
 #include "ipobj.h"
 #include "stream/stream_api.h"
 #include "sfip/sf_ip.h"
+#include "protocols/tcp.h"
+#include "protocols/udp.h"
+#include "protocols/icmp4.h"
+#include "protocols/icmp6.h"
+#include "protocols/eth.h"
 
 typedef struct s_PS_HASH_KEY
 {
index 244f3073a0e776ccd5b4364f005dda779f2cb4b0..822689619eabfdbad7801d66d6790a713f236a81 100644 (file)
@@ -47,19 +47,8 @@ extern "C" {
 }
 
 #include "main/snort_types.h"
-
-#include "framework/codec.h"
-#include "protocols/tcp.h"
-#include "protocols/udp.h"
-#include "protocols/eth.h"
-#include "protocols/icmp4.h"
-#include "protocols/icmp6.h"
-#include "protocols/mpls.h"
-#include "protocols/ip.h"
+#include "framework/decode_data.h"
 #include "protocols/layer.h"
-#include "protocols/ipv4.h"
-#include "protocols/ipv6.h"
-
 
 /*  D E F I N E S  ************************************************************/
 
@@ -176,7 +165,7 @@ struct SO_PUBLIC Packet
     const uint8_t* data;        /* packet payload pointer */
     uint16_t dsize;             /* packet payload size */
 
-    SnortData ptrs; // convenience pointers used throughout Snort++
+    DecodeData ptrs; // convenience pointers used throughout Snort++
     Layer* layers;    /* decoded encapsulations */
 
 
@@ -257,7 +246,6 @@ struct SO_PUBLIC Packet
 #define PKT_ZERO_LEN offsetof(Packet, pkth)
 
 
-#define GET_PKT_SEQ(p) (ntohl(p->ptrs.tcph->th_seq))
 
 /* Macros to deal with sequence numbers - p810 TCP Illustrated vol 2 */
 #define SEQ_LT(a,b)  ((int)((a) - (b)) <  0)
index ff965bbaabf44e07f23788eb2ee9ba9acd555f09..7d6aeed30e05ad2f3312f2e58a2b9c07bdfbccda 100644 (file)
@@ -34,6 +34,8 @@
 #include "protocols/packet.h"
 #include "protocols/protocol_ids.h"
 #include "protocols/eth.h"
+#include "protocols/icmp4.h"
+#include "protocols/icmp6.h"
 #include "time/profiler.h"
 #include "parser/parser.h"
 
@@ -161,7 +163,7 @@ void PacketManager::decode(
     Packet* p, const DAQ_PktHdr_t* pkthdr, const uint8_t* pkt)
 {
     PROFILE_VARS;
-    SnortData unsure_encap_ptrs;
+    DecodeData unsure_encap_ptrs;
     uint16_t prev_prot_id = FINISHED_DECODE;
     uint8_t mapped_prot = CodecManager::grinder;
 
index 8dd701f3047872b6e7aa0323ef5fa07fbb89025a..14ee82b42df782d5d6554cade58b41cda424190c 100644 (file)
@@ -60,6 +60,7 @@
 #define TCP_MAXSEG    0x02    /* set maximum segment size */
 #define SOL_TCP        6    /* TCP level */
 
+#define GET_PKT_SEQ(p) (ntohl(p->ptrs.tcph->th_seq))
 
 namespace tcp
 {
index 4b6388507f2628ac5e68a7a9074be62a72e68778..b7addfb3b55a41c3db066bb8eb520d3fe2841af2 100644 (file)
@@ -50,6 +50,7 @@
 #include "framework/inspector.h"
 #include "framework/plug_data.h"
 #include "detection/detection_util.h"
+#include "protocols/tcp.h"
 
 static const char* s_name = "ftp_data";
 
index 2aaf35bab6b56749c5b6792a3435254da94f7353..08b1afec46cb40bb97dd6e9cc0b5879ae05cbc7c 100644 (file)
@@ -80,6 +80,7 @@
 #include "loggers/unified2_common.h"
 #include "file_api/file_api.h"
 #include "sf_email_attach_decode.h"
+#include "protocols/tcp.h"
 
 const HiSearchToken hi_patterns[] =
 {
index 0186a082b3699c61765bea1cb61af71550642fda..ee5dd59c310e9048799947e5600da45f0f2a2a3f 100644 (file)
@@ -55,6 +55,7 @@ static THREAD_LOCAL uint8_t dechunk_buffer[65535];
 #include "snort_bounds.h"
 #include "detection_util.h"
 #include "utils/util_unfold.h"
+#include "protocols/tcp.h"
 
 #define STAT_END 100
 #define HTTPRESP_HEADER_NAME__COOKIE "Set-Cookie"
index d6bb620be65e6961a5b6e0d5f1f73762e096b4df..2148d22b46d037c8da679fcac70f7b5adf18af54 100644 (file)
@@ -62,6 +62,7 @@
 #include "stream/stream_api.h"
 #include "stream/stream_splitter.h"
 #include "target_based/sftarget_protocol_reference.h"
+#include "protocols/tcp.h"
 
 #define RPC_MAX_BUF_SIZE   256
 #define RPC_FRAG_HDR_SIZE  sizeof(uint32_t)
index af4f3ca5d6a49da98254c0945d407f816744b160..56d88821d68ac445b7fb35dd141e7d8802b38842 100644 (file)
@@ -44,6 +44,8 @@
 #include "protocols/vlan.h"
 #include "protocols/ip.h"
 #include "protocols/icmp4.h"
+#include "protocols/udp.h"
+#include "protocols/tcp.h"
 #include "sfip/sf_ip.h"
 
 THREAD_LOCAL SessionStats icmpStats;
index bc6fc84eae2e59ef3bd3dba4cad26f919cf5db04..b3bd84ee04ff070c8aaea6a30e9a1fc2f81b4baa 100644 (file)
@@ -83,6 +83,8 @@
 #include "tcp_module.h"
 #include "stream/stream_splitter.h"
 #include "sfip/sf_ip.h"
+#include "protocols/tcp.h"
+#include "protocols/eth.h"
 
 using namespace tcp;