summaryrefslogtreecommitdiffstats
path: root/src/input/fpcap.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/input/fpcap.c')
-rw-r--r--src/input/fpcap.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/input/fpcap.c b/src/input/fpcap.c
index de054ec..6804608 100644
--- a/src/input/fpcap.c
+++ b/src/input/fpcap.c
@@ -24,6 +24,7 @@
#include "core/assert.h"
#include "core/object/pcap.h"
+#include <fcntl.h>
#include <stdio.h>
#ifdef HAVE_ENDIAN_H
#include <endian.h>
@@ -60,7 +61,7 @@ static input_fpcap_t _defaults = {
0, 0,
0, 0, 0,
CORE_OBJECT_PCAP_INIT(0),
- 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,
0
};
@@ -91,6 +92,16 @@ static int _open(input_fpcap_t* self)
{
mlassert_self();
+#if _POSIX_C_SOURCE >= 200112L || defined(__FreeBSD__)
+ if (self->use_fadvise) {
+ int err = posix_fadvise(fileno((FILE*)self->file), 0, 0, POSIX_FADV_SEQUENTIAL);
+ if (err) {
+ lcritical("posix_fadvise() failed: %s", core_log_errstr(err));
+ return -2;
+ }
+ }
+#endif
+
if (fread(&self->magic_number, 1, 4, self->file) != 4
|| fread(&self->version_major, 1, 2, self->file) != 2
|| fread(&self->version_minor, 1, 2, self->file) != 2