On Aug 23, 2010, at 4:28 PM, Gianluca Varenni wrote:
> The problem is not the swap time. The problem is that immediately before the
> swap, the kernel ring buffer holding the packets in the driver is emptied.
FreeBSD has, as of FreeBSD 7.1:
http://www.freebsd.org/cgi/man.cgi?query=bpf&apropos=0&sektion=0&manpath=FreeBSD+7.1-RELEASE&format=html
two ioctls to set the filter - one of which flushes the old packets in the
buffer when switching filters (so that no packets that passed the old filter
but would not have passed the new filter are left in the buffer to read after
switching the filter), and one of which doesn't (for use in cases where you
don't expect that, after setting the filter, *no* packets that would not pass
the new filter will be read, which might be the case here).
WinPcap could probably do the same thing - but it currently doesn't, so that
suggestion is currently of use only to somebody willing to dive in and tweak
the WinPcap driver and run the modified driver. For programs using
libpcap/WinPcap, it'd also require a pcap_setfilter_noflush() call in
libpcap/WinPcap. (Now that FreeBSD has it, and given that I think Linux
doesn't flush the buffer when you change the filter, it might be worth adding
that API, although it'd fail on platforms where that can't be done.)
(Of course, if there's some mechanism by which a program can find out the names
or IP addresses of *all* the HTTP proxy servers Greg's machine could be using,
an ordinary filter giving "host XXX or host YYY or host ZZZ" would suffice here
- you wouldn't have to try to capture the DNS reply giving the proxy IP address
and switch the filter to look for that host.)
_______________________________________________
Winpcap-users mailing list
[email protected]
https://www.winpcap.org/mailman/listinfo/winpcap-users