]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
runmodes: code cleanups
authorVictor Julien <victor@inliniac.net>
Tue, 9 Jul 2019 11:07:22 +0000 (13:07 +0200)
committerVictor Julien <victor@inliniac.net>
Tue, 9 Jul 2019 11:56:29 +0000 (13:56 +0200)
src/runmodes.c
src/runmodes.h

index 6485222f607eaa6d59008cd60b07ef88dfc4d9e8..32b2657e1ef2a6a456ca5db8e84a2ef29304634c 100644 (file)
@@ -75,7 +75,7 @@ const char *thread_name_counter_wakeup = "CW";
  */
 typedef struct RunMode_ {
     /* the runmode type */
-    int runmode;
+    enum RunModes runmode;
     const char *name;
     const char *description;
     /* runmode function */
@@ -83,7 +83,7 @@ typedef struct RunMode_ {
 } RunMode;
 
 typedef struct RunModes_ {
-    int no_of_runmodes;
+    int cnt;
     RunMode *runmodes;
 } RunModes;
 
@@ -153,8 +153,7 @@ static const char *RunModeTranslateModeToName(int runmode)
             return "WINDIVERT(DISABLED)";
 #endif
         default:
-            SCLogError(SC_ERR_UNKNOWN_RUN_MODE, "Unknown runtime mode. Aborting");
-            exit(EXIT_FAILURE);
+            FatalError(SC_ERR_UNKNOWN_RUN_MODE, "Unknown runtime mode. Aborting");
     }
 }
 
@@ -166,15 +165,14 @@ static const char *RunModeTranslateModeToName(int runmode)
  * \param runmode            The runmode type.
  * \param runmode_customd_id The runmode custom id.
  */
-static RunMode *RunModeGetCustomMode(int runmode, const char *custom_mode)
+static RunMode *RunModeGetCustomMode(enum RunModes runmode, const char *custom_mode)
 {
-    int i;
-
-    for (i = 0; i < runmodes[runmode].no_of_runmodes; i++) {
-        if (strcmp(runmodes[runmode].runmodes[i].name, custom_mode) == 0)
-            return &runmodes[runmode].runmodes[i];
+    if (runmode < RUNMODE_USER_MAX) {
+        for (int i = 0; i < runmodes[runmode].cnt; i++) {
+            if (strcmp(runmodes[runmode].runmodes[i].name, custom_mode) == 0)
+                return &runmodes[runmode].runmodes[i];
+        }
     }
-
     return NULL;
 }
 
@@ -247,7 +245,7 @@ void RunModeListRunmodes(void)
     int j = 0;
     for ( ; i < RUNMODE_USER_MAX; i++) {
         int mode_displayed = 0;
-        for (j = 0; j < runmodes[i].no_of_runmodes; j++) {
+        for (j = 0; j < runmodes[i].cnt; j++) {
             if (mode_displayed == 1) {
                 printf("|                   ----------------------------------------------"
                        "-----------------------\n");
@@ -269,7 +267,7 @@ void RunModeListRunmodes(void)
         if (mode_displayed == 1) {
             printf("|-----------------------------------------------------------------"
                    "-----------------------\n");
-        } 
+        }
     }
 
     return;
@@ -418,19 +416,18 @@ int RunModeNeedsBypassManager(void)
  * \param description Description for this runmode.
  * \param RunModeFunc The function to be run for this runmode.
  */
-void RunModeRegisterNewRunMode(int runmode, const char *name,
+void RunModeRegisterNewRunMode(enum RunModes runmode,
+                               const char *name,
                                const char *description,
                                int (*RunModeFunc)(void))
 {
-    void *ptmp;
     if (RunModeGetCustomMode(runmode, name) != NULL) {
-        SCLogError(SC_ERR_RUNMODE, "A runmode by this custom name has already "
-                   "been registered.  Please use an unique name");
-        return;
+        FatalError(SC_ERR_RUNMODE, "runmode '%s' has already "
+                   "been registered. Please use an unique name.", name);
     }
 
-    ptmp = SCRealloc(runmodes[runmode].runmodes,
-                     (runmodes[runmode].no_of_runmodes + 1) * sizeof(RunMode));
+    void *ptmp = SCRealloc(runmodes[runmode].runmodes,
+                     (runmodes[runmode].cnt + 1) * sizeof(RunMode));
     if (ptmp == NULL) {
         SCFree(runmodes[runmode].runmodes);
         runmodes[runmode].runmodes = NULL;
@@ -438,19 +435,18 @@ void RunModeRegisterNewRunMode(int runmode, const char *name,
     }
     runmodes[runmode].runmodes = ptmp;
 
-    RunMode *mode = &runmodes[runmode].runmodes[runmodes[runmode].no_of_runmodes];
-    runmodes[runmode].no_of_runmodes++;
+    RunMode *mode = &runmodes[runmode].runmodes[runmodes[runmode].cnt];
+    runmodes[runmode].cnt++;
+    memset(mode, 0x00, sizeof(*mode));
 
     mode->runmode = runmode;
     mode->name = SCStrdup(name);
     if (unlikely(mode->name == NULL)) {
-        SCLogError(SC_ERR_MEM_ALLOC, "Failed to allocate string");
-        exit(EXIT_FAILURE);
+        FatalError(SC_ERR_MEM_ALLOC, "Failed to allocate string");
     }
     mode->description = SCStrdup(description);
     if (unlikely(mode->description == NULL)) {
-        SCLogError(SC_ERR_MEM_ALLOC, "Failed to allocate string");
-        exit(EXIT_FAILURE);
+        FatalError(SC_ERR_MEM_ALLOC, "Failed to allocate string");
     }
     mode->RunModeFunc = RunModeFunc;
 
@@ -505,7 +501,7 @@ bool IsRunModeSystem(enum RunModes run_mode_to_check)
     }
 }
 
-bool IsRunModeOffline(int run_mode_to_check)
+bool IsRunModeOffline(enum RunModes run_mode_to_check)
 {
     switch(run_mode_to_check) {
         case RUNMODE_CONF_TEST:
index 4ad83be94d1adfa5bf048632a7816fb073266f56..451ab2248a7e1c4393086be6f1c185b6b575a1d1 100644 (file)
@@ -78,7 +78,7 @@ const char *RunModeGetMainMode(void);
 void RunModeListRunmodes(void);
 void RunModeDispatch(int, const char *);
 void RunModeRegisterRunModes(void);
-void RunModeRegisterNewRunMode(int, const char *, const char *,
+void RunModeRegisterNewRunMode(enum RunModes, const char *, const char *,
                                int (*RunModeFunc)(void));
 void RunModeInitialize(void);
 void RunModeInitializeOutputs(void);
@@ -89,7 +89,7 @@ int RunModeOutputFileEnabled(void);
 /* bool indicating if filedata logger is enabled */
 int RunModeOutputFiledataEnabled(void);
 /** bool indicating if run mode is offline */
-bool IsRunModeOffline(int run_mode_to_check);
+bool IsRunModeOffline(enum RunModes run_mode_to_check);
 bool IsRunModeSystem(enum RunModes run_mode_to_check);
 
 void RunModeEnablesBypassManager(void);