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.

Reply via email to