From: Roy Marples Date: Thu, 26 Feb 2026 17:58:42 +0000 (+0000) Subject: ipv6nd: empty IPV6RA_EXPIRE eloop queue when dropping X-Git-Tag: v10.3.1~6 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=2a3fb4ef41cb5de5acfecfa0c3040d0631462ba9;p=thirdparty%2Fdhcpcd.git ipv6nd: empty IPV6RA_EXPIRE eloop queue when dropping Fixes #584 Helps #566 --- diff --git a/src/ipv6nd.c b/src/ipv6nd.c index c8c18fc4..ccf71241 100644 --- a/src/ipv6nd.c +++ b/src/ipv6nd.c @@ -681,11 +681,14 @@ ipv6nd_iffindprefix(struct interface *ifp, static void ipv6nd_removefreedrop_ra(struct ra *rap, int remove_ra, int drop_ra) { + struct dhcpcd_ctx *ctx = rap->iface->ctx; - eloop_timeout_delete(rap->iface->ctx->eloop, NULL, rap->iface); - eloop_timeout_delete(rap->iface->ctx->eloop, NULL, rap); + eloop_q_timeout_delete(ctx->eloop, ELOOP_IPV6RA_EXPIRE, NULL, + rap->iface); + eloop_timeout_delete(ctx->eloop, NULL, rap->iface); + eloop_timeout_delete(ctx->eloop, NULL, rap); if (remove_ra) - TAILQ_REMOVE(rap->iface->ctx->ra_routers, rap, next); + TAILQ_REMOVE(ctx->ra_routers, rap, next); ipv6_freedrop_addrs(&rap->addrs, drop_ra, 0, NULL); routeinfohead_free(&rap->rinfos); free(rap->data);