]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
runmodes: fix 'threads' option parsing 2942/head
authorVictor Julien <victor@inliniac.net>
Fri, 13 Oct 2017 07:22:49 +0000 (09:22 +0200)
committerVictor Julien <victor@inliniac.net>
Tue, 17 Oct 2017 07:32:51 +0000 (09:32 +0200)
Don't cast int to uint8_t for no reason. Add warning that upper
limit for theads is 1024.

Small code cleanups.

Bug: #2243

src/runmode-af-packet.c
src/runmode-netmap.c
src/runmode-pcap.c
src/runmode-pfring.c
src/util-runmodes.c

index 959617889b91cc4cbfb959c112e9583a25782cdc..91e1427832146f7ed2b601de5641d62b4cffcafd 100644 (file)
@@ -188,7 +188,7 @@ void *ParseAFPConfig(const char *iface)
             if (strcmp(threadsstr, "auto") == 0) {
                 aconf->threads = 0;
             } else {
-                aconf->threads = (uint8_t)atoi(threadsstr);
+                aconf->threads = atoi(threadsstr);
             }
         }
     }
index 3ea6c7a55cd7747071183e45a66a2a1fb80b5ec1..45b0babfaa00ba8b1fe6fc45b1ff5d0644e3b12b 100644 (file)
@@ -138,7 +138,7 @@ static int ParseNetmapSettings(NetmapIfaceSettings *ns, const char *iface,
         if (strcmp(threadsstr, "auto") == 0) {
             ns->threads = 0;
         } else {
-            ns->threads = (uint8_t)atoi(threadsstr);
+            ns->threads = atoi(threadsstr);
         }
     }
 
index bcd8358ece6a7299204f0ce90b3d6d524e1fdd53..5a067dd3e88326106a28d1c82cf55dab386dac2f 100644 (file)
@@ -142,7 +142,7 @@ void *ParsePcapConfig(const char *iface)
         aconf->threads = 1;
     } else {
         if (threadsstr != NULL) {
-            aconf->threads = (uint8_t)atoi(threadsstr);
+            aconf->threads = atoi(threadsstr);
         }
     }
     if (aconf->threads == 0) {
index 5332252570f573472de96c4d6d1cccf66993a362..0c4ac3ebde45a8047466532ebc863f2e5cf6d543 100644 (file)
@@ -125,7 +125,7 @@ void *OldParsePfringConfig(const char *iface)
         pfconf->threads = 1;
     } else {
         if (threadsstr != NULL) {
-            pfconf->threads = (uint8_t)atoi(threadsstr);
+            pfconf->threads = atoi(threadsstr);
         }
     }
     if (pfconf->threads == 0) {
@@ -252,7 +252,7 @@ void *ParsePfringConfig(const char *iface)
         pfconf->threads = 1;
     } else {
         if (threadsstr != NULL) {
-            pfconf->threads = (uint8_t)atoi(threadsstr);
+            pfconf->threads = atoi(threadsstr);
         }
     }
     if (pfconf->threads == 0) {
index f58c274402401f0b0a69fc2d55efdafda02eeec1..13636ffc5b1975605c4d1995c4f985152fa959c2 100644 (file)
@@ -95,7 +95,6 @@ int RunModeSetLiveCaptureAutoFp(ConfigIfaceParserFunc ConfigParser,
     char tname[TM_THREAD_NAME_MAX];
     char qname[TM_QUEUE_NAME_MAX];
     char *queues = NULL;
-    uint16_t thread = 0;
 
     /* Available cpus */
     uint16_t ncpus = UtilCpuGetNumProcessorsOnline();
@@ -106,8 +105,10 @@ int RunModeSetLiveCaptureAutoFp(ConfigIfaceParserFunc ConfigParser,
         thread_max = ncpus * threading_detect_ratio;
     if (thread_max < 1)
         thread_max = 1;
-    if (thread_max > 1024)
+    if (thread_max > 1024) {
+        SCLogWarning(SC_ERR_RUNMODE, "limited number of 'worker' threads to 1024. Wanted %d", thread_max);
         thread_max = 1024;
+    }
 
     queues = RunmodeAutoFpCreatePickupQueuesString(thread_max);
     if (queues == NULL) {
@@ -123,8 +124,8 @@ int RunModeSetLiveCaptureAutoFp(ConfigIfaceParserFunc ConfigParser,
 
         aconf = ConfigParser(live_dev);
         if (aconf == NULL) {
-            SCLogError(SC_ERR_RUNMODE, "Failed to allocate config for %s (%d)",
-                   live_dev, thread);
+            SCLogError(SC_ERR_RUNMODE, "Failed to allocate config for %s",
+                   live_dev);
             exit(EXIT_FAILURE);
         }
 
@@ -133,7 +134,7 @@ int RunModeSetLiveCaptureAutoFp(ConfigIfaceParserFunc ConfigParser,
                   threads_count, recv_mod_name);
 
         /* create the threads */
-        for (thread = 0; thread < threads_count; thread++) {
+        for (int thread = 0; thread < MIN(thread_max, threads_count); thread++) {
             snprintf(tname, sizeof(tname), "%s#%02d", thread_name, thread+1);
             ThreadVars *tv_receive =
                 TmThreadCreatePacketHandler(tname,
@@ -169,9 +170,8 @@ int RunModeSetLiveCaptureAutoFp(ConfigIfaceParserFunc ConfigParser,
         }
     } else { /* Multiple input device */
         SCLogInfo("Using %d live device(s).", nlive);
-        int lthread;
 
-        for (lthread = 0; lthread < nlive; lthread++) {
+        for (int lthread = 0; lthread < nlive; lthread++) {
             const char *dev = LiveGetDeviceName(lthread);
             const char *visual_devname = LiveGetShortName(live_dev);
             void *aconf;
@@ -191,7 +191,7 @@ int RunModeSetLiveCaptureAutoFp(ConfigIfaceParserFunc ConfigParser,
             }
 
             threads_count = ModThreadsCount(aconf);
-            for (thread = 0; thread < threads_count; thread++) {
+            for (int thread = 0; thread < threads_count; thread++) {
                 snprintf(tname, sizeof(tname), "%s#%02d-%s", thread_name,
                          thread+1, visual_devname);
 
@@ -227,7 +227,7 @@ int RunModeSetLiveCaptureAutoFp(ConfigIfaceParserFunc ConfigParser,
         }
     }
 
-    for (thread = 0; thread < (uint16_t)thread_max; thread++) {
+    for (int thread = 0; thread < thread_max; thread++) {
         snprintf(tname, sizeof(tname), "%s#%02u", thread_name_workers, thread+1);
         snprintf(qname, sizeof(qname), "pickup%u", thread+1);
 
@@ -278,7 +278,6 @@ static int RunModeSetLiveCaptureWorkersForDevice(ConfigIfaceThreadsCountFunc Mod
                               const char *live_dev, void *aconf,
                               unsigned char single_mode)
 {
-    int thread;
     int threads_count;
 
     if (single_mode) {
@@ -289,7 +288,7 @@ static int RunModeSetLiveCaptureWorkersForDevice(ConfigIfaceThreadsCountFunc Mod
     }
 
     /* create the threads */
-    for (thread = 0; thread < threads_count; thread++) {
+    for (int thread = 0; thread < threads_count; thread++) {
         char tname[TM_THREAD_NAME_MAX];
         ThreadVars *tv = NULL;
         TmModule *tm_module = NULL;
@@ -433,7 +432,6 @@ int RunModeSetIPSAutoFp(ConfigIPSParserFunc ConfigParser,
     TmModule *tm_module ;
     const char *cur_queue = NULL;
     char *queues = NULL;
-    uint16_t thread;
 
     /* Available cpus */
     uint16_t ncpus = UtilCpuGetNumProcessorsOnline();
@@ -445,8 +443,10 @@ int RunModeSetIPSAutoFp(ConfigIPSParserFunc ConfigParser,
         thread_max = ncpus * threading_detect_ratio;
     if (thread_max < 1)
         thread_max = 1;
-    if (thread_max > 1024)
+    if (thread_max > 1024) {
+        SCLogWarning(SC_ERR_RUNMODE, "limited number of 'worker' threads to 1024. Wanted %d", thread_max);
         thread_max = 1024;
+    }
 
     queues = RunmodeAutoFpCreatePickupQueuesString(thread_max);
     if (queues == NULL) {
@@ -494,7 +494,7 @@ int RunModeSetIPSAutoFp(ConfigIPSParserFunc ConfigParser,
         }
 
     }
-    for (thread = 0; thread < (uint16_t)thread_max; thread++) {
+    for (int thread = 0; thread < thread_max; thread++) {
         snprintf(tname, sizeof(tname), "%s#%02u", thread_name_workers, thread+1);
         snprintf(qname, sizeof(qname), "pickup%u", thread+1);