tech-net archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]


So dhcpcd currently parses NA messages to check if the node claims to be a router or not because not every router will set it's lifetime to zero when it ceases to be a router. This is expensive. We can do better. RFC 4861 6.2.5 only lists the requirement as should, not must so ideally dhcpcd should still be able to function.

I just added a change to emit RTM_CHANGE without a lladdr for the gateway to indicate that this happened. The current flow is this:

RTM_ADD no lladdr        (ln entry created, dhcpcd ignores this)
RTM_CHANGE with lladdr   (node reachable)
RTM_DELETE               (node unreachable)

RTM_CHANGE no lladdr     (node is no longer a router)

But I'm now starting to think this is the wrong thing to do as it's overloading the intent - no lladdr with RTM_CHANGE could just mean it's been cleared by admin - and requries a 2nd message to add the current lladdr back for consistency. Would it be better to set RTF_BLACKHOLE in one message to indicate no router, add a new RTF_NOTROUTER flag, or something else?

Not sure I want to go down the RTM_NEWNEIGH route Linux has as that just adds two flags with a new struct - is it a router and is it reachable. We already have reachability checks, so it's litterally, is the NA a router change or not.


Home | Main Index | Thread Index | Old Index