summaryrefslogtreecommitdiffstats
path: root/src/neigh.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/neigh.c')
-rw-r--r--src/neigh.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/neigh.c b/src/neigh.c
index b97540d..86f8189 100644
--- a/src/neigh.c
+++ b/src/neigh.c
@@ -107,5 +107,18 @@ uint16_t gp_babel_neigh_get_cost(gmrf_context_t *ctx, const gp_babel_neigh_t *ne
}
void gp_babel_neigh_reset(gmrf_context_t *ctx, gmrf_iface_state_t *iface, gp_babel_neigh_t *neigh) {
+ gmrf_logf(ctx->gmrf, LOG_DEBUG, "resetting neighbour %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x[%s].",
+ neigh->addr.d[0], neigh->addr.d[1], neigh->addr.d[2], neigh->addr.d[3],
+ neigh->addr.d[4], neigh->addr.d[5], neigh->addr.d[6], neigh->addr.d[7],
+ gmrf_iface_get_name(ctx->gmrf, neigh->iface->gmrf_iface));
+
+ gp_babel_route_t *route;
+ for (route = ctx->routes; route; route = route->next) {
+ gp_babel_nexthop_t *nexthop = gp_babel_route_nexthop_find(route, neigh);
+
+ if (nexthop)
+ gp_babel_route_nexthop_delete(ctx, route, nexthop);
+ }
+
gp_babel_send_route_request(ctx, iface, neigh, NULL);
}