On 2016-12-14 12:40, Jeroen Massar wrote: [..] >> There is another sysctl parameter (opmode) but unclear what 1 (or 0) means: >> $ sysctl net.inet6.send >> net.inet6.send.opstate: 1 >> net.inet6.send.opmode: 1 > > There is no documentation at all about these things, hence, nothing one > can say about it, except begging Apple to finally document stuff.
Maybe this is the 'closest' to documentation: the source: https://github.com/opensource-apple/xnu/blob/27ffc00f33925b582391b1ef318b78b8bd3939d1/bsd/netinet6/nd6_send.c This is an older dump though. Not a single mention of a RFC in there, but they are talking about "SEND" (Not SeND") and there are CGA parameters in there which are not exposed. Apparently one needs "#if CONFIG_MACF" which we do not have... Hence, I can only guess that that code is not active yet, at least in that ancient version. Thus lets peek at: https://opensource.apple.com/tarballs/xnu/xnu-3248.60.10.tar.gz mmm while I have: root:xnu-3789.21.3~60/RELEASE_X86_64 x86_64 Thus 500 something behind.... In that tarball, look at bsd/netinet6/ Same file still there. Thus: nothing changed in that timeframe concerning send. Though, as various of the dumps show, opmode/state has changed to '1' somewhere. Maybe this is thus part of those last 500 changes? in6.c has: 8<------------------- if (optdad) { if ((optdad & ND6_OPTIMISTIC_DAD_LINKLOCAL) && IN6_IS_ADDR_LINKLOCAL(&ia->ia_addr.sin6_addr)) flags = IN6_IFF_OPTIMISTIC; else if ((optdad & ND6_OPTIMISTIC_DAD_AUTOCONF) && (ia->ia6_flags & IN6_IFF_AUTOCONF)) { if (ia->ia6_flags & IN6_IFF_TEMPORARY) { if (optdad & ND6_OPTIMISTIC_DAD_TEMPORARY) flags = IN6_IFF_OPTIMISTIC; } else if (ia->ia6_flags & IN6_IFF_SECURED) { if (optdad & ND6_OPTIMISTIC_DAD_SECURED) flags = IN6_IFF_OPTIMISTIC; } else { /* * Keeping the behavior for temp and CGA * SLAAC addresses to have a knob for optimistic * DAD. * Other than that if ND6_OPTIMISTIC_DAD_AUTOCONF * is set, we should default to optimistic * DAD. * For now this means SLAAC addresses with interface * identifier derived from modified EUI-64 bit * identifiers. */ flags = IN6_IFF_OPTIMISTIC; } ------------>8 Which is likely related.... but that was also in the old github edition already... Hence, we are still none the wiser here. Greets, Jeroen