tcpdump mailing list archives

Re: Remove the eproto_db symbol exporting to keep the DLL delay-load feature on Windows


From: Guy Harris <guy () alum mit edu>
Date: Thu, 30 Jun 2016 13:14:26 -0700

On Jun 27, 2016, at 10:56 PM, Yang Luo <hsluoyb () gmail com> wrote:

Because of libpcap has exported the a data structure called eproto_db 
(https://github.com/the-tcpdump-group/libpcap/blob/master/nametoaddr.c#L320), when I compiled WinDump in MSVC 
specifying "wpcap.dll" as a delay loaded DLL, I encountered the link error 1194. The cause is here: 
https://msdn.microsoft.com/en-us/library/w59k653y%28v=vs.80%29.aspx?f=255&MSPPError=-2147217396.

Delay loading wpcap.dll is an important part for the switch between Npcap mode and WinPcap mode. And from the 
comment, it seems that exporting this data is not very critical. So can we remove the "PCAP_API_DEF" at the line 
beginning to disable the exporting?

What the comment says is

        * tcpdump used to import this, and it's declared as an export on
        * Debian, at least, so make it a public symbol, even though we
        * don't officially export it by declaring it in a header file.

which means that if we stop exporting it on UN*X, Debian might have to deem that an incompatible change to the ABI and 
that might cause significant disruption on Debian and its derivatives.

Other UN*Xes that ship libpcap might have a problem, especially if they have to support third-party closed-source 
binaries.

So, at minimum, we should continue to export it on UN*X.

And that might be an issue with Windows binaries as well; I suspect WinDump, for example, imports eproto_db from 
WinPcap, as it's based on an older version of tcpdump that imported it from libpcap.  I'll leave it up to you to 
determine whether introducing a possible binary incompatibility between WinPcap and Npcap is an issue.
_______________________________________________
tcpdump-workers mailing list
tcpdump-workers () lists tcpdump org
https://lists.sandelman.ca/mailman/listinfo/tcpdump-workers


Current thread: