On Aug 14, 2014, at 1:34 PM, Fernando Gont <ferna...@gont.com.ar> wrote:

> While trying to select() on a pcap descriptor in solaris

Which version?  Solaris 11 (in which pcap descriptors should refer to BPF 
devices), or earlier (in which pcap descriptors should refer to DLPI STREAMS 
devices)?

> I found the following:
> 
> 1) It seems that pcap descriptors are never readable or writeable. (--
> This is different from *BSD and Linux, where at least you seem to be
> able to check for readability)
> 
> 2) It would seem that even trying to select() on such descriptors causes
> trouble. For example, I get a kind of random "Bad file number" error
> from select when I try to check for readability/writeability.

I wouldn't expect that prior to Solaris 11 - select() and poll() Just Work on 
STREAMS devices, as I remember.

It could, however, be that Sun^WOracle screwed up with BPF; unfortunately, 
Solaris 11 is ClosedSolaris, so I can't just look at the source and see what 
they did wrong.

I'll try this on my Solaris 11 virtual machine.

> Is the above assessment correct? Should I not even try to call select()
> on pcap descriptors in Solaris?

If they screwed up on Solaris 11, you probably shouldn't try to call select(); 
instead, you should try to call Oracle and report this as a bug (and tell them 
that, if they fix this, they should fix it so that if you have a timeout set 
with BIOCSRTIMEOUT, the timer should start as soon as a select() or poll() is 
done, so that, when the timeout expires, it can report the descriptor as 
readable - the original BPF didn't do that, and all the *BSDs and OS X 
eventually fixed it).
_______________________________________________
tcpdump-workers mailing list
tcpdump-workers@lists.tcpdump.org
https://lists.sandelman.ca/mailman/listinfo/tcpdump-workers

Reply via email to