summaryrefslogtreecommitdiffstats
path: root/ffd/announce.c
diff options
context:
space:
mode:
Diffstat (limited to 'ffd/announce.c')
-rw-r--r--ffd/announce.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/ffd/announce.c b/ffd/announce.c
index 00bd78c..2e54725 100644
--- a/ffd/announce.c
+++ b/ffd/announce.c
@@ -123,7 +123,7 @@ static inline void seqno_update(ffd_announce_t *announce) {
next = cur;
fprintf(stderr, "debug: update matches seqno request, forwarding\n");
- ffd_send_update(NULL, req->neigh, announce, false);
+ ffd_update_enqueue(&announce->node, announce->type, announce->key, req->neigh, true);
ffd_neigh_unref(req->neigh);
free(req);
}
@@ -145,7 +145,7 @@ void ffd_announce_update(ffd_announce_t *announce) {
if (((announce->last_metric == 0xffff) != (announce->metric.metric == 0xffff))
|| diff <= -1024 || diff >= 384) {
fprintf(stderr, "info: announce metric has changed significantly, sending updates\n");
- ffd_send_update(NULL, NULL, announce, false);
+ ffd_update_enqueue(&announce->node, announce->type, announce->key, NULL, announce->metric.metric == 0xffff);
}
if (announce->selected)
@@ -269,11 +269,13 @@ bool ffd_announce_seqno_request(ffd_announce_t *announce, ffd_neigh_t *neigh, ui
return false;
}
-void ffd_announce_seqno_request_free_list(ffd_announce_t *announce) {
- ffd_seqno_req_t *req, *next;
- for (req = announce->seqno_req_list; req; req = next) {
- next = req->next;
+void ffd_announce_free(ffd_announce_t *announce) {
+ ffd_seqno_req_t *req, *req_next;
+ for (req = announce->seqno_req_list; req; req = req_next) {
+ req_next = req->next;
ffd_neigh_unref(req->neigh);
free(req);
}
+
+ free(announce);
}