On 2016-09-17 03:31, Robert Elz wrote:
Date: Fri, 16 Sep 2016 23:37:40 +0100 From: Roy Marples <roy%marples.name@localhost> Message-ID: <03a78e8605c842d9d032ee3ed3a59e0d%mail.marples.name@localhost> | > The IN_IFF_TENTATIVE handling just breaks lots of old code. | | You can disable it by setting the appropriate sysctl to zero. | | $ sysctl -a | grep dad | net.inet.ip.dad_count = 3 | net.inet6.ip6.dad_count = 1That isn't disabling the IFF_TENTATIVE handling, it is dosabling DAD, whichis a different thing entirely.
The end result should be the same.
As I understand it, the reason for the change in 1.261 was to prevent sending from invalid addresses (which is a good thing) - but tentative addresses are not invalid, they just have not been proved valid yet, which is a different thing entirely. 99.9% (or more) of all tentative addresses are valid, and will remain valid, and there's no good reason not to send from them (what's more, it is require that we do so in the case that the same address is being claimed by 2 nodes at the same time - both are performing DAD together, inorder for DAD to work properly - the ARP/ND requests must be answered.)I think I would drop the assumption that tentative addresses are invalid, and just allow sending from them. But if that isn't done, then UDP should be treated the same as TCP, and packets just "lost" rather than returninga transmit error.
When I first proposed it offlist, we thought the current implementation was the correct thing.
Here is a patch to just do as you suggest. http://www.netbsd.org/~roy/ip_output_tentative.patch Can the OP test it and see if NFS booting then works? Roy