eloop_timeout_delete(astate->iface->ctx->eloop, NULL, astate);
state = D_STATE(astate->iface);
TAILQ_REMOVE(&state->arp_states, astate, next);
- if (state->arp_ipv4ll == astate)
+ if (state->arp_ipv4ll == astate) {
+ ipv4ll_stop(astate->iface);
state->arp_ipv4ll = NULL;
+ }
free(astate);
}
}
astate->addr.s_addr = ipv4ll_pick_addr(astate);
arp_probe(astate);
}
+
+void
+ipv4ll_stop(struct interface *ifp)
+{
+ struct dhcp_state *state = D_STATE(ifp);
+
+ eloop_timeout_delete(ifp->ctx->eloop, NULL, state->arp_ipv4ll);
+}
void ipv4ll_start(void *);
void ipv4ll_claimed(void *);
void ipv4ll_handle_failure(void *);
+void ipv4ll_stop(struct interface *);
#endif