diff options
author | Guy Harris <gharris@sonic.net> | 2020-07-03 05:33:46 -0700 |
---|---|---|
committer | Guy Harris <gharris@sonic.net> | 2020-07-03 05:33:46 -0700 |
commit | 6c893c132cbf8a8b1f9acfe909a45bfee230ba81 (patch) | |
tree | e909f53ae24a1a299aac983a9303c40e611e3ef1 /pcap-npf.c | |
parent | 141253c471119db0761d73c2fc095b82a2017eb3 (diff) | |
download | libpcap-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.c | 25 |
1 files changed, 25 insertions, 0 deletions
@@ -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 */ |