diff options
Diffstat (limited to 'ffd/announce.c')
-rw-r--r-- | ffd/announce.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/ffd/announce.c b/ffd/announce.c index 6b30ec6..62e876a 100644 --- a/ffd/announce.c +++ b/ffd/announce.c @@ -45,7 +45,7 @@ static void maintain_nexthops(ffd_announce_t *announce) { if (announce->selected == nexthop) announce->selected = NULL; - nexthop->neigh->nexthop_refs--; + ffd_neigh_unref(nexthop->neigh); free(nexthop); } @@ -54,6 +54,11 @@ static void maintain_nexthops(ffd_announce_t *announce) { add_interval(&nexthop->last_update, FFD_UPDATE_TIMEOUT(nexthop->interval)); } } + else if (!nexthop->neigh->iface && nexthop->metric_seqno.metric != 0xffff) { + nexthop->metric_seqno.metric = 0xffff; + nexthop->last_update = now; + add_interval(&nexthop->last_update, FFD_UPDATE_TIMEOUT(nexthop->interval)); + } } } |