]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
logging: integrate rotation into SCConfLogOpenGeneric.
authorJason Ish <ish@unx.ca>
Wed, 8 Jul 2015 15:49:41 +0000 (09:49 -0600)
committerVictor Julien <victor@inliniac.net>
Mon, 20 Jul 2015 08:55:28 +0000 (10:55 +0200)
Addresses issue 1492, and will make it harder to omit
rotation on new outputs.

22 files changed:
src/alert-debuglog.c
src/alert-fastlog.c
src/log-dnslog.c
src/log-droplog.c
src/log-file.c
src/log-httplog.c
src/log-stats.c
src/log-tcp-data.c
src/log-tlslog.c
src/output-json-alert.c
src/output-json-dns.c
src/output-json-drop.c
src/output-json-flow.c
src/output-json-http.c
src/output-json-netflow.c
src/output-json-smtp.c
src/output-json-ssh.c
src/output-json-stats.c
src/output-json-tls.c
src/output-json.c
src/util-logopenfile.c
src/util-logopenfile.h

index 27710a9d590384a2ae67bd845e385569d17d3fb5..5df1f4c1e9f5ed9b15bfb29a06c8807f6cab609e 100644 (file)
@@ -448,7 +448,6 @@ static void AlertDebugLogDeInitCtx(OutputCtx *output_ctx)
 {
     if (output_ctx != NULL) {
         LogFileCtx *logfile_ctx = (LogFileCtx *)output_ctx->data;
-        OutputUnregisterFileRotationFlag(&logfile_ctx->rotation_flag);
         if (logfile_ctx != NULL) {
             LogFileFreeCtx(logfile_ctx);
         }
@@ -473,10 +472,9 @@ static OutputCtx *AlertDebugLogInitCtx(ConfNode *conf)
         goto error;
     }
 
-    if (SCConfLogOpenGeneric(conf, file_ctx, DEFAULT_LOG_FILENAME) < 0) {
+    if (SCConfLogOpenGeneric(conf, file_ctx, DEFAULT_LOG_FILENAME, 1) < 0) {
         goto error;
     }
-    OutputRegisterFileRotationFlag(&file_ctx->rotation_flag);
 
     OutputCtx *output_ctx = SCMalloc(sizeof(OutputCtx));
     if (unlikely(output_ctx == NULL))
index 9e47c73dd4fc3d59ea6cd58f20f6eb9cbcdfe94d..41630f8a3ac0feeb7ebc752542524dabc37b2cf7 100644 (file)
@@ -250,11 +250,10 @@ OutputCtx *AlertFastLogInitCtx(ConfNode *conf)
         return NULL;
     }
 
-    if (SCConfLogOpenGeneric(conf, logfile_ctx, DEFAULT_LOG_FILENAME) < 0) {
+    if (SCConfLogOpenGeneric(conf, logfile_ctx, DEFAULT_LOG_FILENAME, 1) < 0) {
         LogFileFreeCtx(logfile_ctx);
         return NULL;
     }
-    OutputRegisterFileRotationFlag(&logfile_ctx->rotation_flag);
 
     OutputCtx *output_ctx = SCCalloc(1, sizeof(OutputCtx));
     if (unlikely(output_ctx == NULL))
@@ -268,7 +267,6 @@ OutputCtx *AlertFastLogInitCtx(ConfNode *conf)
 static void AlertFastLogDeInitCtx(OutputCtx *output_ctx)
 {
     LogFileCtx *logfile_ctx = (LogFileCtx *)output_ctx->data;
-    OutputUnregisterFileRotationFlag(&logfile_ctx->rotation_flag);
     LogFileFreeCtx(logfile_ctx);
     SCFree(output_ctx);
 }
index f0f381b521aac4b77a0e9b5694586bddd69d5802..e30c3d3e0c1a112e2fa2b010597c00c30cdf5430 100644 (file)
@@ -294,7 +294,6 @@ static void LogDnsLogExitPrintStats(ThreadVars *tv, void *data)
 static void LogDnsLogDeInitCtx(OutputCtx *output_ctx)
 {
     LogDnsFileCtx *dnslog_ctx = (LogDnsFileCtx *)output_ctx->data;
-    OutputUnregisterFileRotationFlag(&dnslog_ctx->file_ctx->rotation_flag);
     LogFileFreeCtx(dnslog_ctx->file_ctx);
     SCFree(dnslog_ctx);
     SCFree(output_ctx);
@@ -313,11 +312,10 @@ static OutputCtx *LogDnsLogInitCtx(ConfNode *conf)
         return NULL;
     }
 
-    if (SCConfLogOpenGeneric(conf, file_ctx, DEFAULT_LOG_FILENAME) < 0) {
+    if (SCConfLogOpenGeneric(conf, file_ctx, DEFAULT_LOG_FILENAME, 1) < 0) {
         LogFileFreeCtx(file_ctx);
         return NULL;
     }
-    OutputRegisterFileRotationFlag(&file_ctx->rotation_flag);
 
     LogDnsFileCtx *dnslog_ctx = SCMalloc(sizeof(LogDnsFileCtx));
     if (unlikely(dnslog_ctx == NULL)) {
index 69b8539fbdb55d7c692d53096e60f2a635992ce6..1ee2d999f7baeea73a7482a0c857bb0e927a2cad 100644 (file)
@@ -125,7 +125,6 @@ static void LogDropLogDeInitCtx(OutputCtx *output_ctx)
     if (output_ctx != NULL) {
         LogFileCtx *logfile_ctx = (LogFileCtx *)output_ctx->data;
         if (logfile_ctx != NULL) {
-            OutputUnregisterFileRotationFlag(&logfile_ctx->rotation_flag);
             LogFileFreeCtx(logfile_ctx);
         }
         SCFree(output_ctx);
@@ -151,11 +150,10 @@ static OutputCtx *LogDropLogInitCtx(ConfNode *conf)
         return NULL;
     }
 
-    if (SCConfLogOpenGeneric(conf, logfile_ctx, DEFAULT_LOG_FILENAME) < 0) {
+    if (SCConfLogOpenGeneric(conf, logfile_ctx, DEFAULT_LOG_FILENAME, 1) < 0) {
         LogFileFreeCtx(logfile_ctx);
         return NULL;
     }
-    OutputRegisterFileRotationFlag(&logfile_ctx->rotation_flag);
 
     OutputCtx *output_ctx = SCCalloc(1, sizeof(OutputCtx));
     if (unlikely(output_ctx == NULL)) {
index 439ca3227fe1c2864e72b2422d198fff9c561f41..0c41e38d298c83a261613f0386822f8fb55c1e3f 100644 (file)
@@ -388,7 +388,6 @@ void LogFileLogExitPrintStats(ThreadVars *tv, void *data)
 static void LogFileLogDeInitCtx(OutputCtx *output_ctx)
 {
     LogFileCtx *logfile_ctx = (LogFileCtx *)output_ctx->data;
-    OutputUnregisterFileRotationFlag(&logfile_ctx->rotation_flag);
     LogFileFreeCtx(logfile_ctx);
     free(output_ctx);
 }
@@ -405,11 +404,10 @@ static OutputCtx *LogFileLogInitCtx(ConfNode *conf)
         return NULL;
     }
 
-    if (SCConfLogOpenGeneric(conf, logfile_ctx, DEFAULT_LOG_FILENAME) < 0) {
+    if (SCConfLogOpenGeneric(conf, logfile_ctx, DEFAULT_LOG_FILENAME, 1) < 0) {
         LogFileFreeCtx(logfile_ctx);
         return NULL;
     }
-    OutputRegisterFileRotationFlag(&logfile_ctx->rotation_flag);
 
     OutputCtx *output_ctx = SCCalloc(1, sizeof(OutputCtx));
     if (unlikely(output_ctx == NULL))
index 609157808bc976a7b5ebad59ae550931c694d956..b9723d8c15ae7ed97978594662b1b96f65ba883f 100644 (file)
@@ -599,11 +599,10 @@ OutputCtx *LogHttpLogInitCtx(ConfNode *conf)
         return NULL;
     }
 
-    if (SCConfLogOpenGeneric(conf, file_ctx, DEFAULT_LOG_FILENAME) < 0) {
+    if (SCConfLogOpenGeneric(conf, file_ctx, DEFAULT_LOG_FILENAME, 1) < 0) {
         LogFileFreeCtx(file_ctx);
         return NULL;
     }
-    OutputRegisterFileRotationFlag(&file_ctx->rotation_flag);
 
     LogHttpFileCtx *httplog_ctx = SCMalloc(sizeof(LogHttpFileCtx));
     if (unlikely(httplog_ctx == NULL)) {
@@ -733,7 +732,6 @@ static void LogHttpLogDeInitCtx(OutputCtx *output_ctx)
     for (i = 0; i < httplog_ctx->cf_n; i++) {
         SCFree(httplog_ctx->cf_nodes[i]);
     }
-    OutputUnregisterFileRotationFlag(&httplog_ctx->file_ctx->rotation_flag);
     LogFileFreeCtx(httplog_ctx->file_ctx);
     SCFree(httplog_ctx);
     SCFree(output_ctx);
index d7c050b2c5e5051309530742a3bbb2cfd96a2778..5fcb1c9f62df0a4766c98af36dca42aa13561485 100644 (file)
@@ -221,7 +221,7 @@ OutputCtx *LogStatsLogInitCtx(ConfNode *conf)
         return NULL;
     }
 
-    if (SCConfLogOpenGeneric(conf, file_ctx, DEFAULT_LOG_FILENAME) < 0) {
+    if (SCConfLogOpenGeneric(conf, file_ctx, DEFAULT_LOG_FILENAME, 1) < 0) {
         LogFileFreeCtx(file_ctx);
         return NULL;
     }
@@ -263,14 +263,12 @@ OutputCtx *LogStatsLogInitCtx(ConfNode *conf)
 
     SCLogDebug("STATS log output initialized");
 
-    OutputRegisterFileRotationFlag(&file_ctx->rotation_flag);
     return output_ctx;
 }
 
 static void LogStatsLogDeInitCtx(OutputCtx *output_ctx)
 {
     LogStatsFileCtx *statslog_ctx = (LogStatsFileCtx *)output_ctx->data;
-    OutputUnregisterFileRotationFlag(&statslog_ctx->file_ctx->rotation_flag);
     LogFileFreeCtx(statslog_ctx->file_ctx);
     SCFree(statslog_ctx);
     SCFree(output_ctx);
index 2133f9de4a0114327ff8fd3aaa79999ea8891bfd..c41dd4c238c360f4175c0a8f7a31d973a69ea142 100644 (file)
@@ -293,7 +293,7 @@ OutputCtx *LogTcpDataLogInitCtx(ConfNode *conf)
 
     if (tcpdatalog_ctx->file == 1) {
         SCLogInfo("opening logfile");
-        if (SCConfLogOpenGeneric(conf, file_ctx, filename) < 0) {
+        if (SCConfLogOpenGeneric(conf, file_ctx, filename, 1) < 0) {
             LogFileFreeCtx(file_ctx);
             SCFree(tcpdatalog_ctx);
             return NULL;
index 580b0a20226cfcdd479780be41e1e0e0385873ac..c2b17e7f1bf094e156877ffdc10705ca5c96023f 100644 (file)
@@ -382,7 +382,6 @@ static void LogTlsLogDeInitCtx(OutputCtx *output_ctx)
     OutputTlsLoggerDisable();
 
     LogTlsFileCtx *tlslog_ctx = (LogTlsFileCtx *) output_ctx->data;
-    OutputUnregisterFileRotationFlag(&tlslog_ctx->file_ctx->rotation_flag);
     LogFileFreeCtx(tlslog_ctx->file_ctx);
     SCFree(tlslog_ctx);
     SCFree(output_ctx);
@@ -436,10 +435,9 @@ static OutputCtx *LogTlsLogInitCtx(ConfNode *conf)
         }
     }
 
-    if (SCConfLogOpenGeneric(conf, file_ctx, DEFAULT_LOG_FILENAME) < 0) {
+    if (SCConfLogOpenGeneric(conf, file_ctx, DEFAULT_LOG_FILENAME, 1) < 0) {
         goto filectx_error;
     }
-    OutputRegisterFileRotationFlag(&file_ctx->rotation_flag);
 
     LogTlsFileCtx *tlslog_ctx = SCCalloc(1, sizeof(LogTlsFileCtx));
     if (unlikely(tlslog_ctx == NULL))
index cbb2ed4758801231f76ea388c88b8c10be360735..887c23e7776bb7bf9fb477c7ce5f7a421672315a 100644 (file)
@@ -550,7 +550,7 @@ static OutputCtx *JsonAlertLogInitCtx(ConfNode *conf)
         return NULL;
     }
 
-    if (SCConfLogOpenGeneric(conf, logfile_ctx, DEFAULT_LOG_FILENAME) < 0) {
+    if (SCConfLogOpenGeneric(conf, logfile_ctx, DEFAULT_LOG_FILENAME, 1) < 0) {
         LogFileFreeCtx(logfile_ctx);
         return NULL;
     }
index d0be0e6aa8f15b4df83443980432eaddc9a4dbe7..89c11b3eefaa55e75587624ed58617cb2b2f4e79 100644 (file)
@@ -382,7 +382,7 @@ static OutputCtx *JsonDnsLogInitCtx(ConfNode *conf)
         return NULL;
     }
 
-    if (SCConfLogOpenGeneric(conf, file_ctx, DEFAULT_LOG_FILENAME) < 0) {
+    if (SCConfLogOpenGeneric(conf, file_ctx, DEFAULT_LOG_FILENAME, 1) < 0) {
         LogFileFreeCtx(file_ctx);
         return NULL;
     }
index 9f457ab7df594516861ccf5093feff5e7a0f1a28..d0a4275fd59b79898bfaaae710ae8bf589ae6672 100644 (file)
@@ -261,7 +261,7 @@ static OutputCtx *JsonDropLogInitCtx(ConfNode *conf)
         return NULL;
     }
 
-    if (SCConfLogOpenGeneric(conf, drop_ctx->file_ctx, DEFAULT_LOG_FILENAME) < 0) {
+    if (SCConfLogOpenGeneric(conf, drop_ctx->file_ctx, DEFAULT_LOG_FILENAME, 1) < 0) {
         JsonDropOutputCtxFree(drop_ctx);
         return NULL;
     }
index aefa5cf9522712e317e113cefd63326779ab045a..7ff0d3d22ebc46fb7d9d6c00b0a8bc04dff05baa 100644 (file)
@@ -352,7 +352,7 @@ OutputCtx *OutputFlowLogInit(ConfNode *conf)
         return NULL;
     }
 
-    if (SCConfLogOpenGeneric(conf, file_ctx, DEFAULT_LOG_FILENAME) < 0) {
+    if (SCConfLogOpenGeneric(conf, file_ctx, DEFAULT_LOG_FILENAME, 1) < 0) {
         LogFileFreeCtx(file_ctx);
         return NULL;
     }
index f5152be547d160a347fed78893661120293c54b7..316419855aa192d52975f02dbe5635490c0b6d6e 100644 (file)
@@ -414,7 +414,7 @@ OutputCtx *OutputHttpLogInit(ConfNode *conf)
         return NULL;
     }
 
-    if (SCConfLogOpenGeneric(conf, file_ctx, DEFAULT_LOG_FILENAME) < 0) {
+    if (SCConfLogOpenGeneric(conf, file_ctx, DEFAULT_LOG_FILENAME, 1) < 0) {
         LogFileFreeCtx(file_ctx);
         return NULL;
     }
index 198dd58fc0a8b3e7b91e6bc9530f03864ab53cb0..153beb3ded394dbaa4faf5acc6c6db4683e96985 100644 (file)
@@ -335,7 +335,7 @@ OutputCtx *OutputNetFlowLogInit(ConfNode *conf)
         return NULL;
     }
 
-    if (SCConfLogOpenGeneric(conf, file_ctx, DEFAULT_LOG_FILENAME) < 0) {
+    if (SCConfLogOpenGeneric(conf, file_ctx, DEFAULT_LOG_FILENAME, 1) < 0) {
         LogFileFreeCtx(file_ctx);
         return NULL;
     }
index 83e9d12c0f2ca4387b4379d9502b5f3edade1a60..f722c383e0b2ad49bb97480b69c54f0cbdb4b77c 100644 (file)
@@ -90,7 +90,7 @@ OutputCtx *OutputSmtpLogInit(ConfNode *conf)
         return NULL;
     }
 
-    if (SCConfLogOpenGeneric(conf, file_ctx, DEFAULT_LOG_FILENAME) < 0) {
+    if (SCConfLogOpenGeneric(conf, file_ctx, DEFAULT_LOG_FILENAME, 1) < 0) {
         LogFileFreeCtx(file_ctx);
         return NULL;
     }
index dd68020c60e0272593146f6564235b000e4fc7ed..3dc4d10f843f3c3d3ea06963fd967de11ee92f9a 100644 (file)
@@ -211,7 +211,7 @@ OutputCtx *OutputSshLogInit(ConfNode *conf)
         return NULL;
     }
 
-    if (SCConfLogOpenGeneric(conf, file_ctx, DEFAULT_LOG_FILENAME) < 0) {
+    if (SCConfLogOpenGeneric(conf, file_ctx, DEFAULT_LOG_FILENAME, 1) < 0) {
         LogFileFreeCtx(file_ctx);
         return NULL;
     }
index 0778bfe6d3ea05db6e46403d86e8735d7b5bcf86..fea7177aa8fb0d62309b866f9cd4436bae93ac01 100644 (file)
@@ -259,7 +259,7 @@ OutputCtx *OutputStatsLogInit(ConfNode *conf)
         return NULL;
     }
 
-    if (SCConfLogOpenGeneric(conf, file_ctx, DEFAULT_LOG_FILENAME) < 0) {
+    if (SCConfLogOpenGeneric(conf, file_ctx, DEFAULT_LOG_FILENAME, 1) < 0) {
         LogFileFreeCtx(file_ctx);
         return NULL;
     }
index ef28b55ddea40dba6237288c0d02465c55a61074..4cbd21aec6d65f76ebebe12b7ab788035a9a6233 100644 (file)
@@ -245,7 +245,7 @@ OutputCtx *OutputTlsLogInit(ConfNode *conf)
         return NULL;
     }
 
-    if (SCConfLogOpenGeneric(conf, file_ctx, DEFAULT_LOG_FILENAME) < 0) {
+    if (SCConfLogOpenGeneric(conf, file_ctx, DEFAULT_LOG_FILENAME, 1) < 0) {
         LogFileFreeCtx(file_ctx);
         return NULL;
     }
index 4dea72c8618f81d551c58004f335c4e687608bfb..74289f1b58542ec6a83718b262146fb089673be5 100644 (file)
@@ -488,7 +488,7 @@ OutputCtx *OutputJsonInitCtx(ConfNode *conf)
             json_ctx->json_out == LOGFILE_TYPE_UNIX_DGRAM ||
             json_ctx->json_out == LOGFILE_TYPE_UNIX_STREAM)
         {
-            if (SCConfLogOpenGeneric(conf, json_ctx->file_ctx, DEFAULT_LOG_FILENAME) < 0) {
+            if (SCConfLogOpenGeneric(conf, json_ctx->file_ctx, DEFAULT_LOG_FILENAME, 1) < 0) {
                 LogFileFreeCtx(json_ctx->file_ctx);
                 SCFree(json_ctx);
                 SCFree(output_ctx);
@@ -559,7 +559,6 @@ static void OutputJsonDeInitCtx(OutputCtx *output_ctx)
 {
     OutputJsonCtx *json_ctx = (OutputJsonCtx *)output_ctx->data;
     LogFileCtx *logfile_ctx = json_ctx->file_ctx;
-    OutputUnregisterFileRotationFlag(&logfile_ctx->rotation_flag);
     LogFileFreeCtx(logfile_ctx);
     SCFree(json_ctx);
     SCFree(output_ctx);
index fcef26d623e204d39d31dd1ea2edb008c365b76a..0e548d1ce13041749549d06e1a6a534fca502d10 100644 (file)
@@ -142,13 +142,15 @@ static PcieFile *SCLogOpenPcieFp(LogFileCtx *log_ctx, const char *path,
  *  \param conf ConfNode structure for the output section in question
  *  \param log_ctx Log file context allocated by caller
  *  \param default_filename Default name of file to open, if not specified in ConfNode
+ *  \param rotate Register the file for rotation in HUP.
  *  \retval 0 on success
  *  \retval -1 on error
  */
 int
 SCConfLogOpenGeneric(ConfNode *conf,
                      LogFileCtx *log_ctx,
-                     const char *default_filename)
+                     const char *default_filename,
+                     int rotate)
 {
     char log_path[PATH_MAX];
     char *log_dir;
@@ -211,6 +213,9 @@ SCConfLogOpenGeneric(ConfNode *conf,
                 "filename");
             return -1;
         }
+        if (rotate) {
+            OutputRegisterFileRotationFlag(&log_ctx->rotation_flag);
+        }
     } else if (strcasecmp(filetype, "pcie") == 0) {
         log_ctx->pcie_fp = SCLogOpenPcieFp(log_ctx, log_path, append);
         if (log_ctx->pcie_fp == NULL)
@@ -307,6 +312,8 @@ int LogFileFreeCtx(LogFileCtx *lf_ctx)
     if(lf_ctx->filename != NULL)
         SCFree(lf_ctx->filename);
 
+    OutputUnregisterFileRotationFlag(&lf_ctx->rotation_flag);
+
     SCFree(lf_ctx);
 
     SCReturnInt(1);
index 5d144f95d43e6d58010c3fc8b040825f889777da..1f10e3491bbf01c0dff280a2a2177c1b8863673f 100644 (file)
@@ -85,7 +85,7 @@ typedef struct LogFileCtx_ {
 LogFileCtx *LogFileNewCtx(void);
 int LogFileFreeCtx(LogFileCtx *);
 
-int SCConfLogOpenGeneric(ConfNode *conf, LogFileCtx *, const char *);
+int SCConfLogOpenGeneric(ConfNode *conf, LogFileCtx *, const char *, int);
 int SCConfLogReopen(LogFileCtx *);
 
 #endif /* __UTIL_LOGOPENFILE_H__ */