• Jinoh Kang's avatar
    server: Avoid relying on linux/ipx.h to define SOL_IPX. · 915c3910
    Jinoh Kang authored
    musl libc doesn't supply any definitions for IPX, such as the SOL_IPX
    macro.  However, it still provides linux/ipx.h from Linux uAPI header
    files if it exists.
    
    Linux kernel wouldn't drop linux/ipx.h from uAPI headers until 5.15,
    although IPX support has already been marked obsolete since 2018.
    
    Fix this by not defining HAS_IPX if linux/ipx.h has been included but
    nothing defines the SOL_IPX macro.
    
    Status of IPX support from other libcs are noted below:
    
    - bionic: netipx/ipx.h does not exist.  linux/ipx.h may or may not
      exist.  Note that sys/socket.h defines SOL_IPX even if linux/ipx.h is
      missing.
    
    - glibc: netipx/ipx.h exists.  In this case, Wine assumes IPX support
      even if the operating system does not support it in runtime.
    
    - BSD variants: netipx/ipx.h may or may not exist.  linux/ipx.h does not
      exist.  Some BSDs supply SO_DEFAULT_HEADERS instead of SOL_IPX.
    
    Fixes: 41cc117b
    915c3910
sock.c 122 KB