Great! I will run some tests with the diff.
One thing I noticed:
> @@ -1982,11 +1941,8 @@ gen_address_proposal(struct slaacd_iface *iface,
> struct radv *ra, struct
>
> gen_addr(iface, prefix, addr_proposal, privacy);
>
> - tv.tv_sec = 0;
> - tv.tv_usec = 0;
> - evtimer_add(&addr_proposal->timer, &tv);
> -
> LIST_INSERT_HEAD(&iface->addr_proposals, addr_proposal, entries);
> + configure_address(addr_proposal);
>
> hbuf = sin6_to_str(&addr_proposal->addr);
> log_debug("%s: iface %d: %s: %lld s", __func__,
> @@ -2047,11 +2003,8 @@ gen_dfr_proposal(struct slaacd_iface *iface, struct
> radv *ra)
> dfr_proposal->router_lifetime = ra->router_lifetime;
> dfr_proposal->rpref = ra->rpref;
>
> - tv.tv_sec = 0;
> - tv.tv_usec = 0;
> - evtimer_add(&dfr_proposal->timer, &tv);
> -
> LIST_INSERT_HEAD(&iface->dfr_proposals, dfr_proposal, entries);
> + configure_dfr(dfr_proposal);
>
> hbuf = sin6_to_str(&dfr_proposal->addr);
> log_debug("%s: iface %d: %s: %lld s", __func__,
I think the tv variable should be deleted in both gen_addr_proposal
and gen_dfr_rpoposal. Right now it is unitialized and (only) used
in log_debug.