> Windows system headers define `s_addr`, `min`, and `max` macros which > break structure definitions containing fields with one of these names. > Undefining those macros would break consumer code that relies on them. >
>From the commit message the requirement for changing the structure definitions Is not clear. Please note that 'min' - 'max' are not macros. These are variables of a structure which should not break any other structure/Macro in windows. > Example 1: > > #include <winsock2.h> > #include <rte_ether.h> > struct in_addr addr; > /* addr.s_addr = 0; ERROR: s_addr undefined by DPDK */ > > Example 2: > > #include <rte_ether.h> > #include <winsock2.h> > struct rte_ether_hdr eh; > /* eh.s_addr.addr_bytes[0] = 0; ERROR: `addr_s` is a macro */ > > Commit 6c068dbd9fea ("net: work around s_addr macro on Windows") > modified definition of `struct rte_ether_hdr` to avoid the issue. > However, the workaround assumes `#define s_addr S_addr.S_un` > in Windows headers, which is not a part of official API. > It also complicates the definition of `struct rte_ether_hdr`. > > For `min` and `max`, no workaround seems available. If cryptodev or > compressdev is going to be enabled on Windows before 21.11, the only > option seems to use a new name on Windows (using #ifdef). > > It is proposed to rename the conflicting fields on DPDK side, > because Win32 API has wider use and is slower and harder to change. > Exact new names are left for further discussion. > > Signed-off-by: Dmitry Kozlyuk <dmitry.kozl...@gmail.com> > Acked-by: Khoa To <k...@microsoft.com> > --- > v3: fix typos (Ferruh), remove naming speculation, > replace workaround snippet with commit reference. > > doc/guides/rel_notes/deprecation.rst | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/doc/guides/rel_notes/deprecation.rst > b/doc/guides/rel_notes/deprecation.rst > index 9584d6bfd7..cc6e8db92c 100644 > --- a/doc/guides/rel_notes/deprecation.rst > +++ b/doc/guides/rel_notes/deprecation.rst > @@ -147,3 +147,12 @@ Deprecation Notices > * cmdline: ``cmdline`` structure will be made opaque to hide platform- > specific > content. On Linux and FreeBSD, supported prior to DPDK 20.11, > original structure will be kept until DPDK 21.11. > + > +* net: ``s_addr`` and ``d_addr`` fields of ``rte_ether_hdr`` structure > + will be renamed in DPDK 21.11 to avoid conflict with Windows Sockets > headers. > + > +* compressdev: ``min`` and ``max`` fields of ``rte_param_log2_range`` > structure > + will be renamed in DPDK 21.11 to avoid conflict with Windows Sockets > headers. > + > +* cryptodev: ``min`` and ``max`` fields of ``rte_crypto_param_range`` > structure > + will be renamed in DPDK 21.11 to avoid conflict with Windows Sockets > headers. > -- > 2.29.3