From: Eric Leblond Date: Sat, 7 Dec 2019 09:43:28 +0000 (+0100) Subject: suricata: fix computing of default packet size X-Git-Tag: suricata-5.0.1~41 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1b9009ea0e6dfcc835a036d06654aa2420aaa152;p=thirdparty%2Fsuricata.git suricata: fix computing of default packet size Update the default packet size computation to use LiveDeviceName instead of LiveDevice as the LiveDevice list is not built when the default packet size is built. --- diff --git a/src/suricata.c b/src/suricata.c index 886bcba2bb..f61ab4ad8a 100644 --- a/src/suricata.c +++ b/src/suricata.c @@ -2531,9 +2531,9 @@ static int ConfigGetCaptureValue(SCInstance *suri) case RUNMODE_PCAP_DEV: case RUNMODE_AFP_DEV: case RUNMODE_PFRING: - nlive = LiveGetDeviceCount(); + nlive = LiveGetDeviceNameCount(); for (lthread = 0; lthread < nlive; lthread++) { - const char *live_dev = LiveGetDeviceName(lthread); + const char *live_dev = LiveGetDeviceNameName(lthread); char dev[128]; /* need to be able to support GUID names on Windows */ (void)strlcpy(dev, live_dev, sizeof(dev)); diff --git a/src/util-device.c b/src/util-device.c index d6cc5b6b94..4c0779ea63 100644 --- a/src/util-device.c +++ b/src/util-device.c @@ -190,6 +190,49 @@ const char *LiveGetDeviceName(int number) return NULL; } +/** + * \brief Get the number of pre registered devices + * + * \retval cnt the number of pre registered devices + */ +int LiveGetDeviceNameCount(void) +{ + int i = 0; + LiveDeviceName *pd; + + TAILQ_FOREACH(pd, &pre_live_devices, next) { + i++; + } + + return i; +} + +/** + * \brief Get a pointer to the pre device name at idx + * + * \param number idx of the pre device in our list + * + * \retval ptr pointer to the string containing the device + * \retval NULL on error + */ +const char *LiveGetDeviceNameName(int number) +{ + int i = 0; + LiveDeviceName *pd; + + TAILQ_FOREACH(pd, &pre_live_devices, next) { + if (i == number) { + return pd->dev; + } + + i++; + } + + return NULL; +} + + + /** \internal * \brief Shorten a device name that is to long * diff --git a/src/util-device.h b/src/util-device.h index bbb02048f5..229d00245f 100644 --- a/src/util-device.h +++ b/src/util-device.h @@ -63,6 +63,8 @@ typedef struct LiveDeviceName_ { void LiveDevRegisterExtension(void); int LiveRegisterDeviceName(const char *dev); +int LiveGetDeviceNameCount(void); +const char *LiveGetDeviceNameName(int number); int LiveRegisterDevice(const char *dev); int LiveDevUseBypass(LiveDevice *dev); void LiveDevSetBypassStats(LiveDevice *dev, uint64_t cnt, int family);