On Wed, 9 Nov 2022 11:15:06 GMT, Michael McMahon <micha...@openjdk.org> wrote:
> Seems strange that the definition has been removed in a newer Xcode version. > Have you checked if it has been moved to a different header file? It is still in the in6.h. But it is not included because of the macro definitions. #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) ... #ifdef __APPLE_USE_RFC_3542 ... #define IPV6_DONTFRAG 62 /* bool; disable IPv6 fragmentation */ ... #endif /* __APPLE_USE_RFC_3542 */ ... #endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */ If I updated the MacOSXSocketOptions.c code to: #define __APPLE_USE_RFC_3542 #include <netinet/in.h> #ifndef IP_DONTFRAG #define IP_DONTFRAG 28 #endif #if defined(_POSIX_C_SOURCE) #undef IP_DONTFRAG #endif #if !defined(_DARWIN_C_SOURCE) #undef IP_DONTFRAG #endif /* #ifndef IPV6_DONTFRAG #define IPV6_DONTFRAG 62 #endif */ I can see neither IP_DONTFRAG nor IPV6_DONTFRAG is defined. I think the _POSIX_C_SOURCE is defined, and _DARWIN_C_SOURCE not in the building environment. And the definitions of _POSIX_C_SOURCE and _DARWIN_C_SOURCE get the IPV6_DONTFRAG definition in in6.h out. Alternatively, we may be able to define _DARWIN_C_SOURCE as we did for __APPLE_USE_RFC_3542. But the impact may be more wider. #define __APPLE_USE_RFC_3542 + #define _DARWIN_C_SOURCE #include <netinet/in.h> ------------- PR: https://git.openjdk.org/jdk/pull/11047