macos Sierra with CGA address?

Jeroen Massar jeroen at massar.ch
Wed Dec 14 13:05:56 CET 2016


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




More information about the ipv6-ops mailing list