ipv6nd: empty IPV6RA_EXPIRE eloop queue when dropping

Fixes #566
This commit is contained in:
Roy Marples 2025-12-11 21:36:55 +00:00
parent 9c48f4c7dd
commit e38095369c

View 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);