summaryrefslogtreecommitdiffstats
path: root/src/route.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/route.c')
-rw-r--r--src/route.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/route.c b/src/route.c
index ccb2d84..4daea64 100644
--- a/src/route.c
+++ b/src/route.c
@@ -32,14 +32,15 @@
gp_babel_route_t* gp_babel_route_new(gmrf_context_t *ctx) {
- gp_babel_route_t *a = calloc(1, sizeof(gp_babel_route_t));
+ gp_babel_route_t *route = calloc(1, sizeof(gp_babel_route_t));
- a->metric.metric = a->feasibility_distance.metric = a->last_metric = GP_BABEL_INFINITY;
+ route->metric.metric = route->feasibility_distance.metric = route->last_metric = GP_BABEL_INFINITY;
+ route->last_nexthop = gmrf_time_unspec;
- a->next = ctx->routes;
- ctx->routes = a;
+ route->next = ctx->routes;
+ ctx->routes = route;
- return a;
+ return route;
}
gp_babel_route_t* gp_babel_route_find(gmrf_context_t *ctx, const gp_babel_node_id_t *node) {
@@ -93,7 +94,7 @@ static inline bool nexthop_has_expired(gmrf_context_t *ctx, gp_babel_nexthop_t *
return (gp_babel_since(ctx, nexthop->last_update) > GP_BABEL_UPDATE_TIMEOUT(nexthop->interval));
}
-static void nexthop_delete(gmrf_context_t *ctx, gp_babel_route_t *route, gp_babel_nexthop_t *nexthop) {
+void gp_babel_route_nexthop_delete(gmrf_context_t *ctx, gp_babel_route_t *route, gp_babel_nexthop_t *nexthop) {
gp_babel_nexthop_t **nexthopp;
for (nexthopp = &route->nexthops; *nexthopp; nexthopp = &(*nexthopp)->next) {
if (*nexthopp == nexthop)
@@ -117,7 +118,7 @@ static void maintain_nexthop(gmrf_context_t *ctx, gp_babel_route_t *route, gp_ba
return;
if (nexthop_has_expired(ctx, nexthop)) {
- nexthop_delete(ctx, route, nexthop);
+ gp_babel_route_nexthop_delete(ctx, route, nexthop);
return;
}
@@ -194,7 +195,7 @@ void gp_babel_route_update(gmrf_context_t *ctx, gp_babel_route_t *route) {
void gp_babel_route_update_nexthop(gmrf_context_t *ctx, gp_babel_route_t *route, gp_babel_nexthop_t *nexthop, gp_babel_metric_seqno_t ms, uint16_t interval) {
if (ms.metric == GP_BABEL_INFINITY) {
gmrf_logf(ctx->gmrf, LOG_DEBUG, "retract received, deleting nexthop");
- nexthop_delete(ctx, route, nexthop);
+ gp_babel_route_nexthop_delete(ctx, route, nexthop);
gp_babel_route_update(ctx, route);
return;
}