]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
ipv6nd: empty IPV6RA_EXPIRE eloop queue when dropping
authorRoy Marples <roy@marples.name>
Thu, 26 Feb 2026 17:58:42 +0000 (17:58 +0000)
committerGitHub <noreply@github.com>
Thu, 26 Feb 2026 17:58:42 +0000 (17:58 +0000)
Fixes #584

Helps #566

src/ipv6nd.c

index c8c18fc4fccdf7faf2c855b1a09ee2a1bd3b2aa1..ccf712410679615718cf03feb63f7ba3b5d54e02 100644 (file)
@@ -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);