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).