summaryrefslogtreecommitdiff
path: root/pcap-npf.c
diff options
context:
space:
mode:
authorGuy Harris <gharris@sonic.net>2020-07-03 05:33:46 -0700
committerGuy Harris <gharris@sonic.net>2020-07-03 05:33:46 -0700
commit6c893c132cbf8a8b1f9acfe909a45bfee230ba81 (patch)
treee909f53ae24a1a299aac983a9303c40e611e3ef1 /pcap-npf.c
parent141253c471119db0761d73c2fc095b82a2017eb3 (diff)
downloadlibpcap-6c893c132cbf8a8b1f9acfe909a45bfee230ba81.tar.gz
Initialize snaplen.
That shouldn't be necessary, but it avoids compiler warnings with older versions of Visual Studio.
Diffstat (limited to 'pcap-npf.c')
-rw-r--r--pcap-npf.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/pcap-npf.c b/pcap-npf.c
index 2c7fd9f5..06f6bba0 100644
--- a/pcap-npf.c
+++ b/pcap-npf.c
@@ -908,6 +908,8 @@ pcap_activate_npf(pcap_t *p)
NetType type;
int res;
int status = 0;
+ struct bpf_insn total_insn;
+ struct bpf_program total_prog;
if (p->opt.rfmon) {
/*
@@ -1231,6 +1233,29 @@ pcap_activate_npf(pcap_t *p)
#endif /* HAVE_DAG_API */
}
+ /*
+ * If there's no filter program installed, there's
+ * no indication to the kernel of what the snapshot
+ * length should be, so no snapshotting is done.
+ *
+ * Therefore, when we open the device, we install
+ * an "accept everything" filter with the specified
+ * snapshot length.
+ */
+ total_insn.code = (u_short)(BPF_RET | BPF_K);
+ total_insn.jt = 0;
+ total_insn.jf = 0;
+ total_insn.k = p->snapshot;
+
+ total_prog.bf_len = 1;
+ total_prog.bf_insns = &total_insn;
+ if (!PacketSetBpf(pw->adapter, &total_prog)) {
+ pcap_fmt_errmsg_for_win32_err(p->errbuf, PCAP_ERRBUF_SIZE,
+ GetLastError(), "PacketSetBpf");
+ status = PCAP_ERROR;
+ goto bad;
+ }
+
PacketSetReadTimeout(pw->adapter, p->opt.timeout);
/* disable loopback capture if requested */