diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2012-10-06 02:06:48 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2012-10-06 02:06:48 +0200 |
commit | cebdfe45e965dae68cd67e9f43f6fc1d8b271765 (patch) | |
tree | 270b1bd1b48dda9b7bb58c7640db46769ab82900 /ffd/announce.c | |
parent | 39df74a42847071837dc94237c025ce94451819b (diff) | |
download | ffd-cebdfe45e965dae68cd67e9f43f6fc1d8b271765.tar ffd-cebdfe45e965dae68cd67e9f43f6fc1d8b271765.zip |
Improve update handling
Diffstat (limited to 'ffd/announce.c')
-rw-r--r-- | ffd/announce.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/ffd/announce.c b/ffd/announce.c index 5b31e91..e1f7ae0 100644 --- a/ffd/announce.c +++ b/ffd/announce.c @@ -73,10 +73,20 @@ ffd_metric_seqno_t ffd_announce_get_metric(const ffd_announce_t *announce) { return (ffd_metric_seqno_t){0xffff, 0}; } -void ffd_announce_update_nexthop(ffd_announce_t *announce) { +static inline void update_selected(ffd_announce_t *announce) { announce->selected = select_nexthop(announce); } +void ffd_announce_update(ffd_announce_t *announce, ffd_nexthop_t *nexthop, ffd_metric_seqno_t ms, uint16_t interval) { + nexthop->metric_seqno = ms; + nexthop->interval = interval; + + if (ms.metric != 0xffff) + nexthop->last_update = now; + + update_selected(announce); +} + ffd_announce_t* ffd_announce_new(void) { ffd_announce_t *a = calloc(1, sizeof(ffd_announce_t)); |