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);