[Winpcap-users] pcap_loop()/pcap_breakloop() problem
Srivats P
pstavirs at gmail.com
Sun Nov 1 09:33:27 PST 2009
Hi,
I want to start/stop a pkt capture based on user triggers.
Towards this end, I do a pcap_open_live() at init -
capHandle = pcap_open_live(port->dev->name, 65535,
PCAP_OPENFLAG_PROMISCUOUS, -1, errbuf);
On the start trigger, I start a thread which essentially just calls
pcap_loop() -
dumpHandle = pcap_dump_open(capHandle, capFile.fileName());
ret = pcap_loop(capHandle, -1, pcap_dump, (uchar*) dumpHandle);
On the stop trigger, I call pcap_breakloop() -
pcap_breakloop(capHandle);
My problem is that sometimes (not always) on the start trigger when I
call pcap_loop(), it exits immediately with -2. As per the
documentation this may happen when the last call to pcap_loop()
returns a positive number and the breakloop flag is not reset - but in
my case pcap_loop() never returns a positive number 'coz the 'cnt'
passed to pcap_loop() is -1. So pcap_loop() always returns -2. But the
next invocation of pcap_loop() via the 'start' trigger may exit
immediately without doing any capture!
Is there any other way to reset the breakloop flag? Or someway to
identify that I need to call pcap_loop() once to reset the flag before
calling it again for the actual start of capture?
Or (most likely) maybe I'm doing something incorrectly?
Regards,
Srivats
More information about the Winpcap-users
mailing list