Open rmarioe opened 8 months ago
dhcpcd currently works on a one to one basis and reacts to the first OFFER/ADVERTISE it gets and then discards the others it receives while it's in the next phase.
What is your use case for this?
I want to get configuration data/vendor options of all servers into the hooks environment.
RFC2131 does not mandate this kind of behavior but does allow it:
RFC8415:
Those Advertise messages with the highest server preference value SHOULD be preferred over all other Advertise messages. The client MAY choose a less preferred server if that server has a better set of advertised parameters, such as the available set of IAs, as well as the set of other configuration options advertised.
Within a group of Advertise messages with the same server preference value, a client MAY select those servers whose Advertise messages advertise information of interest to the client.
Having all the info in the environment is enough for me.
If we would go the way of choosing the server in might be trickier.
We could restart the server until the client chooses the correct one in the existing algorithm? It is first come - first serve currently?
Another way could be for the client to wait for user input on what to choose if the client registered for this hook.
I added some extra "run script" calls that trigger hooks whenever we receive or send a message such as DISCOVER, OFFER, etc. I use it to trigger some external state monitoring that is not part of the DHCP standard.
I don't currently have it wrapped up in any cli or conf optioning, but if I clean it up I could post a pull request.
fdeb8c7945211d424c3a30912004eeb56e009865 changes the behavior to be more RFC conformant. We now discard ADVERTs of a lower priority than what we have received until IRT has elapsed. If we get a priority of 255 then we use that right away. If we get a REPLY with rapid commit and we want a rapid commit we use that right away.
d4d3b115c1ec4755edb284eef5d31d28ae2c1846 exposes the preference option for hooks.
I would like to have visibility of all the DHCP servers that offered/advertised a lease in the network to the client through my user defined hook script. It could be handled by adding a reason to run the hooks script (i.e. OFFER/ADVERTISE). Before sending out a PR I would like to know if something like this could be an acceptable enhancement to dhcpcd?