From 8c439585116b30cbbdf405d2001e21bc4998c154 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sun, 4 Aug 2013 01:20:18 +0200 Subject: Delete nexthop entries when a neighbour is reset --- src/neigh.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/neigh.c') 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); } -- cgit v1.2.3