tcpdump mailing list archives
Re: error executing ksniff with libpcap 1.0.0
From: Giovanni Venturi <giovanni () ksniffer org>
Date: Wed, 19 Nov 2008 18:38:05 +0100
Alle mercoledì 19 novembre 2008, Guy Harris ha scritto:
On Nov 17, 2008, at 1:46 PM, Giovanni Venturi wrote:To make the pcap_next/pcap_ex non blocking under Linux I use: FD_ZERO(&m_fdset); FD_SET(m_pcap_fd, &m_fdset); m_fdtimeout.tv_sec = 0; m_fdtimeout.tv_usec = CAP_READ_TIMEOUT*1000; selRet = select(m_pcap_fd+1, &m_fdset, NULL, NULL, &m_fdtimeout);How is that "non-blocking"? That select() call blocks until either m_pcap_fd is readable or the timeout expires.
I mean "non-blocking" in the sense that I can set a small timeout and return also each 1 second or less, so If I never get a packet I can quit from the application if I want sniff just for 10 minutes for example. If I don't do so and If I never get a packet I will always blocked on the pcap_next_ex() reading.
No possibility to delete this ugly code with libpcap 1.0.0? I've seen: int pcap_setnonblock(pcap_t *p, int nonblock, char *errbuf); Doesn't work under Linux?It worked when I tested it; what do you mean by "doesn't work"?
It's a question :) . I mean I need a way to wait for packets not more than X msec If I don't get any packets and I'd like to get rid of the select() .
(Be aware that the timeout argument to pcap_open_live() has *never* been guaranteed to ensure that pcap_next()/pcap_next_ex() will return within the timeout period. It only guarantees that, *if* at least one packet has been captured, the application will never wait longer than the timeout period to see that packet; it might wait less, but that's not guaranteed.
[cut] This means that it's not as I intended: "a way to wait for packets not more than X msec If I don't get any packets and I'd like to get rid of the select()". The timeout in pcap_open_live() means that I wait that time and than I return from the function. I can use a very small time, but this doesn't assure me that when I get a packet pcap_next_ex() return at once. It has to wait the fixed timeout anyway. Thank you for your time and information, Giovanni -- A KDE Italian translator and KSniffer core developer Slackware GNU/Linux current version - kernel 2.6.27.6 KSniffer Project - http://www.ksniffer.org/
Attachment:
signature.asc
Description: This is a digitally signed message part.
Current thread:
- error executing ksniff with libpcap 1.0.0 Giovanni Venturi (Nov 16)
- Re: error executing ksniff with libpcap 1.0.0 Guy Harris (Nov 16)
- Re: error executing ksniff with libpcap 1.0.0 Guy Harris (Nov 16)
- Re: error executing ksniff with libpcap 1.0.0 Giovanni Venturi (Nov 17)
- Re: error executing ksniff with libpcap 1.0.0 Guy Harris (Nov 17)
- Re: error executing ksniff with libpcap 1.0.0 Guy Harris (Nov 16)
- Re: error executing ksniff with libpcap 1.0.0 Guy Harris (Nov 16)
- <Possible follow-ups>
- error executing ksniff with libpcap 1.0.0 Giovanni Venturi (Nov 17)
- Re: error executing ksniff with libpcap 1.0.0 Guy Harris (Nov 17)
- Re: error executing ksniff with libpcap 1.0.0 Giovanni Venturi (Nov 17)
- Re: error executing ksniff with libpcap 1.0.0 Guy Harris (Nov 19)
- Re: error executing ksniff with libpcap 1.0.0 Giovanni Venturi (Nov 19)
- Re: error executing ksniff with libpcap 1.0.0 Guy Harris (Nov 17)
- Re: error executing ksniff with libpcap 1.0.0 Giovanni Venturi (Nov 18)
- Re: error executing ksniff with libpcap 1.0.0 Guy Harris (Nov 18)
- Re: error executing ksniff with libpcap 1.0.0 Giovanni Venturi (Nov 18)
- Re: error executing ksniff with libpcap 1.0.0 Guy Harris (Nov 18)