tcpdump mailing list archives

Re: Checking for specific return errors in libpcap I/O functions


From: Guy Harris <guy () alum mit edu>
Date: Thu, 29 Dec 2011 16:27:30 -0800


On Dec 29, 2011, at 1:58 PM, Fernando Gont wrote:

I was trying to check for specific errors in libpcap I/O functions such
as pcap_next_ex() and pcap_inject().

However, the relevant manpages indicate that these functions return -1
on error, and don't mention the setting of any "errno-like" variable
that specifies the specific error that occurred.

They return -1 in all cases other than "somebody did pcap_breakloop()", so that applications that don't use 
pcap_breakloop() don't get surprised by return values other than the only error return they were documented to return 
in the past (-1), and so that applications that *do* use pcap_breakloop(), and that therefore were written in an era 
where they *could* return -2 (and were documented to do so, as I remember), and that therefore should be prepared for a 
return value of -2, aren't surprised by return values other than -1 and -2

While there exist functions such as pcap_geterr() to print an
error-specific message, I'm rather interested in obtaining an error code
such that my program can act differently depending on the specific
return error.

If that's possible?

Setting errno to 0 before calling them, and, if they return -1, checking the value of errno *might* work.  No 
guarantees, and bear in mind that errno values for various conditions are platform-dependent.

Ultimately, there should perhaps be different APIs, specified to return PCAP_ERROR_ values on error, so that

        1) libpcap/WinPcap can guarantee at least some specific error returns will be provided

and

        2) the error returns can be platform-independent.
-
This is the tcpdump-workers list.
Visit https://cod.sandelman.ca/ to unsubscribe.


Current thread: