diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2012-10-21 00:13:59 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2012-10-21 00:13:59 +0200 |
commit | a4986182dcad508c17a6eb8fd3e556f18cfaa349 (patch) | |
tree | a22547d59353d36edfc4e473c4032ed9f11b3603 /ffd/announce.c | |
parent | c3a0c36d3c935097ccc72d92581f0f2b7bc794a9 (diff) | |
download | ffd-a4986182dcad508c17a6eb8fd3e556f18cfaa349.tar ffd-a4986182dcad508c17a6eb8fd3e556f18cfaa349.zip |
Implement retransmits of important updates
Diffstat (limited to 'ffd/announce.c')
-rw-r--r-- | ffd/announce.c | 14 |
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); } |