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

Reply via email to