Respond all ipv6 neighbor solicitation messages in MacOS.
To compile and run:
gcc -o ndp_fix ndp_fix.c
sudo ./ndp_fix
Because it uses raw socket, sudo
is required.
MacOS does not respond neighbor solicitations with global source addresses (see here and here). So if the router uses global source address for neighbor discovery protocol it will be unable to get the device's MAC address and cannot forward packets to it, even if the device has successfully configured a global ipv6 address via SLAAC or DHCPv6.