]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
Merge pull request #2259 in SNORT/snort3 from ~OSERHIIE/snort3:trace_log_pkt_ptr...
authorMichael Altizer (mialtize) <mialtize@cisco.com>
Thu, 11 Jun 2020 18:24:20 +0000 (18:24 +0000)
committerMichael Altizer (mialtize) <mialtize@cisco.com>
Thu, 11 Jun 2020 18:24:20 +0000 (18:24 +0000)
Squashed commit of the following:

commit a403e8b5ae47db509d6ede99f8808293ba5bbc26
Author: Oleksandr Serhiienko <oserhiie@cisco.com>
Date:   Thu Jun 11 20:55:55 2020 +0300

    trace: remove redundant include

commit 53d3063ce49228a25e267d2992b1d22f7edf7f08
Author: Oleksandr Serhiienko <oserhiie@cisco.com>
Date:   Thu Jun 11 19:56:47 2020 +0300

    trace: add support for passing in the packet pointer to loggers

src/main/snort_debug.cc
src/main/snort_debug.h
src/managers/inspector_manager.cc
src/trace/trace_api.cc
src/trace/trace_api.h
src/trace/trace_log.cc
src/trace/trace_log_base.h

index 47ff7cf275ba3beea6b87961369c42fdf9831599..6207658ea9dec6df22aa1aae6187a0a52e1abaa1 100644 (file)
 
 namespace snort
 {
-template <void (log_func)(const char*, const char*, uint8_t, const char*)>
+template <void (log_func)(const char*, const char*, uint8_t, const char*, const Packet*)>
 void trace_vprintf(const char* name, TraceLevel log_level,
-    const char* trace_option, const char* fmt, va_list ap)
+    const char* trace_option, const Packet* p, const char* fmt, va_list ap)
 {
     char buf[STD_BUF_SIZE];
     vsnprintf(buf, sizeof(buf), fmt, ap);
 
-    log_func(buf, name, log_level, trace_option);
+    log_func(buf, name, log_level, trace_option, p);
 }
 
 void trace_vprintf(const char* name, TraceLevel log_level,
-    const char* trace_option, const char* fmt, va_list ap)
+    const char* trace_option, const Packet* p, const char* fmt, va_list ap)
 {
-    trace_vprintf<TraceApi::log>(name, log_level, trace_option, fmt, ap);
+    trace_vprintf<TraceApi::log>(name, log_level, trace_option, p, fmt, ap);
 }
 }
 
@@ -74,7 +74,7 @@ struct TestCase
 static char testing_dump[STD_BUF_SIZE];
 
 static void test_log(const char* log_msg, const char* name,
-    uint8_t log_level, const char* trace_option)
+    uint8_t log_level, const char* trace_option, const snort::Packet*)
 {
     snprintf(testing_dump, sizeof(testing_dump), "%s:%s:%d: %s",
         name, trace_option, log_level, log_msg);
index a908d3448458b181555e8de710d85de113926ff5..a56313ddb743d5a4517b1b0f69a50fb7a024b689 100644 (file)
@@ -52,24 +52,24 @@ static inline bool trace_enabled(const snort::Trace* trace,
 namespace snort
 {
 SO_PUBLIC void trace_vprintf(const char* name, TraceLevel log_level,
-    const char* trace_option, const char* fmt, va_list);
+    const char* trace_option, const snort::Packet* p, const char* fmt, va_list);
 }
 
-using trace_func = void(const char*, TraceLevel, const char*, const char*, va_list);
+using trace_func = void(const char*, TraceLevel, const char*, const snort::Packet*, const char*, va_list);
 
 template <trace_func>
 static inline void trace_uprintf(const snort::Trace* trace,
-    TraceOptionID trace_option_id, const char* fmt, ...) __attribute__((format (printf, 3, 4)));
+    TraceOptionID trace_option_id, const snort::Packet* p, const char* fmt, ...) __attribute__((format (printf, 4, 5)));
 
 template <trace_func trace_vprintf = snort::trace_vprintf>
 static inline void trace_uprintf(const snort::Trace* trace,
-    TraceOptionID trace_option_id, const char* fmt, ...)
+    TraceOptionID trace_option_id, const snort::Packet* p, const char* fmt, ...)
 {
     va_list ap;
     va_start(ap, fmt);
 
     const char* trace_option_name = trace->option_name(trace_option_id);
-    trace_vprintf(trace->module_name(), DEFAULT_TRACE_LOG_LEVEL, trace_option_name, fmt, ap);
+    trace_vprintf(trace->module_name(), DEFAULT_TRACE_LOG_LEVEL, trace_option_name, p, fmt, ap);
 
     va_end(ap);
 }
@@ -92,7 +92,7 @@ static inline void trace_printf(TraceLevel log_level,
     va_start(ap, fmt);
 
     const char* trace_option_name = trace->option_name(trace_option_id);
-    trace_vprintf(trace->module_name(), log_level, trace_option_name,
+    trace_vprintf(trace->module_name(), log_level, trace_option_name, p,
         fmt, ap);
 
     va_end(ap);
@@ -115,7 +115,7 @@ static inline void trace_printf(TraceLevel log_level,
     va_start(ap, fmt);
 
     const char* trace_option_name = trace->option_name(DEFAULT_TRACE_OPTION_ID);
-    trace_vprintf(trace->module_name(), log_level, trace_option_name,
+    trace_vprintf(trace->module_name(), log_level, trace_option_name, p,
         fmt, ap);
 
     va_end(ap);
@@ -138,7 +138,7 @@ static inline void trace_printf(const snort::Trace* trace,
 
     const char* trace_option_name = trace->option_name(trace_option_id);
     trace_vprintf(trace->module_name(), DEFAULT_TRACE_LOG_LEVEL,
-        trace_option_name, fmt, ap);
+        trace_option_name, p, fmt, ap);
 
     va_end(ap);
 }
@@ -160,7 +160,7 @@ static inline void trace_printf(const snort::Trace* trace,
 
     const char* trace_option_name = trace->option_name(DEFAULT_TRACE_OPTION_ID);
     trace_vprintf(trace->module_name(), DEFAULT_TRACE_LOG_LEVEL,
-        trace_option_name, fmt, ap);
+        trace_option_name, p, fmt, ap);
 
     va_end(ap);
 }
index 9bce7f08b3e651b19ed61ea080f78a5b3675f5fd..d42f0a70027276745cdc2df0784e86b5124b5e0e 100644 (file)
@@ -1062,7 +1062,7 @@ static inline void execute(
         {
             timer.reset();
             inspector_name = (*prep)->name.c_str();
-            trace_ulogf(snort_trace, TRACE_INSPECTOR_MANAGER, "enter %s\n", inspector_name);
+            trace_ulogf(snort_trace, TRACE_INSPECTOR_MANAGER, p, "enter %s\n", inspector_name);
             timer.start();
         }
 
@@ -1077,7 +1077,7 @@ static inline void execute(
             (*prep)->handler->eval(p);
 
         if ( T )
-            trace_ulogf(snort_trace, TRACE_INSPECTOR_MANAGER,
+            trace_ulogf(snort_trace, TRACE_INSPECTOR_MANAGER, p,
                 "exit %s, elapsed time: %" PRId64" usec\n", inspector_name, TO_USECS(timer.get()));
     }
 }
@@ -1119,12 +1119,12 @@ void InspectorManager::full_inspection(Packet* p)
         {
             Stopwatch<SnortClock> timer;
             const char* inspector_name = flow->gadget->get_alias_name();
-            trace_ulogf(snort_trace, TRACE_INSPECTOR_MANAGER, "enter %s\n", inspector_name);
+            trace_ulogf(snort_trace, TRACE_INSPECTOR_MANAGER, p, "enter %s\n", inspector_name);
             timer.start();
 
             flow->gadget->eval(p);
 
-            trace_ulogf(snort_trace, TRACE_INSPECTOR_MANAGER,
+            trace_ulogf(snort_trace, TRACE_INSPECTOR_MANAGER, p,
                 "exit %s, elapsed time: %" PRId64 "\n", inspector_name, TO_USECS(timer.get()));
         }
 
@@ -1151,7 +1151,7 @@ void InspectorManager::internal_execute(Packet* p)
     {
         packet_type = p->is_rebuilt() ? "rebuilt" : "raw";
 
-        trace_ulogf(snort_trace, TRACE_INSPECTOR_MANAGER,
+        trace_ulogf(snort_trace, TRACE_INSPECTOR_MANAGER, p,
             "start inspection, %s, packet %" PRId64", context %" PRId64"\n",
             packet_type, p->context->packet_number, p->context->context_num);
 
@@ -1217,7 +1217,7 @@ void InspectorManager::internal_execute(Packet* p)
     }
 
     if ( T )
-        trace_ulogf(snort_trace, TRACE_INSPECTOR_MANAGER,
+        trace_ulogf(snort_trace, TRACE_INSPECTOR_MANAGER, p,
             "stop inspection, %s, packet %" PRId64", context %" PRId64", total time: %" PRId64" usec\n",
             packet_type, p->context->packet_number, p->context->context_num, TO_USECS(timer.get()));
 }
@@ -1233,7 +1233,7 @@ void InspectorManager::probe(Packet* p)
     {
         Stopwatch<SnortClock> timer;
         const char* packet_type = p->is_rebuilt() ? "rebuilt" : "raw";
-        trace_ulogf(snort_trace, TRACE_INSPECTOR_MANAGER,
+        trace_ulogf(snort_trace, TRACE_INSPECTOR_MANAGER, p,
             "post detection inspection, %s, packet %" PRId64", context %" PRId64"\n",
             packet_type, p->context->packet_number, p->context->context_num);
 
@@ -1241,7 +1241,7 @@ void InspectorManager::probe(Packet* p)
 
         ::execute<true>(p, fp->probe.vec, fp->probe.num);
 
-        trace_ulogf(snort_trace, TRACE_INSPECTOR_MANAGER,
+        trace_ulogf(snort_trace, TRACE_INSPECTOR_MANAGER, p,
             "end inspection, %s, packet %" PRId64", context %" PRId64", total time: %" PRId64" usec\n",
             packet_type, p->context->packet_number, p->context->context_num, TO_USECS(timer.get()));
     }
index 2537c4008ed5ec08c3a814ff4ba2bf80b93fcf07..4cc2b8e1cf0b1f230357a457660f92a164ce22a8 100644 (file)
@@ -75,9 +75,9 @@ void TraceApi::thread_reinit(const TraceConfig* trace_config)
 }
 
 void TraceApi::log(const char* log_msg, const char* name,
-    uint8_t log_level, const char* trace_option)
+    uint8_t log_level, const char* trace_option, const Packet* p)
 {
-    g_trace_logger->log(log_msg, name, log_level, trace_option);
+    g_trace_logger->log(log_msg, name, log_level, trace_option, p);
 }
 
 void TraceApi::filter(const Packet& p)
index 074b30b6d3b383938c22d9a87e98b9d03416a7d1..39836ba7c2e0e5eea5e58a4ca623c63d43e5dbee 100644 (file)
@@ -38,7 +38,7 @@ public:
     static void thread_term();
 
     static void log(const char* log_msg, const char* name,
-        uint8_t log_level, const char* trace_option);
+        uint8_t log_level, const char* trace_option, const Packet* p);
     static void filter(const Packet& p);
     static uint8_t get_constraints_generation();
 };
index fe43ceb19cbeee207d1414cca3dce15b802572cd..968d1b09c9446eb2f01f756e4b800aa2befca470 100644 (file)
@@ -40,7 +40,7 @@ public:
     StdoutTraceLogger();
 
     void log(const char* log_msg, const char* name,
-        uint8_t log_level, const char* trace_option) override;
+        uint8_t log_level, const char* trace_option, const Packet* p) override;
 
 private:
     FILE* file;
@@ -51,7 +51,7 @@ StdoutTraceLogger::StdoutTraceLogger()
 { }
 
 void StdoutTraceLogger::log(const char* log_msg, const char* name,
-    uint8_t log_level, const char* trace_option)
+    uint8_t log_level, const char* trace_option, const Packet*)
 {
     fprintf(file, "%s:%s:%d: %s", name, trace_option, log_level, log_msg);
 }
@@ -64,7 +64,7 @@ public:
     SyslogTraceLogger();
 
     void log(const char* log_msg, const char* name,
-        uint8_t log_level, const char* trace_option) override;
+        uint8_t log_level, const char* trace_option, const Packet* p) override;
 
 private:
     int priority;
@@ -75,7 +75,7 @@ SyslogTraceLogger::SyslogTraceLogger()
 { }
 
 void SyslogTraceLogger::log(const char* log_msg, const char* name,
-    uint8_t log_level, const char* trace_option)
+    uint8_t log_level, const char* trace_option, const Packet*)
 {
     syslog(priority, "%s:%s:%d: %s", name, trace_option, log_level, log_msg);
 }
index 61dff1311b09b80cf6b7c050cfb4b0364acee3a3..adc9fbded92b763880d064371afd288c0b2a0308 100644 (file)
 
 namespace snort
 {
+struct Packet;
+
 class TraceLogger
 {
 public:
     virtual ~TraceLogger() = default;
 
     virtual void log(const char* log_msg, const char* name,
-        uint8_t log_level, const char* trace_option) = 0;
+        uint8_t log_level, const char* trace_option, const Packet* p) = 0;
 };
 
 class TraceLoggerFactory