On Mon, Nov 30, 2020 at 05:46:57PM +0100, Florian Obser wrote: > On Sun, Nov 29, 2020 at 12:20:31PM +0100, Florian Obser wrote: > > > > Let rad(8) handle all rdomains in a single daemon, similar to previous > > work in slaacd. > > > > Suggested / requested by tb who showed me previous work by reyk which > > unfortunately predated my work in slaacd and followed a different > > pattern. > > > > There has already been a fair bit of testing and input from tb on > > previous iterations. > > > > More tests, OKs? > > > > Updated diff after some testing by tb@ > > - our AF_ROUTE socket needs a RTABLE_ANY ROUTE_TABLEFILTER otherwise > we don't see link-local addresses arriving in rdomains != 0. > - check if the arriving link-local address is tentative (or a > douplicate) and ignore it because we can't use it and sendmsg failes. > Monitor RTM_CHGADDRATTR messages to see when the link-local address > becomes valid
Thank you so much for this! I think I have done all the testing I can for my use case and this now looks all good. I think this covers most, if not all, code paths added by this diff. I did as thorough a review as I can, being foreign to this part of the tree. ok tb I only have one tiny comment: > +++ frontend.c [...] > @@ -746,15 +743,29 @@ get_link_state(char *if_name) > return ls; > } > > +int > +get_ifrdomain(char *if_name) > +{ > + struct ifreq ifr; > + > + (void) strlcpy(ifr.ifr_name, if_name, sizeof(ifr.ifr_name)); I'm not sure why you explicitly indicate that you don't want to check, while you don't so in interface_has_linklocal_address() (both copy the same name to an array of length IFNAMSIZ).