#include "host_tracker/host_cache.h"
#include "log/messages.h"
+#include "packet_tracer/packet_tracer.h"
#include "profiler/profiler.h"
#include "protocols/packet.h"
#include "protocols/tcp.h"
#include "tp_appid_utils.h"
using namespace snort;
+static void populate_trace_data(AppIdSession& session)
+{
+ // Skip sessions using old odp context after odp reload
+ if (session.get_odp_ctxt_version() != session.get_odp_ctxt().get_version())
+ return;
+
+ AppId service_id, client_id, payload_id, misc_id;
+ const char* service_app_name, * client_app_name, * payload_app_name, * misc_name;
+ OdpContext& odp_ctxt = session.get_odp_ctxt();
+ session.get_api().get_first_stream_app_ids(service_id, client_id, payload_id, misc_id);
+ service_app_name = appid_api.get_application_name(service_id, odp_ctxt);
+ client_app_name = appid_api.get_application_name(client_id, odp_ctxt);
+ payload_app_name = appid_api.get_application_name(payload_id, odp_ctxt);
+ misc_name = appid_api.get_application_name(misc_id, odp_ctxt);
+
+ PacketTracer::daq_log("AppID+%" PRId64"++service: %s(%d), "
+ "client: %s(%d), payload: %s(%d), misc: %s(%d)$",
+ TO_NSECS(pt_timer->get()),
+ (service_app_name ? service_app_name : ""), service_id,
+ (client_app_name ? client_app_name : ""), client_id,
+ (payload_app_name ? payload_app_name : ""), payload_id,
+ (misc_name ? misc_name : ""), misc_id);
+}
+
AppIdDiscovery::~AppIdDiscovery()
{
for (auto pd : pattern_data)
asd->set_ss_application_ids(asd->pick_service_app_id(), asd->pick_ss_client_app_id(),
asd->pick_ss_payload_app_id(), asd->pick_ss_misc_app_id(),
asd->pick_ss_referred_payload_app_id(), change_bits);
+ if (PacketTracer::is_daq_activated())
+ populate_trace_data(*asd);
asd->publish_appid_event(change_bits, *p);
asd->set_session_flags(APPID_SESSION_FUTURE_FLOW_IDED);
asd.pick_ss_referred_payload_app_id(), change_bits);
asd.set_tls_host(change_bits);
+ if (PacketTracer::is_daq_activated())
+ populate_trace_data(asd);
+
asd.publish_appid_event(change_bits, *p);
}
CRYPTO_cleanup_all_ex_data();
}
-static void populate_trace_data(Flow& flow, const OdpContext& odp_context)
+static void add_appid_to_packet_trace(Flow& flow, const OdpContext& odp_context)
{
AppIdSession* session = appid_api.get_appid_session(flow);
// Skip sessions using old odp context after odp reload
payload_app_name = appid_api.get_application_name(payload_id, odp_ctxt);
misc_name = appid_api.get_application_name(misc_id, odp_ctxt);
- if (PacketTracer::is_active())
- {
- PacketTracer::log(appid_mute,
- "AppID: service: %s(%d), client: %s(%d), payload: %s(%d), misc: %s(%d)\n",
- (service_app_name ? service_app_name : ""), service_id,
- (client_app_name ? client_app_name : ""), client_id,
- (payload_app_name ? payload_app_name : ""), payload_id,
- (misc_name ? misc_name : ""), misc_id);
- }
- if (PacketTracer::is_daq_activated())
- {
- PacketTracer::daq_log("AppID+%" PRId64"++service: %s(%d), "
- "client: %s(%d), payload: %s(%d), misc: %s(%d)$",
- TO_NSECS(pt_timer->get()),
- (service_app_name ? service_app_name : ""), service_id,
- (client_app_name ? client_app_name : ""), client_id,
- (payload_app_name ? payload_app_name : ""), payload_id,
- (misc_name ? misc_name : ""), misc_id);
- }
+ PacketTracer::log(appid_mute,
+ "AppID: service: %s(%d), client: %s(%d), payload: %s(%d), misc: %s(%d)\n",
+ (service_app_name ? service_app_name : ""), service_id,
+ (client_app_name ? client_app_name : ""), client_id,
+ (payload_app_name ? payload_app_name : ""), payload_id,
+ (misc_name ? misc_name : ""), misc_id);
}
AppIdInspector::AppIdInspector(AppIdModule& mod)
if (p->flow)
{
if (PacketTracer::is_daq_activated())
- PacketTracer::pt_timer_start();
+ PacketTracer::pt_timer_start();
AppIdDiscovery::do_application_discovery(p, *this, *pkt_thread_odp_ctxt, pkt_thread_tp_appid_ctxt);
// FIXIT-L tag verdict reason as appid for daq
- if (PacketTracer::is_active() || PacketTracer::is_daq_activated())
- populate_trace_data(*p->flow, *pkt_thread_odp_ctxt);
+ if (PacketTracer::is_active())
+ add_appid_to_packet_trace(*p->flow, *pkt_thread_odp_ctxt);
}
else
appid_stats.ignored_packets++;
#include "host_tracker/host_cache.h"
#include "network_inspectors/appid/appid_discovery.cc"
#include "network_inspectors/appid/appid_peg_counts.h"
+#include "network_inspectors/packet_tracer/packet_tracer.h"
#include "search_engines/search_tool.h"
#include "utils/sflsq.cc"
+#include "appid_api.h"
#include "appid_mock_session.h"
#include "appid_session_api.h"
#include "tp_lib_handler.h"
namespace snort
{
+// Stubs for appid api
+AppIdApi appid_api;
+const char* AppIdApi::get_application_name(AppId, OdpContext&) { return NULL; }
+
+// Stubs for packet tracer
+THREAD_LOCAL PacketTracer* s_pkt_trace = nullptr;
+THREAD_LOCAL Stopwatch<SnortClock>* pt_timer = nullptr;
+void PacketTracer::daq_log(const char*, ...) { }
+
// Stubs for packet
Packet::Packet(bool) {}
Packet::~Packet() = default;
AppIdSessionApi::AppIdSessionApi(const AppIdSession*, const SfIp&) :
StashGenericObject(STASH_GENERIC_OBJECT_APPID) {}
+void AppIdSessionApi::get_first_stream_app_ids(AppId&, AppId&,
+ AppId&, AppId&) const { }
} // namespace snort
void AppIdModule::reset_stats() {}
DiscoveryFilter::~DiscoveryFilter() {}