This allows DHCPv6 and IPv6RS to remove DAD callbacks from the IPv6NS queue.
#include <syslog.h>
#include <unistd.h>
-#define ELOOP_QUEUE 2
+#define ELOOP_QUEUE 3
#include "config.h"
#include "common.h"
while ((ap = TAILQ_FIRST(&state->addrs))) {
TAILQ_REMOVE(&state->addrs, ap, next);
if (ap->dadcallback)
- eloop_timeout_delete(NULL, ap->dadcallback);
+ eloop_q_timeout_delete(0, NULL, ap->dadcallback);
/* Only drop the address if no other RAs have assigned it.
* This is safe because the RA is removed from the list
* before we are called. */
void (*f)(void *);
TAILQ_FOREACH_SAFE(t, &timeouts, next, tt) {
- if (t->queue == queue && t->arg == arg &&
+ if ((queue == 0 || t->queue == queue) && t->arg == arg &&
t->callback != callback)
{
va_copy(va, v);
#include <time.h>
#ifndef ELOOP_QUEUE
- #define ELOOP_QUEUE 0
+ #define ELOOP_QUEUE 1
#endif
#define eloop_timeout_add_tv(a, b, c) \
# include <linux/ipv6.h>
#endif
-#define ELOOP_QUEUE 1
+#define ELOOP_QUEUE 2
#include "common.h"
#include "dhcpcd.h"
#include "dhcp6.h"
#include <syslog.h>
#include <unistd.h>
-#define ELOOP_QUEUE 1
+#define ELOOP_QUEUE 2
#include "common.h"
#include "dhcpcd.h"
#include "dhcp6.h"
while ((ap = TAILQ_FIRST(&rap->addrs))) {
TAILQ_REMOVE(&rap->addrs, ap, next);
if (ap->dadcallback)
- eloop_timeout_delete(NULL, ap->dadcallback);
+ eloop_q_timeout_delete(0, NULL, ap->dadcallback);
/* Only drop the address if no other RAs have assigned it.
* This is safe because the RA is removed from the list
* before we are called. */