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.