[dpdk-dev] [PATCH v2 4/6] net/pcap: add libpcap wrappers
Dmitry Kozlyuk
dmitry.kozliuk at gmail.com
Thu Feb 25 20:04:40 CET 2021
2021-02-25 14:59, Ferruh Yigit:
> On 2/14/2021 2:16 AM, Dmitry Kozlyuk wrote:
> > libpcap headers can expose OS headers. On Windows, system networking
> > headers are incompatible with DPDK ones, causing multiple name clashes.
> > API of libpcap itself involves a non-standard u_char type.
> >
> > Add a limited set of trivial libpcap wrappers, so that libpcap headers
> > are not included directly by OS-independent PMD code. Use EAL types and
> > functions for time instead of POSIX ones.
> >
>
> It is not nice to duplicate the pcap struct and macros and have dpdk versions of
> them, it may have long term maintanance issues too.
>
> What are the clashes in question?
>
> If they are macros, can the issue solved after undefining some after including
> 'pcap.h'?
>
> And at the end of the day, shouldn't we need to resolve these clashes globally
> since we may hit same things with other PMDs or libraries as we enable them. I
> am for a global solution instead of these changes in pcap, but I guess question
> is how possible that global solution is..
Your comment made me revise Windows EAL networking shims. Surprisingly, if
changed to expose Windows networking headers (specifically, <ws2tcpip.h>) with
some additions (but no hacks), they create no issues to any existing code.
The only workaround remaining is `#undef s_addr` in <rte_ether.h>.
So maybe this commit can be dropped, if Windows EAL networking headers be
reworked in the following way:
#if defined min
#define USER_EXPLICITLY_WANTS_WINDOWS_H
#endif
#include <ws2tcpip.h>
/* hide definitions that break portable code,
* e.g. it had to be done once already for i40e
*/
#ifndef USER_EXPLICITLY_WANTS_WINDOWS_H
#undef min, max, ...
#endif
#define what's missing from Windows headers, e.g. IPPROTO_SCTP
+ Windows maintainers, Nick Connolly, and Jie Zhou to discuss.
More information about the dev
mailing list