]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
Merge pull request #1384 in SNORT/snort3 from perf_hackathon to master
authorMike Stepanek (mstepane) <mstepane@cisco.com>
Tue, 30 Oct 2018 14:13:45 +0000 (10:13 -0400)
committerMike Stepanek (mstepane) <mstepane@cisco.com>
Tue, 30 Oct 2018 14:13:45 +0000 (10:13 -0400)
Squashed commit of the following:

commit ec468c4887a072918feb9ada409d538d607ae4cf
Author: Masud Hasan <mashasan@cisco.com>
Date:   Wed Aug 29 22:48:21 2018 -0400

    snort: Code refactoring - replacing push_back/insert by emplace_back/emplace, keeping reputation_id in flow instead of flow_data, and appid code improvements

137 files changed:
src/codecs/ip/cd_auth.cc
src/codecs/ip/cd_bad_proto.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_tcp.cc
src/codecs/ip/cd_udp.cc
src/codecs/link/cd_arp.cc
src/codecs/link/cd_ciscometadata.cc
src/codecs/link/cd_erspan2.cc
src/codecs/link/cd_erspan3.cc
src/codecs/link/cd_fabricpath.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/misc/cd_user.cc
src/codecs/root/cd_eth.cc
src/codecs/root/cd_raw.cc
src/connectors/file_connector/file_connector_module.cc
src/connectors/tcp_connector/tcp_connector_module.cc
src/control/idle_processing.cc
src/detection/context_switcher.cc
src/detection/detection_engine.cc
src/detection/fp_utils.cc
src/detection/ips_context.h
src/detection/regex_offload.cc
src/detection/sfrim.cc
src/file_api/file_identifier.cc
src/file_api/file_module.cc
src/file_api/file_policy.cc
src/flow/expect_cache.cc
src/flow/flow.h
src/flow/flow_control.cc
src/framework/data_bus.cc
src/framework/parameter.cc
src/hash/lru_cache_shared.h
src/ips_options/ips_service.cc
src/loggers/alert_csv.cc
src/loggers/alert_fast.cc
src/loggers/alert_json.cc
src/loggers/alert_sf_socket.cc
src/main/control_mgmt.cc
src/main/policy.cc
src/main/snort_config.cc
src/managers/action_manager.cc
src/managers/codec_manager.cc
src/managers/connector_manager.cc
src/managers/event_manager.cc
src/managers/inspector_manager.cc
src/managers/ips_manager.cc
src/managers/module_manager.cc
src/managers/mpse_manager.cc
src/managers/script_manager.cc
src/managers/so_manager.cc
src/network_inspectors/appid/app_forecast.cc
src/network_inspectors/appid/app_forecast.h
src/network_inspectors/appid/appid_discovery.cc
src/network_inspectors/appid/appid_http_event_handler.cc
src/network_inspectors/appid/appid_peg_counts.cc
src/network_inspectors/appid/appid_session.cc
src/network_inspectors/appid/appid_session_api.h
src/network_inspectors/appid/appid_utils/network_set.cc
src/network_inspectors/appid/client_plugins/client_discovery.cc
src/network_inspectors/appid/detector_plugins/http_url_patterns.cc
src/network_inspectors/appid/detector_plugins/test/http_url_patterns_test.cc
src/network_inspectors/appid/ips_appid_option.cc
src/network_inspectors/appid/length_app_cache.cc
src/network_inspectors/appid/lua_detector_api.cc
src/network_inspectors/appid/service_plugins/service_discovery.cc
src/network_inspectors/appid/test/tp_mock.cc
src/network_inspectors/appid/tp_appid_module_api.h
src/network_inspectors/appid/tp_appid_session_api.h
src/network_inspectors/appid/tp_appid_utils.cc
src/network_inspectors/arp_spoof/arp_module.cc
src/network_inspectors/binder/bind_module.cc
src/network_inspectors/binder/binder.cc
src/network_inspectors/normalize/norm_module.cc
src/network_inspectors/packet_capture/packet_capture.cc
src/network_inspectors/packet_tracer/packet_tracer.cc
src/network_inspectors/perf_monitor/base_tracker.cc
src/network_inspectors/perf_monitor/csv_formatter.cc
src/network_inspectors/perf_monitor/fbs_formatter.cc
src/network_inspectors/perf_monitor/json_formatter.cc
src/network_inspectors/perf_monitor/perf_formatter.cc
src/network_inspectors/perf_monitor/perf_formatter.h
src/network_inspectors/perf_monitor/perf_module.cc
src/network_inspectors/perf_monitor/perf_monitor.cc
src/network_inspectors/perf_monitor/text_formatter.cc
src/network_inspectors/reputation/reputation_inspect.cc
src/network_inspectors/reputation/reputation_inspect.h
src/network_inspectors/reputation/reputation_parse.cc
src/packet_io/sfdaq_config.cc
src/packet_io/trough.cc
src/piglet/piglet_manager.cc
src/piglet/piglet_utils.h
src/piglet_plugins/pp_codec_iface.cc
src/profiler/profiler_nodes.h
src/protocols/packet_manager.cc
src/search_engines/acsmx.cc
src/search_engines/acsmx2.cc
src/search_engines/bnfa_search.cc
src/search_engines/hyperscan.cc
src/service_inspectors/ftp_telnet/ftp_module.cc
src/service_inspectors/gtp/gtp_module.cc
src/service_inspectors/smtp/smtp_module.cc
src/service_inspectors/wizard/curses.cc
src/service_inspectors/wizard/hexes.cc
src/service_inspectors/wizard/spells.cc
src/service_inspectors/wizard/wiz_module.cc
src/service_inspectors/wizard/wizard.cc
src/side_channel/side_channel.cc
src/side_channel/side_channel_module.cc
src/side_channel/test/side_channel_test.cc
src/stream/base/stream_ha.cc
src/stream/flush_bucket.cc
src/stream/user/user_session.cc
src/target_based/snort_protocols.cc
src/time/periodic.cc

index ac0ca99ff3d3ec840859a3c95239cdeb94d9c3d9..bad9ec28cb32916fa01c3ee8eba6532043d05f2a 100644 (file)
@@ -77,7 +77,7 @@ constexpr uint8_t MIN_AUTH_LEN = 16; // this is in minimum number of bytes ...
 } // anonymous namespace
 
 void AuthCodec::get_protocol_ids(std::vector<ProtocolId>& v)
-{ v.push_back(ProtocolId::AUTH); }
+{ v.emplace_back(ProtocolId::AUTH); }
 
 bool AuthCodec::decode(const RawData& raw, CodecData& codec, DecodeData& snort)
 {
index 731ebd434812f1e33f1521d76a28757f86736d04..e395cea72a0b1e489b611dd279569717c92f8ea3 100644 (file)
@@ -43,10 +43,10 @@ public:
 
 void BadProtocalCodec::get_protocol_ids(std::vector<ProtocolId>& proto_ids)
 {
-    proto_ids.push_back(ProtocolId::SWIPE);
-    proto_ids.push_back(ProtocolId::MOBILITY);
-    proto_ids.push_back(ProtocolId::SUN_ND);
-    proto_ids.push_back(ProtocolId::PIM);
+    proto_ids.emplace_back(ProtocolId::SWIPE);
+    proto_ids.emplace_back(ProtocolId::MOBILITY);
+    proto_ids.emplace_back(ProtocolId::SUN_ND);
+    proto_ids.emplace_back(ProtocolId::PIM);
 }
 
 bool BadProtocalCodec::decode(const RawData&, CodecData& codec, DecodeData&)
index 6719e3a90a8d0b6893d98bffe9daeb83479f8a9b..2211451a11f08eca67664981d3b62f68db8dd116 100644 (file)
@@ -88,7 +88,7 @@ bool Ipv6DSTOptsCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
 }
 
 void Ipv6DSTOptsCodec::get_protocol_ids(std::vector<ProtocolId>& v)
-{ v.push_back(ProtocolId::DSTOPTS); }
+{ v.emplace_back(ProtocolId::DSTOPTS); }
 
 //-------------------------------------------------------------------------
 // api
index f7f862d79ffafbbccff380b2d809b1c70a717902..408d0749726ea80a4431e06bd83c8bf3f6d9cbd6 100644 (file)
@@ -82,7 +82,7 @@ constexpr uint32_t ESP_TRAILER_LEN = 2;
 } // anonymous namespace
 
 void EspCodec::get_protocol_ids(std::vector<ProtocolId>& v)
-{ v.push_back(ProtocolId::ESP); }
+{ v.emplace_back(ProtocolId::ESP); }
 
 /*
  * Attempt to decode Encapsulated Security Payload.
index db9c7970856bf4cb15be010f337c6d6b3df96cf3..39b1d207bcade607ef6f8d82f2e15c7f142d5523 100644 (file)
@@ -128,7 +128,7 @@ bool Ipv6FragCodec::decode(const RawData& raw, CodecData& codec, DecodeData& sno
 }
 
 void Ipv6FragCodec::get_protocol_ids(std::vector<ProtocolId>& v)
-{ v.push_back(ProtocolId::FRAGMENT); }
+{ v.emplace_back(ProtocolId::FRAGMENT); }
 
 void Ipv6FragCodec::log(TextLog* const text_log, const uint8_t* raw_pkt,
     const uint16_t /*lyr_len*/)
index dfb383261741f308356872ecbdf985aa45278b7e..c7d04b039ca5f7d9bed4c240fb8fbc71eb70217a 100644 (file)
@@ -89,7 +89,7 @@ static const uint32_t GRE_V1_ACK_LEN = 4;
 } // anonymous namespace
 
 void GreCodec::get_protocol_ids(std::vector<ProtocolId>& v)
-{ v.push_back(ProtocolId::GRE); }
+{ v.emplace_back(ProtocolId::GRE); }
 
 /*
  * see RFCs 1701, 2784 and 2637
index 7c8537fb802d880d6111509ca4eca2d01ea27954..b0f42bc78f92dcb85ed7bd31d49c3e15270c67c2 100644 (file)
@@ -92,7 +92,7 @@ bool Ipv6HopOptsCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
 
 void Ipv6HopOptsCodec::get_protocol_ids(std::vector<ProtocolId>& v)
 {
-    v.push_back(ProtocolId::HOPOPTS);
+    v.emplace_back(ProtocolId::HOPOPTS);
 }
 
 //-------------------------------------------------------------------------
index 188854b0ddf457ee6d99b83674ec272a4a4fe7c8..3d299a8a147e33467d240dad08337c176b107a9c 100644 (file)
@@ -120,7 +120,7 @@ private:
 } // namespace
 
 void Icmp4Codec::get_protocol_ids(std::vector<ProtocolId>& v)
-{ v.push_back(ProtocolId::ICMPV4); }
+{ v.emplace_back(ProtocolId::ICMPV4); }
 
 bool Icmp4Codec::decode(const RawData& raw, CodecData& codec,DecodeData& snort)
 {
index 8b8995690195ff39016190e470a2cd73e62877c1..0330c27741a7eaa7ef5fe4e9d112b4acadad0978 100644 (file)
@@ -107,7 +107,7 @@ public:
 } // anonymous namespace
 
 void Icmp6Codec::get_protocol_ids(std::vector<ProtocolId>& v)
-{ v.push_back(ProtocolId::ICMPV6); }
+{ v.emplace_back(ProtocolId::ICMPV6); }
 
 bool Icmp6Codec::decode(const RawData& raw, CodecData& codec, DecodeData& snort)
 {
index 8973073f48113af663a9a5872bdab5afa72e87f7..179454160031460841f9047be7517305e7f63f36 100644 (file)
@@ -85,7 +85,7 @@ bool IgmpCodec::decode(const RawData& raw, CodecData& codec, DecodeData& snort)
 
 void IgmpCodec::get_protocol_ids(std::vector<ProtocolId>& v)
 {
-    v.push_back(ProtocolId::IGMP);
+    v.emplace_back(ProtocolId::IGMP);
 }
 
 //-------------------------------------------------------------------------
index a904ff57d985165ad5ff1c84ce21be74b49ea3c0..3817fd6246c103bfed89b998b9a58190c3de8564 100644 (file)
@@ -127,13 +127,13 @@ private:
 
 void Ipv4Codec::get_data_link_type(std::vector<int>& v)
 {
-    v.push_back(DLT_IPV4);
+    v.emplace_back(DLT_IPV4);
 }
 
 void Ipv4Codec::get_protocol_ids(std::vector<ProtocolId>& v)
 {
-    v.push_back(ProtocolId::ETHERTYPE_IPV4);
-    v.push_back(ProtocolId::IPIP);
+    v.emplace_back(ProtocolId::ETHERTYPE_IPV4);
+    v.emplace_back(ProtocolId::IPIP);
 }
 
 bool Ipv4Codec::decode(const RawData& raw, CodecData& codec, DecodeData& snort)
index ac3cbc944c5f0263a646b760aa06253ec6d5ee26..d05cd5557450c31ebedba917c51cc9b0d0d533d6 100644 (file)
@@ -115,13 +115,13 @@ private:
 
 void Ipv6Codec::get_data_link_type(std::vector<int>& v)
 {
-    v.push_back(DLT_IPV6);
+    v.emplace_back(DLT_IPV6);
 }
 
 void Ipv6Codec::get_protocol_ids(std::vector<ProtocolId>& v)
 {
-    v.push_back(ProtocolId::ETHERTYPE_IPV6);
-    v.push_back(ProtocolId::IPV6);
+    v.emplace_back(ProtocolId::ETHERTYPE_IPV6);
+    v.emplace_back(ProtocolId::IPV6);
 }
 
 bool Ipv6Codec::decode(const RawData& raw, CodecData& codec, DecodeData& snort)
index d45da388cd8803f3e5abfff6b115df26d18852f2..9e7fe8194e2f0cf28e8c36dbeb880647cfeb5578 100644 (file)
@@ -54,7 +54,7 @@ struct MobileIPV6Header  // RFC 6275
 
 void MobilityCodec::get_protocol_ids(std::vector<ProtocolId>& v)
 {
-    v.push_back(ProtocolId::MOBILITY_IPV6);
+    v.emplace_back(ProtocolId::MOBILITY_IPV6);
 }
 
 bool MobilityCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
index 209d5632b6271f735ae9693a668a7fe61a94befe..448c0e6e96a68e46a67f3d9e39eebe11e84a60f5 100644 (file)
@@ -68,7 +68,7 @@ bool Ipv6NoNextCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
 }
 
 void Ipv6NoNextCodec::get_protocol_ids(std::vector<ProtocolId>& v)
-{ v.push_back(ProtocolId::NONEXT); }
+{ v.emplace_back(ProtocolId::NONEXT); }
 
 //-------------------------------------------------------------------------
 // api
index add4c93f3b09c90ea10d247aaab58a3da497790b..7d0ae0b6e4aca9fd0d52bac87992274d3a3a41cd 100644 (file)
@@ -151,7 +151,7 @@ bool PgmCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
 
 void PgmCodec::get_protocol_ids(std::vector<ProtocolId>& v)
 {
-    v.push_back(ProtocolId::PGM);
+    v.emplace_back(ProtocolId::PGM);
 }
 
 //-------------------------------------------------------------------------
index b298ad01694615001b92108e60af2b232c7e73a1..7d11aa1907dd8aa3867762ef9c2eded6f7682908 100644 (file)
@@ -68,7 +68,7 @@ struct IP6Route0
 } // namespace
 
 void Ipv6RoutingCodec::get_protocol_ids(std::vector<ProtocolId>& v)
-{ v.push_back(ProtocolId::ROUTING); }
+{ v.emplace_back(ProtocolId::ROUTING); }
 
 bool Ipv6RoutingCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
 {
index 56238f6fe8f34b2cff24f7e34c0285b397501d12..edfee619cad4f8e587d567974758fc1254414635 100644 (file)
@@ -141,7 +141,7 @@ static sfip_var_t* SynToMulticastDstIp = nullptr;
 
 void TcpCodec::get_protocol_ids(std::vector<ProtocolId>& v)
 {
-    v.push_back(ProtocolId::TCP);
+    v.emplace_back(ProtocolId::TCP);
 }
 
 bool TcpCodec::decode(const RawData& raw, CodecData& codec, DecodeData& snort)
index 13988bd20e908af02de8cb1edde0c5e987fa3807..3351a0fca41637cbe057becfcd54dbf834792df5 100644 (file)
@@ -154,7 +154,7 @@ private:
 
 void UdpCodec::get_protocol_ids(std::vector<ProtocolId>& v)
 {
-    v.push_back(ProtocolId::UDP);
+    v.emplace_back(ProtocolId::UDP);
 }
 
 bool UdpCodec::decode(const RawData& raw, CodecData& codec, DecodeData& snort)
index 60eb3d1b12c4e8bb1cbe8e6c355584be1841409f..c2ae6b66631515efb4a123e7689c03308010d9f8 100644 (file)
@@ -60,8 +60,8 @@ public:
 
 void ArpCodec::get_protocol_ids(std::vector<ProtocolId>& v)
 {
-    v.push_back(ProtocolId::ETHERTYPE_ARP);
-    v.push_back(ProtocolId::ETHERTYPE_REVARP);
+    v.emplace_back(ProtocolId::ETHERTYPE_ARP);
+    v.emplace_back(ProtocolId::ETHERTYPE_REVARP);
 }
 
 bool ArpCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
index 31b14f42e55f5e947c2338d9d7c8861d89a8ddf6..efa63ec979c04ca64744044828c90f2eaa3d9028 100644 (file)
@@ -76,7 +76,7 @@ constexpr uint16_t CISCO_META_OPT_TYPE_MASK = 0x1FFF; //mask opt_len_type to get
 } // namespace
 
 void CiscoMetaDataCodec::get_protocol_ids(std::vector<ProtocolId>& v)
-{ v.push_back(ProtocolId::ETHERTYPE_CISCO_META); }
+{ v.emplace_back(ProtocolId::ETHERTYPE_CISCO_META); }
 
 bool CiscoMetaDataCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
 {
index 8974595382d8791549ab78cd53bd0dbea17411d0..3d45cb37e649a05cbc2035c5618bfd006b459898 100644 (file)
@@ -69,7 +69,7 @@ struct ERSpanType2Hdr
 } // namespace
 
 void Erspan2Codec::get_protocol_ids(std::vector<ProtocolId>& v)
-{ v.push_back(ProtocolId::ETHERTYPE_ERSPAN_TYPE2); }
+{ v.emplace_back(ProtocolId::ETHERTYPE_ERSPAN_TYPE2); }
 
 bool Erspan2Codec::decode(const RawData& raw, CodecData& codec, DecodeData&)
 {
index b7813d84f80a4f873097bfbcca0cb809bb19fa6c..df89439bca195101c4644e2bd385954409aba038 100644 (file)
@@ -72,7 +72,7 @@ struct ERSpanType3Hdr
 } // anonymous namespace
 
 void Erspan3Codec::get_protocol_ids(std::vector<ProtocolId>& v)
-{ v.push_back(ProtocolId::ETHERTYPE_ERSPAN_TYPE3); }
+{ v.emplace_back(ProtocolId::ETHERTYPE_ERSPAN_TYPE3); }
 
 bool Erspan3Codec::decode(const RawData& raw, CodecData& codec, DecodeData&)
 {
index 321e06fa7abe620d3d87a3be6c3ae54406952d49..3bee1615b91d084b7aecc21a6a7d924b32e64aa4 100644 (file)
@@ -70,7 +70,7 @@ constexpr uint8_t FABRICPATH_HEADER_LEN = 16;
 } // anonymous namespace
 
 void FabricPathCodec::get_protocol_ids(std::vector<ProtocolId>& v)
-{ v.push_back(ProtocolId::ETHERTYPE_FPATH); }
+{ v.emplace_back(ProtocolId::ETHERTYPE_FPATH); }
 
 bool FabricPathCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
 {
index 77b15397e8c316b2e34b66bcde811cdeb1e511ed..13ae1ca21b12e01cf5354b292893dcb1f4389e09 100644 (file)
@@ -143,9 +143,9 @@ constexpr int MPLS_PAYLOADTYPE_ERROR = -1;
 
 void MplsCodec::get_protocol_ids(std::vector<ProtocolId>& v)
 {
-    v.push_back(ProtocolId::ETHERTYPE_MPLS_UNICAST);
-    v.push_back(ProtocolId::ETHERTYPE_MPLS_MULTICAST);
-    v.push_back(ProtocolId::MPLS_IP);
+    v.emplace_back(ProtocolId::ETHERTYPE_MPLS_UNICAST);
+    v.emplace_back(ProtocolId::ETHERTYPE_MPLS_MULTICAST);
+    v.emplace_back(ProtocolId::MPLS_IP);
 }
 
 bool MplsCodec::decode(const RawData& raw, CodecData& codec, DecodeData& snort)
index 85f24256efdb129d91e1a1d40dfc1e9ba6637a55..9488a78a2b9eb1c6741bfa06c6cba8923bf26f9f 100644 (file)
@@ -48,7 +48,7 @@ static const uint16_t PPP_IPX = 0x002b;        /* Novell IPX Protocol */
 } // namespace
 
 void PppEncap::get_protocol_ids(std::vector<ProtocolId>& v)
-{ v.push_back(ProtocolId::ETHERTYPE_PPP); }
+{ v.emplace_back(ProtocolId::ETHERTYPE_PPP); }
 
 bool PppEncap::decode(const RawData& raw, CodecData& codec, DecodeData&)
 {
index e43e2119a015e172f4e43b2dabb53e01197ee4d7..0baacb0ccafe17e134041d1bb1e6a22b04dfa71a 100644 (file)
@@ -150,7 +150,7 @@ public:
     PPPoEDiscCodec() : PPPoECodec(CD_PPPOEPKT_DISC_NAME, PppoepktType::DISCOVERY) { }
 
     void get_protocol_ids(std::vector<ProtocolId>& v) override
-    { v.push_back(ProtocolId::ETHERTYPE_PPPOE_DISC); }
+    { v.emplace_back(ProtocolId::ETHERTYPE_PPPOE_DISC); }
 };
 
 class PPPoESessCodec : public PPPoECodec
@@ -159,7 +159,7 @@ public:
     PPPoESessCodec() : PPPoECodec(CD_PPPOEPKT_SESS_NAME, PppoepktType::SESSION) { }
 
     void get_protocol_ids(std::vector<ProtocolId>& v) override
-    { v.push_back(ProtocolId::ETHERTYPE_PPPOE_SESS); }
+    { v.emplace_back(ProtocolId::ETHERTYPE_PPPOE_SESS); }
 };
 } // namespace
 
index 8da054f098e4434b1092940cd67e5b0b2c161451..d7cb3cc04595ddd7689157814f430e0083d4b7cb 100644 (file)
@@ -43,7 +43,7 @@ public:
 } // anonymous namespace
 
 void TransbridgeCodec::get_protocol_ids(std::vector<ProtocolId>& v)
-{ v.push_back(ProtocolId::ETHERTYPE_TRANS_ETHER_BRIDGING); }
+{ v.emplace_back(ProtocolId::ETHERTYPE_TRANS_ETHER_BRIDGING); }
 
 bool TransbridgeCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
 {
index 1f9302c0aa82af1e6d0d583f847228315f57c2d6..c4ab019186275a2834f8c353327525cc618aa0f4 100644 (file)
@@ -63,10 +63,10 @@ constexpr unsigned int ETHERNET_MAX_LEN_ENCAP = 1518;    /* 802.3 (+LLC) or ethe
 
 void VlanCodec::get_protocol_ids(std::vector<ProtocolId>& v)
 {
-    v.push_back(ProtocolId::ETHERTYPE_8021Q);
-    v.push_back(ProtocolId::ETHERTYPE_8021AD);
-    v.push_back(ProtocolId::ETHERTYPE_QINQ_NS1);
-    v.push_back(ProtocolId::ETHERTYPE_QINQ_NS2);
+    v.emplace_back(ProtocolId::ETHERTYPE_8021Q);
+    v.emplace_back(ProtocolId::ETHERTYPE_8021AD);
+    v.emplace_back(ProtocolId::ETHERTYPE_QINQ_NS1);
+    v.emplace_back(ProtocolId::ETHERTYPE_QINQ_NS2);
 }
 
 bool VlanCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
index 78c7c333ebc4bf8973fa859287baf81a5a83342e..8f46b1a85ac8461f88a898d332dbb9672c8ab819 100644 (file)
@@ -36,7 +36,7 @@ public:
     DefaultCodec() : Codec(CD_DEFAULT_NAME) { }
 
     void get_protocol_ids(std::vector<ProtocolId>& v) override
-    { v.push_back(ProtocolId::FINISHED_DECODE); }
+    { v.emplace_back(ProtocolId::FINISHED_DECODE); }
 
     bool decode(const RawData&, CodecData&, DecodeData&) override
     { return false; }
index a5434dc7bd671457e9230567006889eb507269d3..5bf7100e5cc83ea3ec0481e7d2a90aca0df66ea9 100644 (file)
@@ -81,7 +81,7 @@ static const uint32_t GTP_V1_HEADER_LEN = 12;
 
 void GtpCodec::get_protocol_ids(std::vector<ProtocolId>& v)
 {
-    v.push_back(ProtocolId::GTP);
+    v.emplace_back(ProtocolId::GTP);
 }
 
 bool GtpCodec::decode(const RawData& raw, CodecData& codec, DecodeData& dd)
index a99afaa7688735838364672d3348d8e13af4e275..2e91693337412f49df3071314c3b6f3e6c5ea427 100644 (file)
@@ -49,7 +49,7 @@ public:
 } // namespace
 
 void Icmp4IpCodec::get_protocol_ids(std::vector<ProtocolId>& v)
-{ v.push_back(ProtocolId::IP_EMBEDDED_IN_ICMP4); }
+{ v.emplace_back(ProtocolId::IP_EMBEDDED_IN_ICMP4); }
 
 bool Icmp4IpCodec::decode(const RawData& raw, CodecData& codec, DecodeData& snort)
 {
index d55e344d8c9604795437bee8136f06d61a901778..5ee47f46cec75b9bb71364c5c7e8a31c71196823 100644 (file)
@@ -49,7 +49,7 @@ public:
 } // namespace
 
 void Icmp6IpCodec::get_protocol_ids(std::vector<ProtocolId>& v)
-{ v.push_back(ProtocolId::IP_EMBEDDED_IN_ICMP6); }
+{ v.emplace_back(ProtocolId::IP_EMBEDDED_IN_ICMP6); }
 
 bool Icmp6IpCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
 {
index 03216e57ebed3fbbd60667cdb613d780ea3dd050..0e4cbfb9476caef0e11e6b225e31319928e0e79b 100644 (file)
@@ -95,7 +95,7 @@ struct EthLlcOther
 } // namespace
 
 void LlcCodec::get_protocol_ids(std::vector<ProtocolId>& v)
-{ v.push_back(ProtocolId::ETHERNET_LLC); }
+{ v.emplace_back(ProtocolId::ETHERNET_LLC); }
 
 bool LlcCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
 {
index 7dac5b27e439fee2a12c80660ef092dc7e3ebe04..d1d9a5820378e433dbe169247dd6409544ba6c41 100644 (file)
@@ -46,7 +46,7 @@ public:
 
 void TeredoCodec::get_protocol_ids(std::vector<ProtocolId>& v)
 {
-    v.push_back(ProtocolId::TEREDO);
+    v.emplace_back(ProtocolId::TEREDO);
 }
 
 bool TeredoCodec::decode(const RawData& raw, CodecData& codec, DecodeData& snort)
index 52efbf34ff0f696e29aa4aeab5c3e21703fb7e7a..b19744d8fd02d8a5d890b3001c07a6af0f78a025 100644 (file)
@@ -44,7 +44,7 @@ public:
 
 void UserCodec::get_data_link_type(std::vector<int>& v)
 {
-    v.push_back(DLT_USER);
+    v.emplace_back(DLT_USER);
 }
 
 static void set_ip(const DAQ_UsrHdr_t* pci, CodecData& codec, DecodeData& snort)
index a489e78b1b067759047de9af7e376865ba7107e0..5a6e8d1a81a64459c12dbfb79bd1b6f8612c1356 100644 (file)
@@ -73,13 +73,13 @@ public:
 
 void EthCodec::get_data_link_type(std::vector<int>& v)
 {
-    v.push_back(DLT_PPP_ETHER);
-    v.push_back(DLT_EN10MB);
+    v.emplace_back(DLT_PPP_ETHER);
+    v.emplace_back(DLT_EN10MB);
 }
 
 void EthCodec::get_protocol_ids(std::vector<ProtocolId>& v)
 {
-    v.push_back(ProtocolId::ETHERNET_802_3);
+    v.emplace_back(ProtocolId::ETHERNET_802_3);
 }
 
 bool EthCodec::decode(const RawData& raw, CodecData& codec, DecodeData&)
index e26d27a25b1cf001c5baae9fc2ffea57a63f611f..7c6567d0b90803aedf91c847dbd5cccce1a4f114 100644 (file)
@@ -59,7 +59,7 @@ bool RawCodec::decode(const RawData& raw, CodecData& data, DecodeData&)
 
 void RawCodec::get_data_link_type(std::vector<int>& v)
 {
-    v.push_back(DLT_RAW);
+    v.emplace_back(DLT_RAW);
 }
 
 //-------------------------------------------------------------------------
index 0ed1d09d651a57249ac54eee8d7930886b27e7c1..df32877dc49943e360ef77e48de805b6f0ec8df3 100644 (file)
@@ -135,7 +135,7 @@ bool FileConnectorModule::end(const char*, int idx, SnortConfig*)
 {
     if (idx != 0)
     {
-        config_set->push_back(config);
+        config_set->emplace_back(config);
         config = nullptr;
     }
 
index 2f68b375b55daa26434949f60b02d05c93ce0fcc..20355ae9cff1fe1d560c19a5788ff15597ee8b6f 100644 (file)
@@ -130,7 +130,7 @@ bool TcpConnectorModule::end(const char*, int idx, SnortConfig*)
 {
     if (idx != 0)
     {
-        config_set->push_back(config);
+        config_set->emplace_back(config);
         config = nullptr;
     }
 
index f872a5555d5f043a168ef4926f85bda45fef01a5..c529428e18daaf8407cf55fd4c4396e03191b8fd 100644 (file)
@@ -37,7 +37,7 @@
 static std::vector<IdleHook> s_idle_handlers;
 
 void IdleProcessing::register_handler(IdleHook f)
-{ s_idle_handlers.push_back(f); }
+{ s_idle_handlers.emplace_back(f); }
 
 void IdleProcessing::execute()
 {
index d9bd750de2fbe21cc388c9f57ceeb2676756707e..088027324eaa48d7ac86f0768e7eb6e0afd878ee 100644 (file)
@@ -60,7 +60,7 @@ ContextSwitcher::~ContextSwitcher()
 void ContextSwitcher::push(IpsContext* c)
 {
     c->set_slot(idle.size() + 1);
-    idle.push_back(c);
+    idle.emplace_back(c);
 }
 
 IpsContext* ContextSwitcher::pop()
@@ -79,7 +79,7 @@ void ContextSwitcher::start()
     assert(!idle.empty());
     trace_logf(detection, TRACE_DETECTION_ENGINE, "(wire) %" PRIu64 " cs::start %u (i=%zu, b=%zu)\n",
         get_packet_number(), idle.back()->get_slot(), idle.size(), busy.size());
-    busy.push_back(idle.back());
+    busy.emplace_back(idle.back());
     idle.pop_back();
 }
 
@@ -88,7 +88,7 @@ void ContextSwitcher::stop()
     assert(busy.size() == 1);
     trace_logf(detection, TRACE_DETECTION_ENGINE, "(wire) %" PRIu64 " cs::stop %u (i=%zu, b=%zu)\n",
         get_packet_number(), busy.back()->get_slot(), idle.size(), busy.size());
-    idle.push_back(busy.back());
+    idle.emplace_back(busy.back());
     busy.pop_back();
 }
 
@@ -103,7 +103,7 @@ void ContextSwitcher::abort()
             trace_logf(detection, TRACE_DETECTION_ENGINE, "%" PRIu64 " cs::abort hold",
                 hold[i]->packet_number);
 
-            idle.push_back(hold[i]);
+            idle.emplace_back(hold[i]);
             hold[i] = nullptr;
         }
     }
@@ -112,7 +112,7 @@ void ContextSwitcher::abort()
         trace_logf(detection, TRACE_DETECTION_ENGINE, "%" PRIu64 " cs::abort busy",
             busy[0]->packet_number);
 
-        idle.push_back(busy.back());
+        idle.emplace_back(busy.back());
         busy.pop_back();
     }
 }
@@ -122,7 +122,7 @@ IpsContext* ContextSwitcher::interrupt()
     assert(!idle.empty());
     trace_logf(detection, TRACE_DETECTION_ENGINE, "%" PRIu64 " cs::interrupt %u (i=%zu, b=%zu)\n",
         idle.back()->packet_number, idle.back()->get_slot(), idle.size(), busy.size());
-    busy.push_back(idle.back());
+    busy.emplace_back(idle.back());
     idle.pop_back();
     return busy.back();
 }
@@ -136,7 +136,7 @@ IpsContext* ContextSwitcher::complete()
         c->packet_number, busy.back()->get_slot(), idle.size(), busy.size());
 
     c->clear_context_data();
-    idle.push_back(c);
+    idle.emplace_back(c);
     busy.pop_back();
     return busy.empty() ? nullptr : busy.back();
 }
@@ -161,7 +161,7 @@ void ContextSwitcher::resume(unsigned slot)
     assert(slot <= hold.capacity());
     trace_logf(detection, TRACE_DETECTION_ENGINE, "%" PRIu64 " cs::resume %u (i=%zu, b=%zu)\n",
         hold[slot]->packet_number, slot, idle.size(), busy.size());
-    busy.push_back(hold[slot]);
+    busy.emplace_back(hold[slot]);
     hold[slot] = nullptr;
 }
 
index 377be8da6d3366b9b13fc029d205a7fd721fc4ea..6fc1fdf2f40949f6ad1f4a9ba06cb32908a70182 100644 (file)
@@ -223,7 +223,7 @@ void DetectionEngine::add_replacement(const std::string& s, unsigned off)
 
     r.data = s;
     r.offset = off;
-    Snort::get_switcher()->get_context()->rpl.push_back(r); 
+    Snort::get_switcher()->get_context()->rpl.emplace_back(r); 
 }
 
 bool DetectionEngine::get_replacement(std::string& s, unsigned& off)
index 9e18408b101d5c55d4366d60b7ff256a8528d1de..9df8a2972c37d7d4f358af7910fe061375e8df10 100644 (file)
@@ -329,9 +329,9 @@ PatternMatchVector get_fp_content(
             // Add alternate pattern
             PatternMatchData* alt_pmd = ofl->ips_opt->get_alternate_pattern();
             if (alt_pmd)
-                pmds.push_back(alt_pmd);
+                pmds.emplace_back(alt_pmd);
             // Add main pattern last
-            pmds.push_back(best.pmd);
+            pmds.emplace_back(best.pmd);
         }
     }
 
index 6d518168b4103ff413b830e3d58735697aa4c229..f898598fe054fe4c5b76e05258db7add393851c8 100644 (file)
@@ -86,7 +86,7 @@ public:
     { NONE, NON_CONTENT, CONTENT };
 
     void register_post_callback(Callback callback)
-    { post_callbacks.push_back(callback); }
+    { post_callbacks.emplace_back(callback); }
 
     void clear_callbacks()
     { post_callbacks.clear(); }
index d29d4d37f8198b00ecc44bbaf6e380da2606aa80..cf81b111ff336299449a0f5bf41a771c37ae4611 100644 (file)
@@ -63,7 +63,7 @@ RegexOffload::RegexOffload(unsigned max)
     {
         RegexRequest* req = new RegexRequest;
         req->thread = new std::thread(worker, req);
-        idle.push_back(req);
+        idle.emplace_back(req);
     }
 }
 
@@ -132,7 +132,7 @@ void RegexOffload::put(unsigned id, snort::Packet* p)
     RegexRequest* req = idle.front();
 
     idle.pop_front();  // FIXIT-H use splice to move instead
-    busy.push_back(req);
+    busy.emplace_back(req);
 
     std::unique_lock<std::mutex> lock(req->mutex);
 
@@ -157,7 +157,7 @@ bool RegexOffload::get(unsigned& id)
     req->packet = nullptr;
 
     busy.pop_front();  // FIXIT-H use splice to move instead
-    idle.push_back(req);
+    idle.emplace_back(req);
 
     return true;
 }
index 111d0d1bebd4f3d304c62d18e94bfe4bab2bf9f6..d4936c32d30db09a908c5966cad40364b810b12e 100644 (file)
@@ -65,7 +65,7 @@ int RuleIndexMapAdd(rule_index_map_t* rim, unsigned gid, unsigned sid)
 
     rule_number_t rn(gid, sid);
     int index = rim->map.size();
-    rim->map.push_back(rn);
+    rim->map.emplace_back(rn);
 
     //printf("RuleIndexMapping: index=%d gid=%u sid=%u\n",index,gid,sid);
     return index;
index 3e3e56817fbc91e4e9a83cb493c90a26fecf893e..84497ae9875b5463168efd697efe59406a255318 100644 (file)
@@ -91,7 +91,7 @@ void* FileIdentifier::calloc_mem(size_t size)
     void* ret = snort_calloc(size);
     memory_used += size;
     /*For memory management*/
-    id_memory_blocks.push_back(ret);
+    id_memory_blocks.emplace_back(ret);
     return ret;
 }
 
@@ -412,7 +412,7 @@ TEST_CASE ("FileIdRulePDF", "[FileMagic]")
     FileMagicRule rule;
 
     rule.type = "pdf";
-    rule.file_magics.push_back(magic);
+    rule.file_magics.emplace_back(magic);
     rule.id = 1;
 
     FileIdentifier rc;
@@ -436,7 +436,7 @@ TEST_CASE ("FileIdRuleUnknow", "[FileMagic]")
     FileMagicRule rule;
 
     rule.type = "pdf";
-    rule.file_magics.push_back(magic);
+    rule.file_magics.emplace_back(magic);
     rule.id = 1;
 
     FileIdentifier rc;
@@ -461,7 +461,7 @@ TEST_CASE ("FileIdRuleEXE", "[FileMagic]")
     FileMagicRule rule;
 
     rule.type = "exe";
-    rule.file_magics.push_back(magic);
+    rule.file_magics.emplace_back(magic);
     rule.id = 1;
 
     FileIdentifier rc;
@@ -473,7 +473,7 @@ TEST_CASE ("FileIdRuleEXE", "[FileMagic]")
 
     rule.clear();
     rule.type = "exe";
-    rule.file_magics.push_back(magic);
+    rule.file_magics.emplace_back(magic);
     rule.id = 3;
 
     rc.insert_file_rule(rule);
@@ -494,7 +494,7 @@ TEST_CASE ("FileIdRulePDFEXE", "[FileMagic]")
     FileMagicRule rule;
 
     rule.type = "exe";
-    rule.file_magics.push_back(magic);
+    rule.file_magics.emplace_back(magic);
     rule.id = 1;
 
     FileIdentifier rc;
@@ -506,7 +506,7 @@ TEST_CASE ("FileIdRulePDFEXE", "[FileMagic]")
 
     rule.clear();
     rule.type = "exe";
-    rule.file_magics.push_back(magic);
+    rule.file_magics.emplace_back(magic);
     rule.id = 3;
 
     rc.insert_file_rule(rule);
@@ -528,7 +528,7 @@ TEST_CASE ("FileIdRuleFirst", "[FileMagic]")
     FileMagicRule rule;
 
     rule.type = "exe";
-    rule.file_magics.push_back(magic);
+    rule.file_magics.emplace_back(magic);
     rule.id = 1;
 
     FileIdentifier rc;
@@ -540,7 +540,7 @@ TEST_CASE ("FileIdRuleFirst", "[FileMagic]")
 
     rule.clear();
     rule.type = "exe";
-    rule.file_magics.push_back(magic);
+    rule.file_magics.emplace_back(magic);
     rule.id = 3;
 
     rc.insert_file_rule(rule);
index ef53357af81c250072e22c038fd083b6a64d5f20..b608b17e051b181374376f98c6197459688f99e1 100644 (file)
@@ -310,7 +310,7 @@ bool FileIdModule::set(const char*, Value& v, SnortConfig*)
         std::string tmpstr;
         while(std::getline(stream, tmpstr, ','))
         {
-            rule.groups.push_back(tmpstr);
+            rule.groups.emplace_back(tmpstr);
         }
     }
 
@@ -392,7 +392,7 @@ bool FileIdModule::end(const char* fqn, int idx, SnortConfig*)
     else if ( !strcmp(fqn, "file_id.file_rules.magic") )
     {
         fc->process_file_magic(magic);
-        rule.file_magics.push_back(magic);
+        rule.file_magics.emplace_back(magic);
     }
     else if ( !strcmp(fqn, "file_id.file_policy") )
     {
index e072455d9010c9c09cec95cd129e3e04ca201288..e1b6720228b2b390dd4e958ef4baed3cd0c21a26 100644 (file)
@@ -66,7 +66,7 @@ void FilePolicy::set_file_capture(bool enabled)
 
 void FilePolicy::insert_file_rule(FileRule& rule)
 {
-    file_rules.push_back(rule);
+    file_rules.emplace_back(rule);
 
     if (!rule.when.sha256.empty())
     {
index a4f87cf4537e4cb227d21ec751f3d3f4f1a69768..c4fc2af611210865aead8f0ade16b3328207e945 100644 (file)
@@ -434,7 +434,7 @@ int ExpectCache::add_flow(const Packet *ctrlPkt,
     if (new_expect_flow)
     {
         // chain all expected flows created by this packet
-        packet_expect_flows->push_back(last);
+        packet_expect_flows->emplace_back(last);
 
         ExpectEvent event(ctrlPkt, last, fd);
         DataBus::publish(EXPECT_EVENT_TYPE_EARLY_SESSION_CREATE_KEY, event, ctrlPkt->flow);
index bfdc24f79d852429fbf8f281cf83374af2e20260..6b90c3d56970750466e4ce717abe842ee826cf53 100644 (file)
@@ -341,6 +341,7 @@ public:  // FIXIT-M privatize if possible
     unsigned inspection_policy_id;
     unsigned ips_policy_id;
     unsigned network_policy_id;
+    unsigned reputation_id;
 
     uint16_t client_port;
     uint16_t server_port;
index b661e6fe22538d8fc2538c264b4d4c690e21bd6c..c8eada88fa19fc13d8528d777d3b7259c156efb7 100644 (file)
@@ -331,7 +331,7 @@ void FlowControl::init_proto(
         con.cache->push(con.mem + i);
 
     con.get_ssn = get_ssn;
-    types.push_back(type);
+    types.emplace_back(type);
 }
 
 // FIXIT-P apply more filtering logic here, eg require_3whs
index 79c39c562e28adaf1df79c23c14d82c18dc58794..7793e9f3b6ed0464441a87eaac228e7d6e42b158 100644 (file)
@@ -136,7 +136,7 @@ void DataBus::publish(const char* key, void* user, int type, const uint8_t* data
 void DataBus::_subscribe(const char* key, DataHandler* h)
 {
     DataList& v = map[key];
-    v.push_back(h);
+    v.emplace_back(h);
 }
 
 void DataBus::_unsubscribe(const char* key, DataHandler* h)
index 5e0d1a3789060c6ea87bd9af0eb385dd9851d38a..ccdc02e7b13e4ea519af614252668d03711bb378 100644 (file)
@@ -228,7 +228,7 @@ static unsigned split(const string& txt, vector<string>& strs)
     while ( pos != string::npos )
     {
         if ( last != pos )
-            strs.push_back(txt.substr(last, pos - last));
+            strs.emplace_back(txt.substr(last, pos - last));
 
         last = txt.find_first_not_of(delim, pos + 1);
         pos = txt.find_first_of(delim, last);
@@ -236,7 +236,7 @@ static unsigned split(const string& txt, vector<string>& strs)
 
     // add the last one
     if ( last != string::npos )
-        strs.push_back(txt.substr(last, min(pos, txt.size()) - last));
+        strs.emplace_back(txt.substr(last, min(pos, txt.size()) - last));
 
     return strs.size();
 }
index 3d5131368fa0aa109066c1f4a8890f76e4ff92a5..c7625e51f6949938716c7b34acb9f6b40bd758b7 100644 (file)
@@ -295,7 +295,7 @@ std::vector<std::pair<Key, Data> > LruCacheShared<Key, Data, Hash>::get_all_data
 
     for (auto& entry : list )
     {
-        vec.push_back(entry);
+        vec.emplace_back(entry);
     }
 
     return vec;
index 3224c0ea84408c19c6741aee980b2ec044ddfa46..6abf72a290b32d7993470ecaf456f1a3d5badb26 100644 (file)
@@ -86,7 +86,7 @@ bool ServiceModule::set(const char*, Value& v, SnortConfig*)
             return true;
         }
     }
-    services.push_back(svc);
+    services.emplace_back(svc);
 
     return true;
 }
index 9e9df913d0039728c4d3d3e67a916d272d06bdf7..dca96e18f4541eb25131ed9a55741acbee0ceffa 100644 (file)
@@ -512,7 +512,7 @@ bool CsvModule::set(const char*, Value& v, SnortConfig*)
         fields.clear();
 
         while ( v.get_next_token(tok) )
-            fields.push_back(csv_func[Parameter::index(csv_range, tok.c_str())]);
+            fields.emplace_back(csv_func[Parameter::index(csv_range, tok.c_str())]);
     }
 
     else if ( v.is("limit") )
@@ -540,7 +540,7 @@ bool CsvModule::begin(const char*, int, SnortConfig*)
         v.set_first_token();
 
         while ( v.get_next_token(tok) )
-            fields.push_back(csv_func[Parameter::index(csv_range, tok.c_str())]);
+            fields.emplace_back(csv_func[Parameter::index(csv_range, tok.c_str())]);
     }
     return true;
 }
index 9a20c6da254c1b084f974d7ddc60af84cbdf714b..2f44b76b66fe44383d2f78dd90b4a96351bc91da 100644 (file)
@@ -142,7 +142,7 @@ static void load_buf_ids(
     {
         unsigned id = ins->get_buf_id(key);
         assert(id);
-        ids.push_back(id);
+        ids.emplace_back(id);
     }
 }
 
index 2fc8a1525f925d5cff028df10ef0bd963f99a985..20b15a50abea81886f056302bcc695785dad6d70 100644 (file)
@@ -676,7 +676,7 @@ bool JsonModule::set(const char*, Value& v, SnortConfig*)
         fields.clear();
 
         while ( v.get_next_token(tok) )
-            fields.push_back(json_func[Parameter::index(json_range, tok.c_str())]);
+            fields.emplace_back(json_func[Parameter::index(json_range, tok.c_str())]);
     }
 
     else if ( v.is("limit") )
@@ -704,7 +704,7 @@ bool JsonModule::begin(const char*, int, SnortConfig*)
         v.set_first_token();
 
         while ( v.get_next_token(tok) )
-            fields.push_back(json_func[Parameter::index(json_range, tok.c_str())]);
+            fields.emplace_back(json_func[Parameter::index(json_range, tok.c_str())]);
     }
     return true;
 }
index 5e2046cbd6652719546a32cfe87984ab2325c8d8..0d17fe7ce1e73490ecb3b975bdd8dcb941e7d225 100644 (file)
@@ -132,7 +132,7 @@ bool SfSocketModule::begin(const char*, int, SnortConfig*)
 bool SfSocketModule::end(const char* fqn, int, SnortConfig*)
 {
     if ( !strcmp(fqn, "alert_sfsocket.rules") )
-        rulez.push_back(rule);
+        rulez.emplace_back(rule);
 
     return true;
 }
index 62a90eb0cc48da0a956b61d740d5ab70b21b4fb3..32c6b82e279b83ecc8eecd36d98e6f64b94cf51e 100644 (file)
@@ -47,7 +47,7 @@ static std::vector<ControlConn*> controls;
 
 void ControlMgmt::add_control(int fd, bool local)
 {
-    controls.push_back(new ControlConn(fd, local));
+    controls.emplace_back(new ControlConn(fd, local));
 }
 
 bool ControlMgmt::find_control(int fd, std::vector<ControlConn*>::iterator& control)
index c4036fe85db20c13432e1e5ec6683314ddb1f451..36103c911daf898da6500ee26d765fb424427a00 100644 (file)
@@ -187,10 +187,10 @@ void PolicyMap::clone(PolicyMap *other_map)
     {
         if ( i == 0 )
         {
-            inspection_policy.push_back(new InspectionPolicy(other_map->inspection_policy[i]));
+            inspection_policy.emplace_back(new InspectionPolicy(other_map->inspection_policy[i]));
         }
         else
-            inspection_policy.push_back(other_map->inspection_policy[i]);
+            inspection_policy.emplace_back(other_map->inspection_policy[i]);
     }
 
     shell_map = other_map->shell_map;
@@ -218,8 +218,8 @@ void PolicyMap::clone(PolicyMap *other_map)
 unsigned PolicyMap::add_inspection_shell(Shell* sh)
 {
     unsigned idx = inspection_policy.size();
-    shells.push_back(sh);
-    inspection_policy.push_back(new InspectionPolicy(idx));
+    shells.emplace_back(sh);
+    inspection_policy.emplace_back(new InspectionPolicy(idx));
 
     shell_map[sh] = std::make_shared<PolicyTuple>(inspection_policy.back(), nullptr, nullptr);
     return idx;
@@ -228,8 +228,8 @@ unsigned PolicyMap::add_inspection_shell(Shell* sh)
 unsigned PolicyMap::add_ips_shell(Shell* sh)
 {
     unsigned idx = ips_policy.size();
-    shells.push_back(sh);
-    ips_policy.push_back(new IpsPolicy(idx));
+    shells.emplace_back(sh);
+    ips_policy.emplace_back(new IpsPolicy(idx));
     shell_map[sh] = std::make_shared<PolicyTuple>(nullptr, ips_policy.back(), nullptr);
     return idx;
 }
@@ -237,18 +237,18 @@ unsigned PolicyMap::add_ips_shell(Shell* sh)
 unsigned PolicyMap::add_network_shell(Shell* sh)
 {
     unsigned idx = network_policy.size();
-    shells.push_back(sh);
-    network_policy.push_back(new NetworkPolicy(idx));
+    shells.emplace_back(sh);
+    network_policy.emplace_back(new NetworkPolicy(idx));
     shell_map[sh] = std::make_shared<PolicyTuple>(nullptr, nullptr, network_policy.back());
     return idx;
 }
 
 std::shared_ptr<PolicyTuple> PolicyMap::add_shell(Shell* sh)
 {
-    shells.push_back(sh);
-    inspection_policy.push_back(new InspectionPolicy(inspection_policy.size()));
-    ips_policy.push_back(new IpsPolicy(ips_policy.size()));
-    network_policy.push_back(new NetworkPolicy(network_policy.size()));
+    shells.emplace_back(sh);
+    inspection_policy.emplace_back(new InspectionPolicy(inspection_policy.size()));
+    ips_policy.emplace_back(new IpsPolicy(ips_policy.size()));
+    network_policy.emplace_back(new NetworkPolicy(network_policy.size()));
 
     return shell_map[sh] = std::make_shared<PolicyTuple>(inspection_policy.back(),
         ips_policy.back(), network_policy.back());
index f80d320c19eb9cc1d0c74857db4c112bd7c48e8a..158627d602f6e14683fd8d313ed3afe110008d53 100644 (file)
@@ -961,7 +961,7 @@ void SnortConfig::set_tweaks(const char* t)
 void SnortConfig::add_script_path(const char* path)
 {
     if (path)
-        script_paths.push_back(path);
+        script_paths.emplace_back(path);
 }
 
 void SnortConfig::set_alert_mode(const char* val)
@@ -1035,7 +1035,7 @@ bool SnortConfig::tunnel_bypass_enabled(uint8_t proto)
 
 SO_PUBLIC int SnortConfig::request_scratch(ScScratchFunc setup, ScScratchFunc cleanup)
 {
-    scratch_handlers.push_back(std::make_pair(setup, cleanup));
+    scratch_handlers.emplace_back(std::make_pair(setup, cleanup));
 
     // We return an index that the caller uses to reference their per thread
     // scratch space
index 16251110476c78e3ed4502ab37ebd91126d3f8f8..4bd79a52a7b35a165b25bb648b1c6b6f4cb5dbce 100644 (file)
@@ -59,7 +59,7 @@ void ActionManager::add_plugin(const ActionApi* api)
     if ( api->pinit )
         api->pinit();
 
-    s_actors.push_back(a);
+    s_actors.emplace_back(a);
 }
 
 void ActionManager::release_plugins()
index 9845e1f6ea97f2a57eba4953b1f78920588e8ad2..6e61463bea7be602eb8960004064bd3b3b7ee8eb 100644 (file)
@@ -100,7 +100,7 @@ void CodecManager::add_plugin(const CodecApi* api)
     wrap.api = api;
     wrap.init = false;
 
-    s_codecs.push_back(wrap);
+    s_codecs.emplace_back(wrap);
 }
 
 void CodecManager::release_plugins()
index 1525e0e3c72e04345cfef292d4de73f1dd2ee619..bc4b268d083df27b12fef0381dc1e53e07f10a1b 100644 (file)
@@ -124,8 +124,7 @@ void ConnectorManager::thread_init()
                 assert(conn.second->thread_connectors.count(tid) == 0);
 
                 Connector* connector = sc.api->tinit(conn.second->config);
-                std::pair<pid_t, Connector*> element (tid, std::move(connector));
-                conn.second->thread_connectors.insert(element);
+                conn.second->thread_connectors.emplace(tid, std::move(connector));
             }
         }
     }
@@ -168,10 +167,9 @@ void ConnectorManager::instantiate(const ConnectorApi* api, Module* mod, SnortCo
     {
         ConnectorElem* connector_elem = new ConnectorElem;
         connector_elem->config = &*cfg;
-        std::pair<std::string, ConnectorElem*> element (cfg->connector_name, std::move(connector_elem));
-        c.connectors.insert(element);
+        c.connectors.emplace(cfg->connector_name, std::move(connector_elem));
     }
 
-    s_connector_commons.push_back(c);
+    s_connector_commons.emplace_back(c);
 }
 
index 1b289faf1eb2f5e3bad23e73f89e9f09a0941a3a..80da3aeec3d889a1624617165cab50dcb49c3c4e 100644 (file)
@@ -70,7 +70,7 @@ void EventManager::add_plugin(const LogApi* api)
 {
     // can't assert - alert_sf_socket operates differently
     //assert(api->flags & (OUTPUT_TYPE_FLAG__ALERT | OUTPUT_TYPE_FLAG__LOG));
-    s_outputs.push_back(new Output(api));
+    s_outputs.emplace_back(new Output(api));
 }
 
 void EventManager::release_plugins()
@@ -144,7 +144,7 @@ void EventManager::add_output(OutputSet** ofn, Logger* eh)
     if ( !*ofn )
         *ofn = new OutputSet;
 
-    (*ofn)->outputs.push_back(eh);
+    (*ofn)->outputs.emplace_back(eh);
 }
 
 void EventManager::copy_outputs(OutputSet* dst, OutputSet* src)
@@ -173,7 +173,7 @@ void EventManager::instantiate(
     assert(p->handler);
 
     p->handler->set_api(p->api);
-    s_loggers.outputs.push_back(p->handler);
+    s_loggers.outputs.emplace_back(p->handler);
 }
 
 // command line outputs
@@ -198,7 +198,7 @@ void EventManager::instantiate(
     if ( p->handler )
     {
         // configured by conf
-        s_loggers.outputs.push_back(p->handler);
+        s_loggers.outputs.emplace_back(p->handler);
         return;
     }
     Module* mod = ModuleManager::get_default_module(name, sc);
index 3051cb206b514639582208bf9ed7f1cc27c28611..3c0178a143cb092b7cf59972661c7625c09b2eb3 100644 (file)
@@ -289,7 +289,7 @@ void FrameworkPolicy::vectorize(SnortConfig* sc)
 void InspectorManager::add_plugin(const InspectApi* api)
 {
     PHGlobal* g = new PHGlobal(*api);
-    s_handlers.push_back(g);
+    s_handlers.emplace_back(g);
 }
 
 static const InspectApi* get_plugin(const char* keyword)
@@ -440,7 +440,7 @@ static PHInstance* get_new(
         else
             p->set_reloaded(RELOAD_TYPE_NEW);
     }
-    fp->ilist.push_back(p);
+    fp->ilist.emplace_back(p);
     return p;
 }
 
@@ -468,9 +468,9 @@ void InspectorManager::delete_policy(InspectionPolicy* pi, bool cloned)
                 continue;
 
         if ( p->handler->get_api()->type == IT_PASSIVE )
-            s_trash2.push_back(p->handler);
+            s_trash2.emplace_back(p->handler);
         else
-            s_trash.push_back(p->handler);
+            s_trash.emplace_back(p->handler);
 
         delete p;
     }
@@ -606,7 +606,7 @@ static PHClass* get_class(const char* keyword, FrameworkConfig* fc)
                 p->initialized = true;
             }
             PHClass* ppc = new PHClass(p->api);
-            fc->clist.push_back(ppc);
+            fc->clist.emplace_back(ppc);
             return ppc;
         }
     return nullptr;
index d90a17dd23f671784f505e63ba0ef493f6b336b4..cd7261100b2c8cd2debac71a1ab5d1c290e79b03 100644 (file)
@@ -59,7 +59,7 @@ static const Parameter* current_params = nullptr;
 
 void IpsManager::add_plugin(const IpsApi* api)
 {
-    s_options.push_back(new Option(api));
+    s_options.emplace_back(new Option(api));
 }
 
 void IpsManager::release_plugins()
index b1612377a9f3c63ae8ff83f9567bc663ebbe8179..1e25eb6e545907cd9830d5c4459e859bf6035290 100644 (file)
@@ -889,7 +889,7 @@ void ModuleManager::term()
 void ModuleManager::add_module(Module* m, const BaseApi* b)
 {
     ModHook* mh = new ModHook(m, b);
-    s_modules.push_back(mh);
+    s_modules.emplace_back(mh);
 
     Profiler::register_module(m);
 
@@ -926,7 +926,7 @@ list<Module*> ModuleManager::get_all_modules()
     list<Module*> ret;
 
     for ( auto& m : s_modules )
-       ret.push_back(m->mod);
+       ret.emplace_back(m->mod);
 
     return ret;
 }
index c2c1d16a7b2bfe949a83a5f0b8c8eaed15250d26..57a88015878b9b3fd490070b1cdbb9c5921496eb 100644 (file)
@@ -45,7 +45,7 @@ static EngineList s_engines;
 
 void MpseManager::add_plugin(const MpseApi* api)
 {
-    s_engines.push_back(api);
+    s_engines.emplace_back(api);
 }
 
 void MpseManager::release_plugins()
index 650ae947f96da7967906e99df2c0868518990453..3bb58aa20c4d41462da0a2e4c0a918269f49c01e 100644 (file)
@@ -220,10 +220,10 @@ static void load_script(const char* f)
     }
 
     if ( type == IpsLuaApi::type )
-        lua_api.push_back(new IpsLuaApi(name, chunk, ver));
+        lua_api.emplace_back(new IpsLuaApi(name, chunk, ver));
 
     else if ( type == LogLuaApi::type )
-        lua_api.push_back(new LogLuaApi(name, chunk, ver));
+        lua_api.emplace_back(new LogLuaApi(name, chunk, ver));
 
 #ifdef PIGLET
     else if ( type == "piglet" )
@@ -286,9 +286,9 @@ const BaseApi** ScriptManager::get_plugins()
     base_api.clear();
 
     for ( auto p : lua_api )
-        base_api.push_back(p->get_base());
+        base_api.emplace_back(p->get_base());
 
-    base_api.push_back(nullptr);
+    base_api.emplace_back(nullptr);
 
     return (const BaseApi**)&base_api[0];
 }
index bf4c90cf1972b7751c517be5c15c95520c09e239..b4e96512d90a2a4fbccbe38f1d45ed1faad0838d 100644 (file)
@@ -45,7 +45,7 @@ static list<const SoApi*> s_rules;
 
 void SoManager::add_plugin(const SoApi* api)
 {
-    s_rules.push_back(api);
+    s_rules.emplace_back(api);
 }
 
 void SoManager::release_plugins()
index 7fa4fbe8b3ba375c860a6a0786db6e1467b5b89f..8b0ba4f8ea213c983ed993a1e2c094786ab49971 100644 (file)
@@ -66,7 +66,7 @@ void add_af_indicator(AppId indicator, AppId forecast, AppId target)
     AFElement val;
     val.forecast = forecast;
     val.target = target;
-    if (false == AF_indicators.insert({indicator, val}).second)
+    if (false == AF_indicators.emplace(indicator, val).second)
         ErrorMessage("LuaDetectorApi:Failed to add AFElement for appId %d", indicator);
 }
 
index 2232f59d4dcb5c7d990003c1291979544fb2679f..b9adb04b51013de4eab4faa87b9028a5b90a29f8 100644 (file)
@@ -55,8 +55,7 @@ class AFActKey
         {
             const snort::SfIp* src = dir ? p->ptrs.ip_api.get_dst() : p->ptrs.ip_api.get_src();
 
-            for (int i = 0; i < 4; i++)
-                master_key.ip[i] = src->get_ip6_ptr()[i];
+            memcpy(master_key.ip, src->get_ip6_ptr(), sizeof(master_key.ip));
             master_key.forecast = forecast;
         }
 
index 7fe94da7afd3290d0788343ac2f666cd684a78b7..370a2aafe0f40cc9fb6739fc331393ce57f350d2 100644 (file)
@@ -115,7 +115,7 @@ void AppIdDiscovery::add_pattern_data(AppIdDetector* detector, SearchTool* st, i
     uint8_t* const pattern, unsigned size, unsigned nocase)
 {
     AppIdPatternMatchNode* pd = new AppIdPatternMatchNode(detector, position, size);
-    pattern_data.push_back(pd);
+    pattern_data.emplace_back(pd);
     st->add((const char*)pattern, size, pd, nocase);
 }
 
@@ -629,7 +629,7 @@ static void lookup_appid_by_host_port(AppIdSession& asd, Packet* p, IpProtocol p
             asd.service_disco_state = APPID_DISCO_STATE_FINISHED;
             asd.client_disco_state = APPID_DISCO_STATE_FINISHED;
             asd.set_session_flags(APPID_SESSION_SERVICE_DETECTED);
-#ifdef ENABLE_THIRD_PARTY_APPID
+#ifdef ENABLE_APPID_THIRD_PARTY
             if (asd.tpsession)
                 asd.tpsession->reset();
 #endif
@@ -783,7 +783,7 @@ bool AppIdDiscovery::do_pre_discovery(Packet* p, AppIdSession** p_asd, AppIdInsp
         if ((p->packet_flags & PKT_STREAM_ORDER_BAD) ||
             (p->dsize && !(p->packet_flags & (PKT_STREAM_ORDER_OK | PKT_REBUILT_STREAM))))
         {
-            asd->set_session_flags(APPID_SESSION_OOO);
+            asd->set_session_flags(APPID_SESSION_OOO | APPID_SESSION_OOO_CHECK_TP);
             if (appidDebug->is_active())
                 LogMessage("AppIdDbg %s Packet out-of-order, %s%sflow\n",
                     appidDebug->get_debug_session(),
@@ -984,9 +984,6 @@ void AppIdDiscovery::do_post_discovery(Packet* p, AppIdSession& asd,
 #endif
     }
 
-    asd.set_application_ids(service_id, asd.pick_client_app_id(), payload_id,
-        asd.pick_misc_app_id(), change_bits);
-
     // Set the field that the Firewall queries to see if we have a search engine
     if (asd.search_support_type == UNKNOWN_SEARCH_ENGINE && payload_id > APP_ID_NONE)
     {
@@ -1015,22 +1012,39 @@ void AppIdDiscovery::do_post_discovery(Packet* p, AppIdSession& asd,
 
     if ( service_id !=  APP_ID_NONE )
     {
-        if ( payload_id != APP_ID_NONE && payload_id != asd.past_indicator)
+        if ( payload_id != asd.past_indicator and payload_id != APP_ID_NONE)
         {
             asd.past_indicator = payload_id;
             check_session_for_AF_indicator(p, direction, (AppId)payload_id);
         }
 
-        if (asd.payload.get_id() == APP_ID_NONE && asd.past_forecast != service_id &&
-            asd.past_forecast != APP_ID_UNKNOWN)
+        if ( asd.past_forecast != service_id and asd.past_forecast != APP_ID_UNKNOWN and
+             asd.payload.get_id() == APP_ID_NONE )
         {
             asd.past_forecast = check_session_for_AF_forecast(asd, p, direction,
                 (AppId)service_id);
-            asd.set_application_ids(service_id, asd.pick_client_app_id(),
-                asd.pick_payload_app_id(), asd.pick_misc_app_id(), change_bits);
+            if (asd.past_forecast != APP_ID_UNKNOWN)
+                payload_id = asd.pick_payload_app_id();
         }
     }
 
+#ifdef ENABLE_APPID_THIRD_PARTY
+    if (asd.get_session_flags(APPID_SESSION_OOO_CHECK_TP) and asd.tpsession and
+        (asd.scan_flags & SCAN_HOST_PORT_FLAG) and (service_id or payload_id))
+    {
+        asd.clear_session_flags(APPID_SESSION_OOO_CHECK_TP); // don't repeat this block
+        if (!asd.is_tp_appid_done())
+        {
+            asd.tpsession->set_state(TP_STATE_TERMINATED);
+            if (appidDebug->is_active())
+                LogMessage("AppIdDbg %s Stopped 3rd party detection\n",
+                    appidDebug->get_debug_session());
+        }
+    }
+#endif
+
+    asd.set_application_ids(service_id, asd.pick_client_app_id(), payload_id,
+        asd.pick_misc_app_id(), change_bits);
     publish_appid_event(change_bits, p->flow);
 }
 
index 5a1d59583510dfbf394e07f508b38f1222d4a1d9..78e20bf31d876d3fa885a53bcd048097f798ac38 100644 (file)
@@ -128,6 +128,7 @@ void HttpEventHandler::handle(DataEvent& event, Flow* flow)
     }
 
     hsession->process_http_packet(direction, change_bits);
+
     if (asd->service.get_id() == APP_ID_HTTP)
     {
         asd->set_application_ids(asd->pick_service_app_id(), asd->pick_client_app_id(),
index d7f9fe1b5add8260a8ea21fdec4ae770a688fd25..a30097dd860962390d33cbef48ccaeaf9253e495 100644 (file)
@@ -58,7 +58,7 @@ void AppIdPegCounts::add_app_peg_info(std::string app_name, AppId app_id)
     std::replace(app_name.begin(), app_name.end(), ' ', '_');
 
     appid_detector_pegs_idx[app_id] = appid_detectors_info.size();
-    appid_detectors_info.push_back({ app_name });
+    appid_detectors_info.emplace_back(app_name);
 }
 
 void AppIdPegCounts::sum_stats()
index 72ae4bb736b4975821f502531709b84fe49ac35a..194c857d1a49cf71ac5fc11c2bea822ff2b28177 100644 (file)
@@ -660,8 +660,8 @@ void AppIdSession::stop_rna_service_inspection(Packet* p, AppidSessionDirection
 
     service_disco_state = APPID_DISCO_STATE_FINISHED;
 
-    if ( (is_tp_appid_available() or get_session_flags(APPID_SESSION_NO_TPI) )
-        and payload.get_id() == APP_ID_NONE )
+    if ( payload.get_id() == APP_ID_NONE and
+        ( is_tp_appid_available() or get_session_flags(APPID_SESSION_NO_TPI) ) )
         payload.set_id(APP_ID_UNKNOWN);
 
     set_session_flags(APPID_SESSION_SERVICE_DETECTED);
@@ -719,7 +719,7 @@ AppId AppIdSession::pick_only_service_app_id()
     if (service.get_id() > APP_ID_NONE && !deferred)
         return service.get_id();
 
-    if (is_tp_appid_available() && tp_app_id > APP_ID_NONE)
+    if (tp_app_id > APP_ID_NONE and is_tp_appid_available())
         return tp_app_id;
     else if (deferred)
         return service.get_id();
@@ -912,8 +912,7 @@ bool AppIdSession::is_tp_appid_done() const
 bool AppIdSession::is_tp_processing_done() const
 {
 #ifdef ENABLE_APPID_THIRD_PARTY
-    if ( TPLibHandler::have_tp() &&
-        !get_session_flags(APPID_SESSION_NO_TPI) &&
+    if (!get_session_flags(APPID_SESSION_NO_TPI) &&
         (!is_tp_appid_done() ||
         get_session_flags(APPID_SESSION_APP_REINSPECT | APPID_SESSION_APP_REINSPECT_SSL)))
         return false;
@@ -927,12 +926,10 @@ bool AppIdSession::is_tp_appid_available() const
 #ifdef ENABLE_APPID_THIRD_PARTY
     if ( TPLibHandler::have_tp() )
     {
-        unsigned state;
+        if (!tpsession)
+            return false;
 
-        if (tpsession)
-            state = tpsession->get_state();
-        else
-            state = TP_STATE_INIT;
+        unsigned state = tpsession->get_state();
 
         return (state == TP_STATE_CLASSIFIED || state == TP_STATE_TERMINATED
                || state == TP_STATE_MONITORING);
index da863899637252d573eb1fc4cefb59aee151ffde..bbc009c6ae100c81dbd1546977ae7c61268e76c5 100644 (file)
@@ -85,6 +85,7 @@ namespace snort
 #define APPID_SESSION_NO_TPI                (1ULL << 38)
 #define APPID_SESSION_IGNORE_FLOW           (1ULL << 39)
 #define APPID_SESSION_IGNORE_FLOW_IDED      (1ULL << 40)
+#define APPID_SESSION_OOO_CHECK_TP          (1ULL << 41)
 #define APPID_SESSION_IGNORE_ID_FLAGS \
     (APPID_SESSION_IGNORE_FLOW | \
     APPID_SESSION_NOT_A_SERVICE | \
index 8a0d3b9473e6ea183c7f66fc684d2f9a8eb37d6d..e4234a05b9af73c5aef57843741cd3106b256ca5 100644 (file)
@@ -110,7 +110,7 @@ int NetworkSetManager::add_network_range_ex(NetworkSet* network_set, uint32_t ra
     }
 
     sflist_add_tail(&network_set->networks, (void*)network);
-    if (network_set->ids.insert(network->info.id).second == false)
+    if (network_set->ids.emplace(network->info.id).second == false)
     {
         ErrorMessage("NetworkSet: Failed to add id %u\n", network->info.id);
         return -1;
@@ -168,7 +168,7 @@ int NetworkSetManager::add_network_range6(NetworkSet* network_set, NSIPv6Addr* r
     }
 
     sflist_add_tail(&network_set->networks6, (void*)network);
-    if (network_set->ids6.insert(network->info.id).second == false)
+    if (network_set->ids6.emplace(network->info.id).second == false)
     {
         ErrorMessage("NetworkSet: Failed to add IPv6 id %u\n", network->info.id);
         return -1;
index b63c31a2a3830fe4b01a4fea01b9df934da9eeb5..0a8474812df4dfd27bc182c630e91fa86dc8381a 100644 (file)
@@ -366,10 +366,9 @@ bool ClientDiscovery::do_client_discovery(AppIdSession& asd, Packet* p,
     {
         if ( p->flow->get_session_flags() & SSNFLAG_MIDSTREAM )
             asd.client_disco_state = APPID_DISCO_STATE_FINISHED;
-        else if ( asd.is_tp_appid_available()
-            && ( tp_app_id > APP_ID_NONE && tp_app_id < SF_APPID_MAX ) )
+        else if ( tp_app_id > APP_ID_NONE and asd.is_tp_appid_available() )
         {
-            //tp has positively identified appId, Dig deeper only if sourcefire
+            // Third party has positively identified appId; Dig deeper only if our
             // detector identifies additional information
             entry = asd.app_info_mgr->get_app_info_entry(tp_app_id);
             if ( entry && entry->client_detector
@@ -393,12 +392,12 @@ bool ClientDiscovery::do_client_discovery(AppIdSession& asd, Packet* p,
     }
 
     //stop rna inspection as soon as tp has classified a valid AppId
-    if ( ( asd.client_disco_state == APPID_DISCO_STATE_STATEFUL ||
-           asd.client_disco_state == APPID_DISCO_STATE_DIRECT) &&
-         asd.client_disco_state == prevRnaClientState &&
-         !asd.get_session_flags(APPID_SESSION_NO_TPI)  &&
-         asd.is_tp_appid_available() &&
-         tp_app_id > APP_ID_NONE && tp_app_id < SF_APPID_MAX)
+    if ( tp_app_id > APP_ID_NONE and
+         ( asd.client_disco_state == APPID_DISCO_STATE_STATEFUL or
+           asd.client_disco_state == APPID_DISCO_STATE_DIRECT ) and
+         asd.client_disco_state == prevRnaClientState and
+         !asd.get_session_flags(APPID_SESSION_NO_TPI)  and
+         asd.is_tp_appid_available() )
     {
         entry = asd.app_info_mgr->get_app_info_entry(tp_app_id);
         if ( !( entry && entry->client_detector
index fd9e1db938a557d0a7e80b1332a564fdfd806942..e739cb2feff9f8374efa62d95ac2330fc2cb1148 100644 (file)
@@ -404,15 +404,15 @@ void HttpPatternMatchers::insert_http_pattern(enum httpPatternType pType,
     switch (pType)
     {
     case HTTP_PAYLOAD:
-        host_payload_patterns.push_back(pattern);
+        host_payload_patterns.emplace_back(pattern);
         break;
 
     case HTTP_URL:
-        url_patterns.push_back(pattern);
+        url_patterns.emplace_back(pattern);
         break;
 
     case HTTP_USER_AGENT:
-        client_agent_patterns.push_back(pattern);
+        client_agent_patterns.emplace_back(pattern);
         break;
     }
 }
@@ -464,17 +464,17 @@ void HttpPatternMatchers::remove_http_patterns_for_id(AppId id)
 
 void HttpPatternMatchers::insert_content_type_pattern(DetectorHTTPPattern& pattern)
 {
-    content_type_patterns.push_back(pattern);
+    content_type_patterns.emplace_back(pattern);
 }
 
 void HttpPatternMatchers::insert_url_pattern(DetectorAppUrlPattern* pattern)
 {
-    app_url_patterns.push_back(pattern);
+    app_url_patterns.emplace_back(pattern);
 }
 
 void HttpPatternMatchers::insert_rtmp_url_pattern(DetectorAppUrlPattern* pattern)
 {
-    rtmp_url_patterns.push_back(pattern);
+    rtmp_url_patterns.emplace_back(pattern);
 }
 
 void HttpPatternMatchers::insert_app_url_pattern(DetectorAppUrlPattern* pattern)
@@ -488,7 +488,7 @@ int HttpPatternMatchers::add_mlmp_pattern(tMlmpTree* matcher, DetectorHTTPPatter
 
     HostUrlDetectorPattern* detector = new HostUrlDetectorPattern(pattern.pattern,
         pattern.pattern_size);
-    host_url_patterns.push_back(detector);
+    host_url_patterns.emplace_back(detector);
 
     detector->payload_id = pattern.payload_id;
     detector->service_id = pattern.service_id;
@@ -516,7 +516,7 @@ int HttpPatternMatchers::add_mlmp_pattern(tMlmpTree* matcher, DetectorAppUrlPatt
 
     HostUrlDetectorPattern* detector = new HostUrlDetectorPattern(pattern.patterns.host.pattern,
         pattern.patterns.host.patternSize);
-    host_url_patterns.push_back(detector);
+    host_url_patterns.emplace_back(detector);
 
     if (pattern.patterns.path.pattern)
     {
@@ -589,7 +589,8 @@ static int chp_pattern_match(void* id, void*, int match_end_pos, void* data, voi
     ChpMatchDescriptor* cmd = (ChpMatchDescriptor*)data;
     CHPAction* target = (CHPAction*)id;
 
-    cmd->chp_matches[cmd->cur_ptype].push_back({ target, match_end_pos - target->psize });
+    cmd->chp_matches[cmd->cur_ptype].emplace_back( MatchedCHPAction{ target,
+        match_end_pos - target->psize } );
     return 0;
 }
 
@@ -602,8 +603,8 @@ static inline void chp_add_candidate_to_tally(CHPMatchTally& match_tally, CHPApp
             return;
         }
 
-    match_tally.push_back({ chpapp, chpapp->key_pattern_length_sum,
-                            chpapp->key_pattern_count - 1 });
+    match_tally.emplace_back( CHPMatchCandidate{ chpapp, chpapp->key_pattern_length_sum,
+        chpapp->key_pattern_count - 1 } );
 }
 
 // In addition to creating the linked list of matching actions this function will
index df74118e69f2aae8b9233fbd1407fa766a3f7dae..e9f1f506a0d00fba983083d76a753f7f16a3aa86 100644 (file)
@@ -125,7 +125,7 @@ TEST(http_url_patterns_tests, chp_add_candidate_to_tally)
     chc.chpapp = &chpapp;
     chc.key_pattern_countdown = 1;
     chc.key_pattern_length_sum = 0;
-    match_tally.push_back(chc);
+    match_tally.emplace_back(chc);
     chp_add_candidate_to_tally(match_tally, &chpapp);
     CHECK_EQUAL(match_tally[0].key_pattern_countdown, 0);
 }
@@ -262,7 +262,7 @@ TEST(http_url_patterns_tests, scan_chp_defer)
     chpa.appIdInstance = APP_ID_NONE;
     chpa.action = DEFER_TO_SIMPLE_DETECT;
     mchp.mpattern = &chpa;
-    cmd.chp_matches[RSP_BODY_FID].push_back(mchp);
+    cmd.chp_matches[RSP_BODY_FID].emplace_back(mchp);
     cmd.cur_ptype = RSP_BODY_FID;
     mod_config.safe_search_enabled = false;
     CHECK(hm->scan_chp(cmd, &version, &user, &total_found, &hsession, (const
@@ -278,7 +278,7 @@ TEST(http_url_patterns_tests, scan_chp_alt_appid)
     chpa.appIdInstance = APP_ID_NONE;
     chpa.action = ALTERNATE_APPID;
     mchp.mpattern = &chpa;
-    cmd.chp_matches[RSP_BODY_FID].push_back(mchp);
+    cmd.chp_matches[RSP_BODY_FID].emplace_back(mchp);
     cmd.cur_ptype = RSP_BODY_FID;
     mod_config.safe_search_enabled = false;
     CHECK(hm->scan_chp(cmd, &version, &user, &total_found, &hsession, (const
@@ -298,7 +298,7 @@ TEST(http_url_patterns_tests, scan_chp_extract_user)
     mchp.start_match_pos = 0;
     cmd.cur_ptype = RSP_BODY_FID;
     mod_config.safe_search_enabled = false;
-    cmd.chp_matches[RSP_BODY_FID].push_back(mchp);
+    cmd.chp_matches[RSP_BODY_FID].emplace_back(mchp);
     cmd.buffer[RSP_BODY_FID] = (const char*)"userid\n\rpassword";
     cmd.length[RSP_BODY_FID] = strlen(cmd.buffer[RSP_BODY_FID]);
     CHECK(hm->scan_chp(cmd, &version, &user, &total_found, &hsession, (const
@@ -320,7 +320,7 @@ TEST(http_url_patterns_tests, scan_chp_rewrite_field)
     chpa.psize = 1;
     mchp.mpattern = &chpa;
     mchp.start_match_pos = 0;
-    cmd.chp_matches[RSP_BODY_FID].push_back(mchp);
+    cmd.chp_matches[RSP_BODY_FID].emplace_back(mchp);
     cmd.buffer[RSP_BODY_FID] = my_chp_data;
     cmd.length[RSP_BODY_FID] = strlen(cmd.buffer[RSP_BODY_FID]);
     CHECK(hm->scan_chp(cmd, &version, &user, &total_found, &hsession, (const
@@ -342,7 +342,7 @@ TEST(http_url_patterns_tests, scan_chp_insert_without_action)
     chpa.psize = 1;
     mchp.mpattern = &chpa;
     mchp.start_match_pos = 0;
-    cmd.chp_matches[RSP_BODY_FID].push_back(mchp);
+    cmd.chp_matches[RSP_BODY_FID].emplace_back(mchp);
     cmd.buffer[RSP_BODY_FID] = my_chp_data;
     cmd.length[RSP_BODY_FID] = strlen(cmd.buffer[RSP_BODY_FID]);
     CHECK(hm->scan_chp(cmd, &version, &user, &total_found, &hsession, (const
@@ -364,7 +364,7 @@ TEST(http_url_patterns_tests, scan_chp_insert_with_action)
     chpa.psize = 1;
     mchp.mpattern = &chpa;
     mchp.start_match_pos = 0;
-    cmd.chp_matches[RSP_BODY_FID].push_back(mchp);
+    cmd.chp_matches[RSP_BODY_FID].emplace_back(mchp);
     cmd.buffer[RSP_BODY_FID] = my_chp_data;
     cmd.length[RSP_BODY_FID] = strlen(cmd.buffer[RSP_BODY_FID]);
     CHECK(hm->scan_chp(cmd, &version, &user, &total_found, &hsession, (const
@@ -382,7 +382,7 @@ TEST(http_url_patterns_tests, scan_chp_hold_and_default)
     chpa.appIdInstance = APP_ID_NONE;
     chpa.action = HOLD_FLOW;
     mchp.mpattern = &chpa;
-    cmd.chp_matches[RSP_BODY_FID].push_back(mchp);
+    cmd.chp_matches[RSP_BODY_FID].emplace_back(mchp);
     cmd.cur_ptype = RSP_BODY_FID;
     mod_config.safe_search_enabled = false;
     chpa.psize = 1;
@@ -399,7 +399,7 @@ TEST(http_url_patterns_tests, scan_chp_hold_and_default)
     chpa.appIdInstance = APP_ID_NONE;
     chpa.action = FUTURE_APPID_SESSION_SIP;
     mchp.mpattern = &chpa;
-    cmd.chp_matches[RSP_BODY_FID].push_back(mchp);
+    cmd.chp_matches[RSP_BODY_FID].emplace_back(mchp);
     CHECK(hm->scan_chp(cmd, &version, &user, &total_found, &hsession, (const
         AppIdModuleConfig*)&mod_config) == APP_ID_NONE);
     CHECK_EQUAL(true, test_find_all_done);
index 6687d1d04a43c29b08406c7d03ce8da1bda0b148..9caa0d174637ef9c63d310ccbcc5310a1fb03ed3 100644 (file)
@@ -200,7 +200,7 @@ bool AppIdOptionModule::set(const char*, Value& v, SnortConfig*)
 
         char *lcase_tok = AppInfoManager::strdup_to_lower(tok.c_str());
         string app_name(lcase_tok);
-        appid_table.insert(app_name);
+        appid_table.emplace(app_name);
         snort_free(lcase_tok);
     }
 
index 8a759dd8e3375f81c1faa7420259f96301f31bb9..57f9cedc0a3f6287db4416eb9ee859ae61b51323 100644 (file)
@@ -58,6 +58,6 @@ AppId find_length_app_cache(const LengthKey& key)
 
 bool add_length_app_cache(const LengthKey& key, AppId val)
 {
-    return (length_cache->insert(std::make_pair(key, val))).second == true;
+    return (length_cache->emplace(key, val)).second == true;
 }
 
index 40817036c70a77f83d953e247ae7d9ea60e2dc83..540eb2a4504efacb941e0a4bf639f95d84df6e58 100644 (file)
@@ -437,13 +437,13 @@ static int service_get_service_name(lua_State* L)
 }
 
 /**Is this a customer defined detector. Lua detectors can call this function to verify if the detector
- * was created by Sourcefire or not.
+ * was created by odp or not.
  * Callback could be used either at init or during packet processing
  *
  * @param Lua_State* - Lua state variable.
  * @param detector/stack - detector object
  * @return int - Number of elements on stack, which is always 1.
- * @return integer/stack - -1 if failed, 0 if sourcefire created, 1 otherwise.
+ * @return integer/stack - -1 if failed, 0 if odp created, 1 otherwise.
  */
 static int service_is_custom_detector(lua_State* L)
 {
@@ -1208,7 +1208,7 @@ static int create_chp_application(AppId appIdInstance, unsigned app_type_flags,
     new_app->app_type_flags = app_type_flags;
     new_app->num_matches = num_matches;
 
-    if (CHP_glossary->insert(std::make_pair(appIdInstance, new_app)).second == false)
+    if (CHP_glossary->emplace(appIdInstance, new_app).second == false)
     {
         ErrorMessage("LuaDetectorApi:Failed to add CHP for appId %d, instance %d",
             CHP_APPIDINSTANCE_TO_ID(appIdInstance), CHP_APPIDINSTANCE_TO_INSTANCE(appIdInstance));
index ae86d265ffdfdd0dfdbd3df181ce8cc2979121c9..264fd87afeaee66487718ae3e0e0255bd786a4f9 100644 (file)
@@ -174,12 +174,12 @@ void ServiceDiscovery::initialize()
     for ( auto kv : tcp_detectors )
     {
         kv.second->initialize();
-        service_detector_list.push_back(kv.second);
+        service_detector_list.emplace_back(kv.second);
     }
     for ( auto kv : udp_detectors )
     {
         kv.second->initialize();
-        service_detector_list.push_back(kv.second);    
+        service_detector_list.emplace_back(kv.second);
     }
 
 #ifdef APPID_DEEP_PERF_PROFILING
@@ -204,14 +204,14 @@ int ServiceDiscovery::add_service_port(AppIdDetector* detector, const ServiceDet
         if (pp.port == 21 && !ftp_service)
             ftp_service = service;
 
-        tcp_services[ pp.port ].push_back(service);
+        tcp_services[ pp.port ].emplace_back(service);
     }
     else if (pp.proto == IpProtocol::UDP)
     {
         if (!pp.reversed_validation)
-            udp_services[ pp.port ].push_back(service);
+            udp_services[ pp.port ].emplace_back(service);
         else
-            udp_reversed_services[ pp.port ].push_back(service);
+            udp_reversed_services[ pp.port ].emplace_back(service);
     }
     else
     {
@@ -289,7 +289,7 @@ void ServiceDiscovery::match_by_pattern(AppIdSession& asd, const Packet* pkt, Ip
 
         std::vector<ServiceMatch*> smOrderedList;
         for (ServiceMatch* sm = match_list; sm; sm = sm->next)
-            smOrderedList.push_back(sm);
+            smOrderedList.emplace_back(sm);
 
         if (!smOrderedList.empty() )
         {
@@ -299,7 +299,7 @@ void ServiceDiscovery::match_by_pattern(AppIdSession& asd, const Packet* pkt, Ip
                 if ( std::find(asd.service_candidates.begin(), asd.service_candidates.end(),
                     sm->service) == asd.service_candidates.end() )
                 {
-                    asd.service_candidates.push_back(sm->service);
+                    asd.service_candidates.emplace_back(sm->service);
                 }
                 snort_free(sm);
             }
@@ -396,7 +396,7 @@ void ServiceDiscovery::get_next_service(const Packet* p, const AppidSessionDirec
                     proto, p->ptrs.sp, asd.is_decrypted());
                 std::unordered_map<uint16_t, std::vector<ServiceDetector*>>::iterator urs_iterator;
                 if ( rsds && rsds->get_service() )
-                    asd.service_candidates.push_back(rsds->get_service());
+                    asd.service_candidates.emplace_back(rsds->get_service());
                 else if ( ( urs_iterator = udp_reversed_services.find(p->ptrs.sp) )
                           != udp_reversed_services.end() and !urs_iterator->second.empty() )
                 {
@@ -623,46 +623,40 @@ bool ServiceDiscovery::do_service_discovery(AppIdSession& asd, Packet* p,
                 asd.set_session_flags(APPID_SESSION_SERVICE_DETECTED);
                 asd.service_disco_state = APPID_DISCO_STATE_FINISHED;
 
-                if ( (asd.is_tp_appid_available() ||
-                      asd.get_session_flags(APPID_SESSION_NO_TPI))
-                     && asd.payload.get_id() == APP_ID_NONE )
+                if (asd.payload.get_id() == APP_ID_NONE and
+                    (asd.is_tp_appid_available() or asd.get_session_flags(APPID_SESSION_NO_TPI)))
                     asd.payload.set_id(APP_ID_UNKNOWN);
             }
         }
-        else if (asd.is_tp_appid_available())
+        else if (tp_app_id > APP_ID_NONE and asd.is_tp_appid_available())
         {
-            if (tp_app_id > APP_ID_NONE)
+            // Third party has positively identified appId; Dig deeper only if our
+            // detector identifies additional information or flow is UDP reversed.
+            AppInfoTableEntry* entry = asd.app_info_mgr->get_app_info_entry(tp_app_id);
+            if ( entry && entry->service_detector &&
+                ( ( entry->flags & APPINFO_FLAG_SERVICE_ADDITIONAL ) ||
+                ( ( entry->flags & APPINFO_FLAG_SERVICE_UDP_REVERSED ) &&
+                asd.protocol == IpProtocol::UDP &&
+                asd.get_session_flags(APPID_SESSION_INITIATOR_MONITORED |
+                APPID_SESSION_RESPONDER_MONITORED) ) ) )
             {
-                //tp has positively identified appId, Dig deeper only if sourcefire
-                // detector identifies additional information or flow is UDP reversed.
-                AppInfoTableEntry* entry = asd.app_info_mgr->get_app_info_entry(tp_app_id);
-                if ( entry && entry->service_detector &&
-                    ( ( entry->flags & APPINFO_FLAG_SERVICE_ADDITIONAL ) ||
-                    ( ( entry->flags & APPINFO_FLAG_SERVICE_UDP_REVERSED ) &&
-                    asd.protocol == IpProtocol::UDP &&
-                    asd.get_session_flags(APPID_SESSION_INITIATOR_MONITORED |
-                    APPID_SESSION_RESPONDER_MONITORED) ) ) )
-                {
-                    asd.free_flow_data_by_mask(APPID_SESSION_DATA_SERVICE_MODSTATE_BIT);
-                    asd.service_detector = entry->service_detector;
-                    asd.service_disco_state = APPID_DISCO_STATE_STATEFUL;
-                }
-                else
-                    asd.stop_rna_service_inspection(p, direction);
+                asd.free_flow_data_by_mask(APPID_SESSION_DATA_SERVICE_MODSTATE_BIT);
+                asd.service_detector = entry->service_detector;
+                asd.service_disco_state = APPID_DISCO_STATE_STATEFUL;
             }
             else
-                asd.service_disco_state = APPID_DISCO_STATE_STATEFUL;
+                asd.stop_rna_service_inspection(p, direction);
         }
         else
             asd.service_disco_state = APPID_DISCO_STATE_STATEFUL;
     }
 
     //stop rna inspection as soon as tp has classified a valid AppId later in the session
-    if ( asd.service_disco_state == APPID_DISCO_STATE_STATEFUL &&
-         prevRnaServiceState == APPID_DISCO_STATE_STATEFUL &&
-         !asd.get_session_flags(APPID_SESSION_NO_TPI) &&
-         asd.is_tp_appid_available() &&
-         tp_app_id > APP_ID_NONE && tp_app_id < SF_APPID_MAX)
+    if ( tp_app_id > APP_ID_NONE and
+         asd.service_disco_state == APPID_DISCO_STATE_STATEFUL and
+         prevRnaServiceState == APPID_DISCO_STATE_STATEFUL and
+         !asd.get_session_flags(APPID_SESSION_NO_TPI) and
+         asd.is_tp_appid_available() )
     {
         AppInfoTableEntry* entry = asd.app_info_mgr->get_app_info_entry(tp_app_id);
         if ( entry && entry->service_detector &&
@@ -714,9 +708,9 @@ bool ServiceDiscovery::do_service_discovery(AppIdSession& asd, Packet* p,
             APPID_SESSION_CONTINUE) == APPID_SESSION_SERVICE_DETECTED)
         {
             asd.service_disco_state = APPID_DISCO_STATE_FINISHED;
-            if ( (asd.is_tp_appid_available() ||
-                  asd.get_session_flags(APPID_SESSION_NO_TPI)) &&
-                 asd.payload.get_id() == APP_ID_NONE )
+            if ( asd.payload.get_id() == APP_ID_NONE and
+                 ( asd.is_tp_appid_available() or
+                   asd.get_session_flags(APPID_SESSION_NO_TPI) ) )
             {
                 asd.payload.set_id(APP_ID_UNKNOWN);
             }
index 7e13eaa3190025d5ca2cb48359b054f18f90f035..41aee4ba370559df2589ee49a87be000bdffe9be 100644 (file)
@@ -78,8 +78,8 @@ class ThirdPartyAppIDSessionImpl : public ThirdPartyAppIDSession
 public:
 
     bool reset() { return 1; }
-    bool process(const snort::Packet&, AppidSessionDirection, vector<AppId>&,
-        ThirdPartyAppIDAttributeData&) { return 1; }
+    TPState process(const snort::Packet&, AppidSessionDirection, vector<AppId>&,
+        ThirdPartyAppIDAttributeData&) { return TP_STATE_INIT; }
 
     int disable_flags(uint32_t) { return 0; }
     TPState get_state() { return state; }
index 8b7eb41fbe623d9249b1c467b5a1fafe9b75102c..bf3c70d31dab4c056159265a8b1949825da789c6 100644 (file)
@@ -50,8 +50,8 @@ public:
     void getXffFields()
     {
         xff_fields.clear();
-        xff_fields.push_back(HTTP_XFF_FIELD_X_FORWARDED_FOR);
-        xff_fields.push_back(HTTP_XFF_FIELD_TRUE_CLIENT_IP);
+        xff_fields.emplace_back(HTTP_XFF_FIELD_X_FORWARDED_FOR);
+        xff_fields.emplace_back(HTTP_XFF_FIELD_TRUE_CLIENT_IP);
     }
 };
 
index 9b1e3cc14fb76463082e7686d4fc86151a77bf5f..95bc72cf21e637c85ca02a5b96e958892cc1697b 100644 (file)
@@ -43,7 +43,7 @@ public:
     virtual ~ThirdPartyAppIDSession() { }
 
     virtual bool reset() = 0;            // just reset state
-    virtual bool process(const snort::Packet&,
+    virtual TPState process(const snort::Packet&,
         AppidSessionDirection direction,
         std::vector<AppId>& proto_list,
         ThirdPartyAppIDAttributeData& attribute_data) = 0;
index 24dbda0e07b26e9b1c56959cc267f4c5df689886..5846eb68280cd7b21bd38e0512fd291d3f3562e1 100644 (file)
@@ -80,22 +80,18 @@ void tp_appid_profiler_init()
 }
 #endif
 
-// std::vector does not have a convenient find() function.
-// There is a generic std::find() in <algorithm>, but this might be faster.
-template<class Type_t, class ValType_t>
-static bool contains(const vector<Type_t>& vec, const ValType_t& val)
+static inline bool contains(const vector<AppId>& vec, const AppId val)
 {
-    const Type_t* v=&vec[0], * vend=v+vec.size();
-    while (v<vend)
-        if ( *(v++)==(Type_t)val )
+    for (const auto& elem : vec)
+        if (elem == val)
             return true;
     return false;
 }
 
 static inline bool check_reinspect(const Packet* p, const AppIdSession& asd)
 {
-    return p->dsize && !asd.get_session_flags(APPID_SESSION_NO_TPI) &&
-           asd.get_session_flags(APPID_SESSION_HTTP_SESSION) && asd.is_tp_appid_done();
+    return asd.get_session_flags(APPID_SESSION_HTTP_SESSION) and
+           !asd.get_session_flags(APPID_SESSION_NO_TPI) and asd.is_tp_appid_done() and p->dsize;
 }
 
 static inline int check_ssl_appid_for_reinspect(AppId app_id)
@@ -701,7 +697,7 @@ bool do_tp_discovery(AppIdSession& asd, IpProtocol protocol,
                         FatalError("Could not allocate asd.tpsession data");
                 }      // debug output of packet content
 
-                asd.tpsession->process(*p, direction,
+                TPState current_tp_state = asd.tpsession->process(*p, direction,
                     tp_proto_list, tp_attribute_data);
                 tp_app_id = asd.tpsession->get_appid(tp_confidence);
 
@@ -713,8 +709,13 @@ bool do_tp_discovery(AppIdSession& asd, IpProtocol protocol,
                 if (asd.get_session_flags(APPID_SESSION_APP_REINSPECT_SSL))
                     asd.clear_session_flags(APPID_SESSION_APP_REINSPECT_SSL);
 
-                if (asd.tpsession->get_state() == TP_STATE_CLASSIFIED)
+                if (current_tp_state == TP_STATE_CLASSIFIED)
                     asd.clear_session_flags(APPID_SESSION_APP_REINSPECT);
+                else if (current_tp_state == TP_STATE_MONITORING)
+                {
+                    asd.tpsession->disable_flags(TP_SESSION_FLAG_ATTRIBUTE |
+                        TP_SESSION_FLAG_TUNNELING | TP_SESSION_FLAG_FUTUREFLOW);
+                }
 
                 if (appidDebug->is_active())
                 {
@@ -738,7 +739,7 @@ bool do_tp_discovery(AppIdSession& asd, IpProtocol protocol,
                 }
                 // if the third-party appId must be treated as a client, do it now
                 unsigned app_info_flags = asd.app_info_mgr->get_app_info_flags(tp_app_id,
-                    APPINFO_FLAG_TP_CLIENT | APPINFO_FLAG_IGNORE);
+                    APPINFO_FLAG_TP_CLIENT | APPINFO_FLAG_IGNORE | APPINFO_FLAG_SSL_SQUELCH);
 
                 if ( app_info_flags & APPINFO_FLAG_TP_CLIENT )
                     asd.client.set_id(tp_app_id);
@@ -746,7 +747,8 @@ bool do_tp_discovery(AppIdSession& asd, IpProtocol protocol,
                 process_third_party_results(asd, tp_confidence, tp_proto_list, tp_attribute_data,
                     change_bits);
 
-                if (asd.get_session_flags(APPID_SESSION_SSL_SESSION) &&
+                if ((app_info_flags & APPINFO_FLAG_SSL_SQUELCH) and
+                    asd.get_session_flags(APPID_SESSION_SSL_SESSION) and
                     !(asd.scan_flags & SCAN_SSL_HOST_FLAG))
                 {
                     setSSLSquelch(p, 1, tp_app_id, asd.get_inspector());
@@ -765,26 +767,19 @@ bool do_tp_discovery(AppIdSession& asd, IpProtocol protocol,
                     else
                         tp_app_id = APP_ID_NONE;
                 }
+                if (tp_app_id == APP_ID_SSL &&
+                    (Stream::get_snort_protocol_id(p->flow) == snortId_for_ftp_data))
+                {
+                    //  If we see SSL on an FTP data channel set tpAppId back
+                    //  to APP_ID_NONE so the FTP preprocessor picks up the flow.
+                    tp_app_id = APP_ID_NONE;
+                }
             }
             else
             {
                 tp_app_id = APP_ID_NONE;
             }
 
-            if (asd.tpsession and asd.tpsession->get_state() == TP_STATE_MONITORING)
-            {
-                asd.tpsession->disable_flags(TP_SESSION_FLAG_ATTRIBUTE |
-                    TP_SESSION_FLAG_TUNNELING | TP_SESSION_FLAG_FUTUREFLOW);
-            }
-
-            if (tp_app_id == APP_ID_SSL &&
-                (Stream::get_snort_protocol_id(p->flow) == snortId_for_ftp_data))
-            {
-                //  If we see SSL on an FTP data channel set tpAppId back
-                //  to APP_ID_NONE so the FTP preprocessor picks up the flow.
-                tp_app_id = APP_ID_NONE;
-            }
-
             if ( tp_app_id > APP_ID_NONE
                 && (!asd.get_session_flags(APPID_SESSION_APP_REINSPECT)
                 || asd.payload.get_id() > APP_ID_NONE) )
@@ -815,14 +810,14 @@ bool do_tp_discovery(AppIdSession& asd, IpProtocol protocol,
                     if (asd.payload.get_id() == APP_ID_HTTP_SSL_TUNNEL)
                         snort_app_id = APP_ID_SSL;
 
-                    if (asd.is_tp_appid_available() && asd.get_tp_app_id() ==
-                        APP_ID_HTTP
-                        && !asd.get_session_flags(APPID_SESSION_APP_REINSPECT))
+                    if (asd.get_tp_app_id() == APP_ID_HTTP and
+                        !asd.get_session_flags(APPID_SESSION_APP_REINSPECT) and
+                        asd.is_tp_appid_available())
                     {
                         asd.client_disco_state = APPID_DISCO_STATE_FINISHED;
+                        asd.service_disco_state = APPID_DISCO_STATE_FINISHED;
                         asd.set_session_flags(APPID_SESSION_CLIENT_DETECTED |
                             APPID_SESSION_SERVICE_DETECTED);
-                        asd.client_disco_state = APPID_DISCO_STATE_FINISHED;
                         asd.clear_session_flags(APPID_SESSION_CONTINUE);
                         if (direction == APP_ID_FROM_INITIATOR)
                         {
index bf5b273521d8981dd74cc38c87c82285dcfbfc3c..481a43498ef293efbdc73e0e9b90222a3c47ee61 100644 (file)
@@ -127,7 +127,7 @@ bool ArpSpoofModule::begin(const char*, int, SnortConfig*)
 bool ArpSpoofModule::end(const char*, int idx, SnortConfig*)
 {
     if ( idx )
-        config->ipmel.push_back(host);
+        config->ipmel.emplace_back(host);
     else
         config->check_overwrite = !config->ipmel.empty();
 
index 3e174c7b3b36956ef5fedbab42544e6c2000be1f..115fff16e6e274413d8ff3d1d75d0a0ff12a051a 100644 (file)
@@ -344,7 +344,7 @@ bool BinderModule::end(const char* fqn, int idx, SnortConfig* sc)
         if ( work->use.name.empty() )
             work->use.name = work->use.type;
 
-        bindings.push_back(work);
+        bindings.emplace_back(work);
         work = nullptr;
     }
     return true;
@@ -356,7 +356,7 @@ void BinderModule::add(const char* svc, const char* type)
     b->when.svc = svc;
     b->use.type = type;
     b->use.name = type;
-    bindings.push_back(b);
+    bindings.emplace_back(b);
 }
 
 void BinderModule::add(unsigned proto, const char* type)
@@ -365,7 +365,7 @@ void BinderModule::add(unsigned proto, const char* type)
     b->when.protos = proto;
     b->use.type = type;
     b->use.name = type;
-    bindings.push_back(b);
+    bindings.emplace_back(b);
 }
 
 vector<Binding*>& BinderModule::get_data()
index 8d0b603e3a8fed842d5becdf041f4db392519a3a..d57e2936cbe18c87763082508a1eac1e503c50b0 100644 (file)
@@ -578,7 +578,7 @@ public:
     void eval(Packet*) override { }
 
     void add(Binding* b)
-    { bindings.push_back(b); }
+    { bindings.emplace_back(b); }
 
     void handle_flow_setup(Packet*);
     void handle_flow_service_change(Flow*);
index 4e923e241e9adfd6dea4f12a2149710ea6628b9f..e6f7f67e137850976d57c6a773dbc14ae443561b 100644 (file)
@@ -388,16 +388,16 @@ void NormalizeModule::add_test_peg(const PegInfo& norm) const
 
     std::string* test_name = new std::string("test_");
     test_name->append(norm.name);
-    test_text.push_back(test_name);
+    test_text.emplace_back(test_name);
     test.name = test_text.back()->c_str();
 
     std::string* test_info = new std::string("test ");
     test_info->append(norm.help);
-    test_text.push_back(test_info);
+    test_text.emplace_back(test_info);
     test.help = test_text.back()->c_str();
 
     test.type = norm.type;
-    test_pegs.push_back(test);
+    test_pegs.emplace_back(test);
 }
 
 const PegInfo* NormalizeModule::get_pegs() const
@@ -411,7 +411,7 @@ const PegInfo* NormalizeModule::get_pegs() const
     while ( p->name )
     {
         add_test_peg(*p);
-        test_pegs.push_back(*p);
+        test_pegs.emplace_back(*p);
         p++;
     }
 
@@ -421,11 +421,11 @@ const PegInfo* NormalizeModule::get_pegs() const
     while ( p->name )
     {
         add_test_peg(*p);
-        test_pegs.push_back(*p);
+        test_pegs.emplace_back(*p);
         p++;
     }
 
-    test_pegs.push_back(*p);
+    test_pegs.emplace_back(*p);
     return &test_pegs[0];
 }
 
index ac7c644fa6b2663f5364c4e8b13fbf0b41de18d0..31ca03a9c09bfffcc08d92970905846102416bbd 100644 (file)
@@ -307,7 +307,7 @@ public:
 protected:
     void write_packet(Packet* p) override
     {
-        pcap.push_back(p);
+        pcap.emplace_back(p);
         write_packet_called = true;
     }
 
index af5a3b5cd8fe9a345c255f88775c5b115a72a79c..74248b76a562c69cada91926e9312372a64f2663 100644 (file)
@@ -198,7 +198,7 @@ PacketTracer::TracerMute PacketTracer::get_mute()
     if ( s_pkt_trace == nullptr )
         return global_mutes.val - 1;
 
-    s_pkt_trace->mutes.push_back(false);
+    s_pkt_trace->mutes.emplace_back(false);
     return s_pkt_trace->mutes.size() - 1;
 }
 
index fa43edc7ccd72f506f45a1f652cd63fb0e375610..f04471287cd60b63ca21f96a8d71ea4690021ea6 100644 (file)
@@ -120,7 +120,7 @@ TEST_CASE("module stats", "[BaseTracker]")
     ModuleConfig mod_cfg;
     mod_cfg.ptr = &mod;
     mod_cfg.pegs = {0, 2, 4};
-    config.modules.push_back(mod_cfg);
+    config.modules.emplace_back(mod_cfg);
 
     MockBaseTracker tracker(&config);
     MockFormatter *formatter = (MockFormatter*)tracker.output;
index 0072cb57382f5fc75298544aa9a2c497a62610c7..0bfb9d339f064454420bfc100cb7967593bf5b0a 100644 (file)
@@ -131,9 +131,9 @@ TEST_CASE("csv output", "[CSVFormatter]")
     f.finalize_fields();
     f.init_output(fh);
 
-    kvp.push_back(50);
-    kvp.push_back(60);
-    kvp.push_back(70);
+    kvp.emplace_back(50);
+    kvp.emplace_back(60);
+    kvp.emplace_back(70);
 
     f.write(fh, (time_t)1234567890);
 
index 6da25991820c579063def29d469a4af6455d606c..b0defc60db1725b9f94f6ba1c7803d55b4613a5f 100644 (file)
@@ -52,8 +52,8 @@ static string lowercase(string s)
 
 void FbsFormatter::register_field(const std::string& name, PegCount* value)
 {
-    non_offset_names.push_back(name);
-    non_offset_values.push_back(value);
+    non_offset_names.emplace_back(name);
+    non_offset_values.emplace_back(value);
 }
 
 void FbsFormatter::register_field(const std::string& name, const char* value)
@@ -61,9 +61,9 @@ void FbsFormatter::register_field(const std::string& name, const char* value)
     FormatterValue fv;
     fv.s = value;
 
-    offset_names.push_back(name);
-    offset_types.push_back(FT_STRING);
-    offset_values.push_back(fv);
+    offset_names.emplace_back(name);
+    offset_types.emplace_back(FT_STRING);
+    offset_values.emplace_back(fv);
 }
 
 void FbsFormatter::register_field(const std::string& name, std::vector<PegCount>* value)
@@ -71,9 +71,9 @@ void FbsFormatter::register_field(const std::string& name, std::vector<PegCount>
     FormatterValue fv;
     fv.ipc = value;
 
-    offset_names.push_back(name);
-    offset_types.push_back(FT_IDX_PEG_COUNT);
-    offset_values.push_back(fv);
+    offset_names.emplace_back(name);
+    offset_types.emplace_back(FT_IDX_PEG_COUNT);
+    offset_values.emplace_back(fv);
 }
 
 //Apply order to fields so that leaf nodes are created first in one pass
@@ -159,26 +159,26 @@ void FbsFormatter::finalize_fields()
 
     auto reflection_schema = reflection::GetSchema(schema_builder.GetBufferPointer());
     auto root_fields = reflection_schema->root_table()->fields();
-    vtable_offsets.push_back(vector<flatbuffers::uoffset_t>());
+    vtable_offsets.emplace_back(vector<flatbuffers::uoffset_t>());
 
     for( unsigned i = 0; i < section_names.size(); i++ )
     {
-        vtable_offsets.push_back(vector<flatbuffers::uoffset_t>());
+        vtable_offsets.emplace_back(vector<flatbuffers::uoffset_t>());
 
         auto module_field = root_fields->LookupByKey(lowercase(section_names[i]).c_str());
-        vtable_offsets[0].push_back(module_field->offset());
+        vtable_offsets[0].emplace_back(module_field->offset());
 
         auto module_table = reflection_schema->objects()->Get(module_field->type()->index());
         for( unsigned j = 0; j < field_names[i].size(); j++ )
         {
             auto field = module_table->fields()->LookupByKey(lowercase(field_names[i][j]).c_str());
-            vtable_offsets[i + 1].push_back(field->offset());
+            vtable_offsets[i + 1].emplace_back(field->offset());
 
             if( types[i][j] == FT_IDX_PEG_COUNT )
             {
                 auto field_name = lowercase(field_names[i][j]) + "_map";
                 field = module_table->fields()->LookupByKey(field_name.c_str());
-                vtable_offsets[i + 1].push_back(field->offset());
+                vtable_offsets[i + 1].emplace_back(field->offset());
             }
         }
     }
@@ -241,8 +241,8 @@ void FbsFormatter::write(FILE* fh, time_t timestamp)
                         if( ipc[k] )
                         {
                             nz_found = true;
-                            map.push_back(k);
-                            mapped_ipc.push_back(ipc[k]);
+                            map.emplace_back(k);
+                            mapped_ipc.emplace_back(ipc[k]);
 
                             if( map.size() > nz_break_even )
                                 break;
index 224cb6171473c74db2c61a1fdd9d0e74680c26cc..755e5166d31364cbfc6fed58f91818d932b8aa23 100644 (file)
@@ -164,9 +164,9 @@ TEST_CASE("json output", "[JSONFormatter]")
     f.finalize_fields();
     f.init_output(fh);
 
-    kvp.push_back(50);
-    kvp.push_back(0);
-    kvp.push_back(70);
+    kvp.emplace_back(50);
+    kvp.emplace_back(0);
+    kvp.emplace_back(70);
     
     f.write(fh, (time_t)1234567890);
 
index 0f5a43c78af0fa088475bc0c7474d54bcfbb28ea..a1d0445d990d483f633542dacb00879388d35418 100644 (file)
@@ -28,11 +28,11 @@ using namespace std;
 
 void PerfFormatter::register_section(const string& name)
 {
-    types.push_back(vector<FormatterType>());
-    values.push_back(vector<FormatterValue>());
+    types.emplace_back(vector<FormatterType>());
+    values.emplace_back(vector<FormatterValue>());
 
-    section_names.push_back(name);
-    field_names.push_back(vector<string>());
+    section_names.emplace_back(name);
+    field_names.emplace_back(vector<string>());
 
     last_section++;
 }
@@ -42,10 +42,10 @@ void PerfFormatter::register_field(const string& name, PegCount* val)
     FormatterValue fv;
     fv.pc = val;
 
-    values[last_section].push_back(fv);
-    types[last_section].push_back(FT_PEG_COUNT);
+    values[last_section].emplace_back(fv);
+    types[last_section].emplace_back(FT_PEG_COUNT);
 
-    field_names[last_section].push_back(name);
+    field_names[last_section].emplace_back(name);
 }
 
 void PerfFormatter::register_field(const string& name, const char* val)
@@ -53,10 +53,10 @@ void PerfFormatter::register_field(const string& name, const char* val)
     FormatterValue fv;
     fv.s = val;
 
-    values[last_section].push_back(fv);
-    types[last_section].push_back(FT_STRING);
+    values[last_section].emplace_back(fv);
+    types[last_section].emplace_back(FT_STRING);
 
-    field_names[last_section].push_back(name);
+    field_names[last_section].emplace_back(name);
 }
 
 void PerfFormatter::register_field(const string& name, vector<PegCount>* val)
@@ -64,9 +64,9 @@ void PerfFormatter::register_field(const string& name, vector<PegCount>* val)
     FormatterValue fv;
     fv.ipc = val;
 
-    values[last_section].push_back(fv);
-    types[last_section].push_back(FT_IDX_PEG_COUNT);
+    values[last_section].emplace_back(fv);
+    types[last_section].emplace_back(FT_IDX_PEG_COUNT);
 
-    field_names[last_section].push_back(name);
+    field_names[last_section].emplace_back(name);
 }
 
index 54c560ef8de2983560c367d10e5afa6b41947d25..1f84533612b0b9dad9765ad43b283632f8cc7f15 100644 (file)
@@ -115,9 +115,7 @@ public:
     {
         for( unsigned i = 0; i < values.size(); i++ )
             for( unsigned j = 0; j < values[i].size(); j++ )
-                public_values.insert(std::pair<std::string, FormatterValue>(
-                    section_names[i] + "." + field_names[i][j],
-                    values[i][j]));
+                public_values.emplace(section_names[i] + "." + field_names[i][j], values[i][j]);
    }
 };
 #endif
index 710c6afb91be99aadd6dcac98cf556cfb923b0da..74f9915b0c5194df5255513be20d2f953d4e547f 100644 (file)
@@ -196,7 +196,7 @@ bool PerfMonModule::begin(const char* fqn, int idx, SnortConfig*)
         config = new PerfConfig;
     }
     if ( idx != 0 && strcmp(fqn, "perf_monitor.modules") == 0 )
-        config->modules.push_back(ModuleConfig());
+        config->modules.emplace_back(ModuleConfig());
 
     return true;
 }
@@ -258,7 +258,7 @@ bool ModuleConfig::resolve()
     if ( peg_names.empty() )
     {
         for ( unsigned i = 0; peg_info[i].name != nullptr; i++ )
-            pegs.push_back(i);
+            pegs.emplace_back(i);
     }
     else
     {
@@ -269,7 +269,7 @@ bool ModuleConfig::resolve()
             if ( peg_ittr != peg_names.end() )
             {
                 peg_ittr->second = true;
-                pegs.push_back(i);
+                pegs.emplace_back(i);
             }
         }
 
@@ -296,7 +296,7 @@ bool PerfConfig::resolve()
         {
             ModuleConfig cfg;
             cfg.set_name(mod->get_name());
-            modules.push_back(cfg);
+            modules.emplace_back(cfg);
         }
     }
 
@@ -306,7 +306,7 @@ bool PerfConfig::resolve()
             return false;
 
         if ( mod.ptr->counts_need_prep() )
-            mods_to_prep.push_back(mod.ptr);
+            mods_to_prep.emplace_back(mod.ptr);
     }
 
     return true;
index 89dde481e299eeb7ac4a8a6f6e0e0ab66d6a31cc..5fa927419536a707351930372c5e06aa509fcc74 100644 (file)
@@ -237,19 +237,19 @@ void PerfMonitor::tinit()
     trackers = new std::vector<PerfTracker*>();
 
     if (config->perf_flags & PERF_BASE)
-        trackers->push_back(new BaseTracker(config));
+        trackers->emplace_back(new BaseTracker(config));
 
     if (config->perf_flags & PERF_FLOW)
-        trackers->push_back(new FlowTracker(config));
+        trackers->emplace_back(new FlowTracker(config));
 
     if (config->perf_flags & PERF_FLOWIP)
     {
         flow_ip_tracker = new FlowIPTracker(config);
-        trackers->push_back(flow_ip_tracker);
+        trackers->emplace_back(flow_ip_tracker);
     }
 
     if (config->perf_flags & PERF_CPU )
-        trackers->push_back(new CPUTracker(config));
+        trackers->emplace_back(new CPUTracker(config));
 
     for (unsigned i = 0; i < trackers->size(); i++)
     {
index 697dccab4d1b4e533906ca2f8b41406cae94c9a7..92788d5e49eb910ff8649a236f07f938e0994fc9 100644 (file)
@@ -130,9 +130,9 @@ TEST_CASE("text output", "[TextFormatter]")
     f.finalize_fields();
     f.init_output(fh);
 
-    kvp.push_back(50);
-    kvp.push_back(0);
-    kvp.push_back(70);
+    kvp.emplace_back(50);
+    kvp.emplace_back(0);
+    kvp.emplace_back(70);
 
     f.write(fh, (time_t)1234567890);
 
index 270a2741d47d7846965b22e2088655647e75633c..6ecceddd32b4c9b4d17005decd05c9eca635fa87 100644 (file)
@@ -33,7 +33,6 @@
 #include "packet_io/active.h"
 #include "profiler/profiler.h"
 
-#include "reputation_module.h"
 #include "reputation_parse.h"
 
 #define VERDICT_REASON_REPUTATION 19
@@ -74,8 +73,6 @@ const char* WhiteActionOption[] =
  */
 static void snort_reputation(ReputationConfig* GlobalConf, Packet* p);
 
-unsigned ReputationFlowData::inspector_id = 0;
-
 static void print_iplist_stats(ReputationConfig* config)
 {
     /*Print out the summary*/
@@ -313,20 +310,6 @@ static unsigned create_reputation_id()
 // class stuff
 //-------------------------------------------------------------------------
 
-class Reputation : public Inspector
-{
-public:
-    Reputation(ReputationConfig*);
-
-    void show(SnortConfig*) override;
-    void eval(Packet*) override;
-
-private:
-    ReputationConfig config;
-    unsigned reputation_id;
-    bool is_reputation_disabled(Flow* flow);
-};
-
 Reputation::Reputation(ReputationConfig* pc)
 {
     reputation_id = create_reputation_id();
@@ -348,26 +331,6 @@ Reputation::Reputation(ReputationConfig* pc)
     reputationstats.memory_allocated = sfrt_flat_usage(conf->ip_list);
 }
 
-bool Reputation::is_reputation_disabled(Flow* flow)
-{
-    if (!flow)
-        return false;
-
-    ReputationFlowData* fd = (ReputationFlowData*)flow->get_flow_data(
-        ReputationFlowData::inspector_id);
-
-    if (!fd)
-    {
-        fd = new ReputationFlowData;
-        flow->set_flow_data(fd);
-    }
-    else if (fd->checked_reputation_id == reputation_id) // reputation previously checked
-        return true;
-
-    fd->checked_reputation_id = reputation_id; // disable future reputation checking
-    return false;
-}
-
 void Reputation::show(SnortConfig*)
 {
     print_reputation_conf(&config);
@@ -380,11 +343,19 @@ void Reputation::eval(Packet* p)
     // precondition - what we registered for
     assert(p->has_ip());
 
-    if (!p->is_rebuilt() && !is_reputation_disabled(p->flow))
+    if (p->is_rebuilt())
+        return;
+
+    if (p->flow)
     {
-        snort_reputation(&config, p);
-        ++reputationstats.packets;
+        if (p->flow->reputation_id == reputation_id) // reputation previously checked
+            return;
+        else
+            p->flow->reputation_id = reputation_id; // disable future reputation checking
     }
+
+    snort_reputation(&config, p);
+    ++reputationstats.packets;
 }
 
 //-------------------------------------------------------------------------
@@ -399,7 +370,6 @@ static void mod_dtor(Module* m)
 
 static void reputation_init()
 {
-    ReputationFlowData::init();
     PacketTracer::register_verdict_reason(VERDICT_REASON_REPUTATION, PacketTracer::PRIORITY_LOW);
 }
 
index 410add11422b2fdd6e1367126b285343bb752eeb..6c8bbb8e50b94197da202f99386e3f4676ff2b18 100644 (file)
 
 #include "flow/flow.h"
 
-class ReputationFlowData : public snort::FlowData
+#include "reputation_module.h"
+
+class Reputation : public snort::Inspector
 {
 public:
-    ReputationFlowData() : snort::FlowData(inspector_id){}
+    Reputation(ReputationConfig*);
 
-    static void init()
-    { inspector_id = snort::FlowData::create_flow_data_id(); }
+    void show(snort::SnortConfig*) override;
+    void eval(snort::Packet*) override;
 
-    static unsigned inspector_id;
-    unsigned checked_reputation_id = 0;
+private:
+    ReputationConfig config;
+    unsigned reputation_id;
 };
 
 #endif
index 9ff92fe72d81f4e5dd9c0949be0826bdda404f1f..8b8f977d72a78250bfc08d151b5372d4ed6b8ca7 100644 (file)
@@ -753,7 +753,7 @@ void add_black_white_List(ReputationConfig* config)
         listItem->file_name = config->blacklist_path;
         listItem->file_type = BLACK_LIST;
         listItem->list_id = 0;
-        config->list_files.push_back(listItem);
+        config->list_files.emplace_back(listItem);
     }
     if (config->whitelist_path.size())
     {
@@ -762,7 +762,7 @@ void add_black_white_List(ReputationConfig* config)
         listItem->file_name = config->whitelist_path;
         listItem->file_type = WHITE_LIST;
         listItem->list_id = 0;
-        config->list_files.push_back(listItem);
+        config->list_files.emplace_back(listItem);
     }
 }
 
@@ -896,7 +896,7 @@ static bool process_line_in_manifest(ListFile* list_item, const char* manifest,
                 return false;
             }
 
-            list_item->zones.insert(zone_id);
+            list_item->zones.emplace(zone_id);
             has_zone = true;
         }
 
@@ -917,7 +917,7 @@ static bool process_line_in_manifest(ListFile* list_item, const char* manifest,
         list_item->all_zones_enabled = true;
     }
 
-    config->list_files.push_back(list_item);
+    config->list_files.emplace_back(list_item);
     return true;
 }
 
index 2232dd3e09faade4478b12709282661293a76644..06d2f70e904976ade7b3d1687c3a0dda21bcb6d5 100644 (file)
@@ -63,7 +63,7 @@ void SFDAQInstanceConfig::set_input_spec(const char* input_spec_str)
 
 void SFDAQInstanceConfig::set_variable(const char* varkvp)
 {
-    variables.push_back(parse_variable(varkvp));
+    variables.emplace_back(parse_variable(varkvp));
 }
 
 /*
@@ -85,7 +85,7 @@ SFDAQConfig::~SFDAQConfig()
 void SFDAQConfig::add_module_dir(const char* module_dir)
 {
     if (module_dir)
-        module_dirs.push_back(module_dir);
+        module_dirs.emplace_back(module_dir);
 }
 
 void SFDAQConfig::set_input_spec(const char* input_spec_str, int instance_id)
@@ -143,7 +143,7 @@ void SFDAQConfig::set_variable(const char* varkvp, int instance_id)
         ic->set_variable(varkvp);
     }
     else
-        variables.push_back(parse_variable(varkvp));
+        variables.emplace_back(parse_variable(varkvp));
 }
 
 void SFDAQConfig::overlay(const SFDAQConfig* other)
index 375c54317c4650fab2c34ae1edf9b2ec5f562f90..12107d4196c3f444906584c20a1be75a8ae2719d 100644 (file)
@@ -99,7 +99,7 @@ int Trough::get_pcaps(std::vector<struct PcapReadObject> &pol)
                                 return -1;
                             }
                             while ((pcap_filename = pcap_dir.next()))
-                                tmp_queue.push_back(pcap_filename);
+                                tmp_queue.emplace_back(pcap_filename);
                             std::sort(tmp_queue.begin(), tmp_queue.end());
                             pcap_queue.reserve(pcap_queue.size() + tmp_queue.size());
                             pcap_queue.insert(pcap_queue.end(), tmp_queue.begin(), tmp_queue.end());
@@ -108,7 +108,7 @@ int Trough::get_pcaps(std::vector<struct PcapReadObject> &pol)
                         {
                             if (filter.empty() ||
                                 (fnmatch(filter.c_str(), pcap_name.c_str(), 0) == 0))
-                                pcap_queue.push_back(pcap_name);
+                                pcap_queue.emplace_back(pcap_name);
                         }
                         else
                         {
@@ -165,7 +165,7 @@ int Trough::get_pcaps(std::vector<struct PcapReadObject> &pol)
                             }
                         }
 
-                        pcap_queue.push_back(pcap_name);
+                        pcap_queue.emplace_back(pcap_name);
                     } while (pos != std::string::npos);
                 }
 
@@ -185,7 +185,7 @@ int Trough::get_pcaps(std::vector<struct PcapReadObject> &pol)
                         return -1;
                     }
                     while ((pcap_filename = pcap_dir.next()))
-                        tmp_queue.push_back(pcap_filename);
+                        tmp_queue.emplace_back(pcap_filename);
                     std::sort(tmp_queue.begin(), tmp_queue.end());
                     pcap_queue.reserve(pcap_queue.size() + tmp_queue.size());
                     pcap_queue.insert(pcap_queue.end(), tmp_queue.begin(), tmp_queue.end());
@@ -206,7 +206,7 @@ void Trough::add_source(SourceType type, const char* list)
     pro.arg = list;
     pro.filter = pcap_filter;
 
-    pcap_object_list.push_back(pro);
+    pcap_object_list.emplace_back(pro);
 }
 
 void Trough::set_filter(const char *f)
index c8d2100923775ad62affc75c38accfe57ed537a0..4e3718e9905d370988de79ada07a2e0515f65cb4 100644 (file)
@@ -170,7 +170,7 @@ void Manager::destroy(BasePlugin* p)
 }
 
 void Manager::add_chunk(const string& filename, const string& target, const string& chunk)
-{ chunks.push_back(Chunk(filename, target, chunk)); }
+{ chunks.emplace_back(Chunk(filename, target, chunk)); }
 
 const vector<Chunk>& Manager::get_chunks()
 { return chunks; }
index 1e1f53f62bc343de4beabe56fe80b7948449e913..f031309fda97963ec1626acf3c711fd14a981812 100644 (file)
@@ -95,7 +95,7 @@ struct Test
     inline void set_error(const std::string& s)
     {
         result = ERROR;
-        messages.push_back(s);
+        messages.emplace_back(s);
     }
 
     Test(const Chunk& ch) : chunk { &ch } { }
index 9e93f8670fd0825e981b7bbedeca25f3b7ed7241..44ce44803087aef35e2e3d07d4bda6f459b007ea 100644 (file)
@@ -90,7 +90,7 @@ static const luaL_Reg methods[] =
             std::vector<uint16_t> tmp;
             tmp.reserve(ret.size());
             for(auto a: ret)
-                tmp.push_back(to_utype(a));
+                tmp.emplace_back(to_utype(a));
 
             lua_newtable(L);
             Lua::fill_table_from_vector(L, lua_gettop(L), tmp);
index c7414d3fb6482bf8d6e948f7656875c54cc2b694..8c92a60944c6e419c39dbd088f99e2e798a84c27 100644 (file)
@@ -59,7 +59,7 @@ public:
     { stats.reset(); }
 
     void add_child(ProfilerNode* node)
-    { children.push_back(node); }
+    { children.emplace_back(node); }
 
     const std::vector<ProfilerNode*> get_children() const
     { return children; }
index 1a2867c3c7b4dbf6a659be3f54b85fda233ae845..7a62a56129b2ca9e4987aea246e07bca062c69f2 100644 (file)
@@ -860,10 +860,10 @@ void PacketManager::dump_stats()
     g_stats[CodecManager::s_proto_map[to_utype(ProtocolId::FINISHED_DECODE)] + stat_offset] = 0;
 
     for (unsigned int i = 0; i < stat_names.size(); i++)
-        pkt_names.push_back(stat_names[i]);
+        pkt_names.emplace_back(stat_names[i]);
 
     for (int i = 0; CodecManager::s_protocols[i] != nullptr; i++)
-        pkt_names.push_back(CodecManager::s_protocols[i]->get_name());
+        pkt_names.emplace_back(CodecManager::s_protocols[i]->get_name());
 
     show_percent_stats((PegCount*)&g_stats, &pkt_names[0],
         (unsigned int)pkt_names.size(), "codec");
index 2a66f4da076c9ceef83ad2692170d6d18fa65fb8..77d6d06c099e950d6fa66c4d2c931f4d258fff4e 100644 (file)
@@ -184,7 +184,7 @@ static void Build_NFA(ACSM_STRUCT* acsm)
 
         if (s)
         {
-            queue.push_back(s);
+            queue.emplace_back(s);
             acsm->acsmStateTable[s].FailState = 0;
         }
     }
@@ -199,7 +199,7 @@ static void Build_NFA(ACSM_STRUCT* acsm)
 
             if ( s != ACSM_FAIL_STATE )
             {
-                queue.push_back(s);
+                queue.emplace_back(s);
                 int fs = acsm->acsmStateTable[r].FailState;
                 int next;
 
@@ -247,7 +247,7 @@ static void Convert_NFA_To_DFA(ACSM_STRUCT* acsm)
     for (int i = 0; i < ALPHABET_SIZE; i++)
     {
         if ( int s = acsm->acsmStateTable[0].NextState[i] )
-            queue.push_back(s);
+            queue.emplace_back(s);
     }
 
     /* Start building the next layer of transitions */
@@ -260,7 +260,7 @@ static void Convert_NFA_To_DFA(ACSM_STRUCT* acsm)
 
             if ( s != ACSM_FAIL_STATE )
             {
-                queue.push_back(s);
+                queue.emplace_back(s);
             }
             else
             {
index 3f29fc5540afe557b2dadb66163781573d17352d..96af99aee873e8fccade4cb5364a575542a25430 100644 (file)
@@ -650,7 +650,7 @@ static void Build_NFA(ACSM_STRUCT2* acsm)
         {
             if ( !queue_array[s] )
             {
-                queue.push_back(s);
+                queue.emplace_back(s);
                 queue_array[s] = true;
             }
             FailState[s] = 0;
@@ -671,7 +671,7 @@ static void Build_NFA(ACSM_STRUCT2* acsm)
             {
                 if ( !queue_array[s] )
                 {
-                    queue.push_back(s);
+                    queue.emplace_back(s);
                     queue_array[s] = true;
                 }
                 int fs = FailState[r];
@@ -743,7 +743,7 @@ static void Convert_NFA_To_DFA(ACSM_STRUCT2* acsm)
         {
             if ( !queue_array[s] )
             {
-                queue.push_back(s);
+                queue.emplace_back(s);
                 queue_array[s] = true;
             }
         }
@@ -763,7 +763,7 @@ static void Convert_NFA_To_DFA(ACSM_STRUCT2* acsm)
             {
                 if ( !queue_array[s] )
                 {
-                    queue.push_back(s);
+                    queue.emplace_back(s);
                     queue_array[s] = true;
                 }
             }
index 193cab2d158241d1a5b1a9917c395fcb040ed5b6..f0be11fdb644fbdf9be592b6bdd3b2bc14fa8c4c 100644 (file)
@@ -722,7 +722,7 @@ static int _bnfa_build_nfa(bnfa_struct_t* bnfa)
         int s = _bnfa_list_get_next_state(bnfa,0,i);
         if ( s )   /* don't bother adding state zero */
         {
-            queue.push_back(s);
+            queue.emplace_back(s);
             FailState[s] = 0;
         }
     }
@@ -740,7 +740,7 @@ static int _bnfa_build_nfa(bnfa_struct_t* bnfa)
             if ( s == (int)BNFA_FAIL_STATE )
                 continue;
 
-            queue.push_back(s);
+            queue.emplace_back(s);
 
             fs = FailState[r];
 
index 53f4fc1fd5b94546cee467a428c8aa32be52faeb..856d4bdf2fa0f9a9d264d3a949b73913c9f12a98 100644 (file)
@@ -129,7 +129,7 @@ public:
         const PatternDescriptor& desc, void* user) override
     {
         Pattern p(pat, len, desc, user);
-        pvector.push_back(p);
+        pvector.emplace_back(p);
         ++patterns;
         return 0;
     }
@@ -228,9 +228,9 @@ int HyperscanMpse::prep_patterns(SnortConfig* sc)
 
     for ( auto& p : pvector )
     {
-        pats.push_back(p.pat.c_str());
-        flags.push_back(p.flags);
-        ids.push_back(id++);
+        pats.emplace_back(p.pat.c_str());
+        flags.emplace_back(p.flags);
+        ids.emplace_back(id++);
     }
 
     if ( hs_compile_multi(&pats[0], &flags[0], &ids[0], pvector.size(), HS_MODE_BLOCK,
index 7cfde5685ca1fbc21cdaceb6abfa820fe8f9f864..282b10fc135c6e095ee3b5634577e1769b84e476 100644 (file)
@@ -181,7 +181,7 @@ bool FtpClientModule::end(const char* fqn, int idx, SnortConfig*)
             ParseError("bad ftp_client.bounce_to [%d]", idx);
             return false;
         }
-        bounce_to.push_back(new BounceTo(address, port, last_port));
+        bounce_to.emplace_back(new BounceTo(address, port, last_port));
     }
     return true;
 }
@@ -375,7 +375,7 @@ void FtpServerModule::add_commands(
     v.set_first_token();
 
     while ( v.get_next_token(tok) )
-        cmds.push_back(new FtpCmd(tok, flags, num));
+        cmds.emplace_back(new FtpCmd(tok, flags, num));
 }
 
 const FtpCmd* FtpServerModule::get_cmd(unsigned idx)
@@ -489,7 +489,7 @@ bool FtpServerModule::end(const char* fqn, int idx, SnortConfig*)
         return true;
 
     if ( !strcmp(fqn, "ftp_server.cmd_validity") )
-        cmds.push_back(new FtpCmd(names, format, number));
+        cmds.emplace_back(new FtpCmd(names, format, number));
 
     else if ( !strcmp(fqn, "ftp_server.directory_cmds") )
     {
index 0861d51c5b8cd71802447057140d95ffba36198a..17f4eb56fb68e8bdab37cc1e7d85d2abec4b2459 100644 (file)
@@ -171,19 +171,19 @@ bool GtpInspectModule::end(const char* fqn, int idx, SnortConfig*)
         for ( unsigned i = 0; i < temp.size(); ++i )
         {
             temp[i].version = stuff.version;
-            config.push_back(temp[i]);
+            config.emplace_back(temp[i]);
         }
         temp.clear();
     }
     else if ( !strcmp(fqn, "gtp_inspect.messages") and idx )
     {
         assert(stuff.length < 0);
-        temp.push_back(stuff);
+        temp.emplace_back(stuff);
     }
     else if ( !strcmp(fqn, "gtp_inspect.infos") and idx )
     {
         assert(stuff.length >= 0);
-        temp.push_back(stuff);
+        temp.emplace_back(stuff);
     }
     return true;
 }
index 47381f78f1fffc1b9401aa1d39c503c6eb321bd2..13639c5974db2b49155e068949b8c56adab1042a 100644 (file)
@@ -205,7 +205,7 @@ void SmtpModule::add_commands(
     v.set_first_token();
 
     while ( v.get_next_token(tok) )
-        cmds.push_back(new SmtpCmd(tok, flags, 0));
+        cmds.emplace_back(new SmtpCmd(tok, flags, 0));
 }
 
 const SmtpCmd* SmtpModule::get_cmd(unsigned idx)
@@ -349,7 +349,7 @@ bool SmtpModule::end(const char* fqn, int idx, SnortConfig*)
         return true;
 
     if ( !strcmp(fqn, "smtp.alt_max_command_line_len") )
-        cmds.push_back(new SmtpCmd(names, number));
+        cmds.emplace_back(new SmtpCmd(names, number));
 
     return true;
 }
index 2d82fe1c6ce804aeab248deac1b32787fa5aadc9..8229d4148fbe4056f37e28879b2918f002c41bbe 100644 (file)
@@ -266,9 +266,9 @@ bool CurseBook::add_curse(const char* key)
         if (curse.name == key)
         {
             if (curse.is_tcp)
-                tcp_curses.push_back(&curse);
+                tcp_curses.emplace_back(&curse);
             else
-                non_tcp_curses.push_back(&curse);
+                non_tcp_curses.emplace_back(&curse);
             return true;
         }
     }
index 949a4c7ddc55320859b9efe73bf7f35d2f9e9515..1951f4c5d6bbfccdca4799ec5d774553e17ba91a 100644 (file)
@@ -47,9 +47,9 @@ bool HexBook::translate(const char* in, HexVector& out)
         else if ( !hex )
         {
             if ( in[i] == '?' )
-                out.push_back(WILD);
+                out.emplace_back(WILD);
             else
-                out.push_back(in[i]);
+                out.emplace_back(in[i]);
         }
         else if ( in[i] != ' ' )
         {
@@ -64,7 +64,7 @@ bool HexBook::translate(const char* in, HexVector& out)
         if ( push && !byte.empty() )
         {
             int b = strtol(byte.c_str(), nullptr, 16);
-            out.push_back((uint8_t)b);
+            out.emplace_back((uint8_t)b);
             byte.clear();
         }
         ++i;
index da783ec175b708ced96d257014156b94d48f370f..9db5c93122c05d590bbc2835287193061fc3177a 100644 (file)
@@ -48,9 +48,9 @@ bool SpellBook::translate(const char* in, HexVector& out)
         if ( wild )
         {
             if ( in[i] != '*' )
-                out.push_back(WILD);
+                out.emplace_back(WILD);
 
-            out.push_back(in[i]);
+            out.emplace_back(in[i]);
             wild = false;
         }
         else
@@ -58,7 +58,7 @@ bool SpellBook::translate(const char* in, HexVector& out)
             if ( in[i] == '*' )
                 wild = true;
             else
-                out.push_back(in[i]);
+                out.emplace_back(in[i]);
         }
         ++i;
     }
index 63fb38208f8b68802c5e8b06cf9b31ceef8b1089..a02e494f964c85033911ba0c7a220186b63a7ea5 100644 (file)
@@ -140,10 +140,10 @@ bool WizardModule::set(const char*, Value& v, SnortConfig*)
         return true;
 
     else if ( v.is("hex") )
-        spells.push_back(v.get_string());
+        spells.emplace_back(v.get_string());
 
     else if ( v.is("spell") )
-        spells.push_back(v.get_string());
+        spells.emplace_back(v.get_string());
 
     else if ( v.is("curses") )
         curses->add_curse(v.get_string());
index b918e084ace0994a4724be3ea16312b23eeb20d4..4053720017e63144f4c1052a1a38ff10a6922aa9 100644 (file)
@@ -227,9 +227,9 @@ void Wizard::reset(Wand& w, bool tcp, bool c2s)
         for ( const CurseDetails* curse : pages )
         {
             if (tcp)
-                w.curse_tracker.push_back({ curse, new CurseTracker });
+                w.curse_tracker.emplace_back( CurseServiceTracker{ curse, new CurseTracker } );
             else
-                w.curse_tracker.push_back({ curse, nullptr });
+                w.curse_tracker.emplace_back( CurseServiceTracker{ curse, nullptr } );
         }
     }
 }
index d03d39962f9c16792cc27c5e3a757e289191cce5..f60f0d3a7743d13efe32800612e8dc0c8c68d1a0 100644 (file)
@@ -97,7 +97,7 @@ void SideChannelManager::instantiate(const SCConnectors* connectors, const PortB
     scm->connectors = *connectors;
     scm->ports = *ports;
 
-    s_maps.push_back(scm);
+    s_maps.emplace_back(scm);
 }
 
 // Initialize state to be ready to accept configuration
@@ -149,7 +149,7 @@ void SideChannelManager::thread_init()
         }
 
         /* Save the thread specific map */
-        map_list->push_back(map);
+        map_list->emplace_back(map);
     }
 
     /* Finally, save the thread-specific list */
index 04e98366e40c067be429ac02c41adf23124ddce3..621529663eb072ef807d0cc4ae9cf322fff4d4ef 100644 (file)
@@ -98,7 +98,7 @@ bool SideChannelModule::set(const char*, Value& v, SnortConfig*)
     assert(config);
 
     if ( v.is("connector") )
-        config->connectors.push_back(std::move(v.get_string()));
+        config->connectors.emplace_back(std::move(v.get_string()));
 
     else if ( v.is("ports") )
     {
index f9bc1cda3b4179a48df7098408261455c426481c..20281ea4f532d92096160af41fdc7985156fdadb 100644 (file)
@@ -154,8 +154,8 @@ TEST_GROUP(side_channel)
         SCConnectors test_connectors;
         PortBitSet test_ports;
 
-        test_connectors.push_back("R");
-        test_connectors.push_back("T");
+        test_connectors.emplace_back("R");
+        test_connectors.emplace_back("T");
         test_ports.set(1);
 
         SideChannelManager::instantiate(&test_connectors, &test_ports);
@@ -163,7 +163,7 @@ TEST_GROUP(side_channel)
         test_connectors.clear();
         test_ports.reset(1);
 
-        test_connectors.push_back("R");
+        test_connectors.emplace_back("R");
         test_ports.set(2);
 
         SideChannelManager::instantiate(&test_connectors, &test_ports);
@@ -171,7 +171,7 @@ TEST_GROUP(side_channel)
         test_connectors.clear();
         test_ports.reset(2);
 
-        test_connectors.push_back("T");
+        test_connectors.emplace_back("T");
         test_ports.set(3);
 
         SideChannelManager::instantiate(&test_connectors, &test_ports);
@@ -186,7 +186,7 @@ TEST_GROUP(side_channel)
         test_connectors.clear();
         test_ports.reset(4);
 
-        test_connectors.push_back("D");
+        test_connectors.emplace_back("D");
         test_ports.set(5);
 
         SideChannelManager::instantiate(&test_connectors, &test_ports);
index 641125e45e01ea62c3f70086d109196d46024700..82367cb749fb367540af377f3b0684759e88ca93 100644 (file)
@@ -255,7 +255,7 @@ ProtocolHA::ProtocolHA(PktType protocol)
     if ( proto_map == nullptr )
         proto_map = new ProtocolMap;
 
-    proto_map->insert(std::make_pair((int)protocol, this));
+    proto_map->emplace((int)protocol, this);
 }
 
 ProtocolHA::~ProtocolHA()
index ae08a10fe4845e5719293f76552782f04f062bda..75f9c788e1a19f237ab1e63b0097f1b6247572ae 100644 (file)
@@ -68,7 +68,7 @@ uint16_t FlushBucket::get_size()
 
 void VarFlushBucket::set_next(uint16_t pt)
 {
-    flush_points.push_back(pt);
+    flush_points.emplace_back(pt);
 }
 
 uint16_t VarFlushBucket::get_next()
index 814c0405d9d059b72ae29162d762a57b3b7484fa..58334805b06f4f1f40972fdc0c69e57978cd643e 100644 (file)
@@ -292,7 +292,7 @@ void UserTracker::add_data(Packet* p)
     if ( avail < p->dsize )
     {
         UserSegment* us = UserSegment::init(p->data+avail, p->dsize-avail);
-        seg_list.push_back(us);
+        seg_list.emplace_back(us);
     }
     total += p->dsize;
     process(p);
index 162599ffa41ada13a185e83caa4e8b32a78dadf9..829ca3e1756b6e1a7aab4f15aaf8be52e63b81e3 100644 (file)
@@ -63,7 +63,7 @@ const char* ProtocolReference::get_name_sorted(SnortProtocolId id)
     if ( ind_map.size() < id_map.size() )
     {
         while ( ind_map.size() < id_map.size() )
-            ind_map.push_back((SnortProtocolId)ind_map.size());
+            ind_map.emplace_back((SnortProtocolId)ind_map.size());
 
         Compare c { id_map };
         sort(ind_map.begin(), ind_map.end(), c);
@@ -86,7 +86,7 @@ SnortProtocolId ProtocolReference::add(const char* protocol)
     }
 
     SnortProtocolId snort_protocol_id = protocol_number++;
-    id_map.push_back(protocol);
+    id_map.emplace_back(protocol);
     ref_table[protocol] = snort_protocol_id;
 
     return snort_protocol_id;
index 53aa33e7e5c9ca992c028a0fe91dd6d396a00bec..8048fb3988d0ca0c1f7aa3e7589390ea22558707 100644 (file)
@@ -82,7 +82,7 @@ void Periodic::unregister_all()
 static std::vector<int> s_test_args;
 
 static void s_test_handler(void* pv)
-{ s_test_args.push_back(*(int*)(pv)); }
+{ s_test_args.emplace_back(*(int*)(pv)); }
 
 TEST_CASE("periodic", "[periodic]")
 {