tcpdump mailing list archives
Re: pcap_loop() not returning after pcap_breakloop() until another packet arrives
From: Guy Harris <guy () alum mit edu>
Date: Mon, 26 Jun 2006 15:09:57 -0700
On Jun 24, 2006, at 10:50 PM, Richard Hansen wrote:
I have one thread that sits in pcap_loop() and another thread that calls pcap_breakloop() when it is time to shut down. My code works well on Windows (WinPcap 3.1).
Well, sort of. I suspect that pcap_breakloop() doesn't *immediately* break you out of the loop - it's probably delayed until a packet arrives *or* the timeout expires.
On Linux (libpcap 0.9.4, kernel 2.6.16) the pcap_loop() doesn't return after calling pcap_breakloop() until another packet arrives. Is this expected or proper behavior?
Expected, yes. Linux's packet capture mechanism doesn't have the timeouts that the WinPcap driver, BPF, etc. do.
How can I tell Linux to return from that readfrom() call that it's blocking on?
You *might* be able to do it with pthread_cancel(), although that will, ultimately, terminate the thread (unless a cleanup handler never returns).
- This is the tcpdump-workers list. Visit https://lists.sandelman.ca/ to unsubscribe.
Current thread:
- pcap_loop() not returning after pcap_breakloop() until another packet arrives Richard Hansen (Jun 24)
- Re: pcap_loop() not returning after pcap_breakloop() until another packet arrives Guy Harris (Jun 26)
- Re: pcap_loop() not returning after pcap_breakloop() Fabian Schneider (Jun 27)
- Re: pcap_loop() not returning after pcap_breakloop() Guy Harris (Jun 27)
- Re: pcap_loop() not returning after pcap_breakloop() Richard Hansen (Jun 27)
- Re: pcap_loop() not returning after David Rosal (Jun 27)
- Re: pcap_loop() not returning after pcap_breakloop() Fabian Schneider (Jun 27)
- Re: pcap_loop() not returning after pcap_breakloop() until another packet arrives Guy Harris (Jun 26)