diff options
Diffstat (limited to 'src/announce.c')
-rw-r--r-- | src/announce.c | 48 |
1 files changed, 24 insertions, 24 deletions
diff --git a/src/announce.c b/src/announce.c index 4d55f42..9deee18 100644 --- a/src/announce.c +++ b/src/announce.c @@ -30,7 +30,7 @@ #include <stdlib.h> -gp_babel_announce_t* gp_babel_announce_new(gmrf_t *gmrf, gmrf_context_t *ctx) { +gp_babel_announce_t* gp_babel_announce_new(gmrf_context_t *ctx) { gp_babel_announce_t *a = calloc(1, sizeof(gp_babel_announce_t)); a->metric.metric = a->feasibility_distance.metric = a->last_metric = GP_BABEL_INFINITY; @@ -41,7 +41,7 @@ gp_babel_announce_t* gp_babel_announce_new(gmrf_t *gmrf, gmrf_context_t *ctx) { return a; } -gp_babel_announce_t* gp_babel_announce_find(gmrf_t *gmrf, gmrf_context_t *ctx, const gp_babel_node_id_t *node, uint16_t type, uint16_t key) { +gp_babel_announce_t* gp_babel_announce_find(gmrf_context_t *ctx, const gp_babel_node_id_t *node, uint16_t type, uint16_t key) { gp_babel_announce_t *announce; for (announce = ctx->announces; announce; announce = announce->next) { if (gp_babel_node_id_equal(&announce->node, node) @@ -53,11 +53,11 @@ gp_babel_announce_t* gp_babel_announce_find(gmrf_t *gmrf, gmrf_context_t *ctx, c return NULL; } -gp_babel_announce_t* gp_babel_announce_get(gmrf_t *gmrf, gmrf_context_t *ctx, const gp_babel_node_id_t *node, uint16_t type, uint16_t key) { - gp_babel_announce_t *announce = gp_babel_announce_find(gmrf, ctx, node, type, key); +gp_babel_announce_t* gp_babel_announce_get(gmrf_context_t *ctx, const gp_babel_node_id_t *node, uint16_t type, uint16_t key) { + gp_babel_announce_t *announce = gp_babel_announce_find(ctx, node, type, key); if (!announce) { - announce = gp_babel_announce_new(gmrf, ctx); + announce = gp_babel_announce_new(ctx); announce->node = *node; announce->type = type; announce->key = key; @@ -66,7 +66,7 @@ gp_babel_announce_t* gp_babel_announce_get(gmrf_t *gmrf, gmrf_context_t *ctx, co return announce; } -void gp_babel_announce_free(gmrf_t *gmrf, gmrf_context_t *ctx, gp_babel_announce_t *announce) { +void gp_babel_announce_free(gmrf_context_t *ctx, gp_babel_announce_t *announce) { free(announce); } @@ -92,7 +92,7 @@ gp_babel_nexthop_t* gp_babel_announce_nexthop_new(gp_babel_announce_t *announce, return nexthop; } -static void maintain_nexthops(gmrf_t *gmrf, gmrf_context_t *ctx, gp_babel_announce_t *announce) { +static void maintain_nexthops(gmrf_context_t *ctx, gp_babel_announce_t *announce) { gp_babel_nexthop_t **cur, **next; for (cur = &announce->nexthops; *cur; cur = next) { gp_babel_nexthop_t *nexthop = *cur; @@ -104,14 +104,14 @@ static void maintain_nexthops(gmrf_t *gmrf, gmrf_context_t *ctx, gp_babel_announ if (!nexthop->neigh->iface) { if (nexthop->metric_seqno.metric != GP_BABEL_INFINITY) { nexthop->metric_seqno.metric = GP_BABEL_INFINITY; - nexthop->last_update = gmrf_now(gmrf); + nexthop->last_update = gmrf_now(ctx->gmrf); nexthop->last_update += GP_BABEL_UPDATE_TIMEOUT(nexthop->interval)*10; } continue; } - if (gmrf_now(gmrf) > nexthop->last_update+GP_BABEL_UPDATE_TIMEOUT(nexthop->interval)*10) { + if (gmrf_now(ctx->gmrf) > nexthop->last_update+GP_BABEL_UPDATE_TIMEOUT(nexthop->interval)*10) { if (nexthop->metric_seqno.metric == GP_BABEL_INFINITY) { *cur = *next; next = cur; @@ -128,17 +128,17 @@ static void maintain_nexthops(gmrf_t *gmrf, gmrf_context_t *ctx, gp_babel_announ nexthop->last_update += GP_BABEL_UPDATE_TIMEOUT(nexthop->interval)*10; } } - else if (gmrf_now(gmrf) > nexthop->last_update+GP_BABEL_UPDATE_REQUEST_TIMEOUT(nexthop->interval)*10 && announce->selected == nexthop) { + else if (gmrf_now(ctx->gmrf) > nexthop->last_update+GP_BABEL_UPDATE_REQUEST_TIMEOUT(nexthop->interval)*10 && announce->selected == nexthop) { if (!nexthop->requested_update) { - gmrf_logf(gmrf, LOG_INFO, "announce about to expire, requesting update"); - gp_babel_send_announce_request(gmrf, ctx, NULL, nexthop->neigh, &announce->node, announce->type, announce->key, false); + gmrf_logf(ctx->gmrf, LOG_INFO, "announce about to expire, requesting update"); + gp_babel_send_announce_request(ctx, NULL, nexthop->neigh, &announce->node, announce->type, announce->key, false); nexthop->requested_update = true; } } } } -static gp_babel_nexthop_t* select_nexthop(gmrf_t *gmrf, const gp_babel_announce_t *announce) { +static gp_babel_nexthop_t* select_nexthop(gmrf_context_t *ctx, const gp_babel_announce_t *announce) { uint16_t ret_metric = GP_BABEL_INFINITY; gp_babel_nexthop_t *ret = NULL; @@ -150,7 +150,7 @@ static gp_babel_nexthop_t* select_nexthop(gmrf_t *gmrf, const gp_babel_announce_ if (!gp_babel_is_feasible(announce, nexthop->metric_seqno)) continue; - uint32_t metric = nexthop->metric_seqno.metric + gp_babel_neigh_get_cost(gmrf, nexthop->neigh); + uint32_t metric = nexthop->metric_seqno.metric + gp_babel_neigh_get_cost(ctx, nexthop->neigh); if (metric < ret_metric) { ret = nexthop; @@ -161,9 +161,9 @@ static gp_babel_nexthop_t* select_nexthop(gmrf_t *gmrf, const gp_babel_announce_ return ret; } -gp_babel_metric_seqno_t get_metric(gmrf_t *gmrf, const gp_babel_announce_t *announce) { +gp_babel_metric_seqno_t get_metric(gmrf_context_t *ctx, const gp_babel_announce_t *announce) { if (announce->selected) { - uint32_t metric = announce->selected->metric_seqno.metric + gp_babel_neigh_get_cost(gmrf, announce->selected->neigh); + uint32_t metric = announce->selected->metric_seqno.metric + gp_babel_neigh_get_cost(ctx, announce->selected->neigh); if (metric < GP_BABEL_INFINITY) return (gp_babel_metric_seqno_t){metric, announce->selected->metric_seqno.seqno}; @@ -172,14 +172,14 @@ gp_babel_metric_seqno_t get_metric(gmrf_t *gmrf, const gp_babel_announce_t *anno return (gp_babel_metric_seqno_t){GP_BABEL_INFINITY, 0}; } -void gp_babel_announce_update(gmrf_t *gmrf, gmrf_context_t *ctx, gp_babel_announce_t *announce) { - maintain_nexthops(gmrf, ctx, announce); +void gp_babel_announce_update(gmrf_context_t *ctx, gp_babel_announce_t *announce) { + maintain_nexthops(ctx, announce); - announce->selected = select_nexthop(gmrf, announce); - announce->metric = get_metric(gmrf, announce); + announce->selected = select_nexthop(ctx, announce); + announce->metric = get_metric(ctx, announce); if (!announce->selected) - gp_babel_send_seqno_request_for(gmrf, ctx, NULL, announce); + gp_babel_send_seqno_request_for(ctx, NULL, announce); /* triggered updates */ /*int diff = announce->metric.metric - announce->last_metric; @@ -191,13 +191,13 @@ void gp_babel_announce_update(gmrf_t *gmrf, gmrf_context_t *ctx, gp_babel_announ } */ } -void gp_babel_announce_update_nexthop(gmrf_t *gmrf, gmrf_context_t *ctx, gp_babel_announce_t *announce, gp_babel_nexthop_t *nexthop, gp_babel_metric_seqno_t ms, uint16_t interval) { +void gp_babel_announce_update_nexthop(gmrf_context_t *ctx, gp_babel_announce_t *announce, gp_babel_nexthop_t *nexthop, gp_babel_metric_seqno_t ms, uint16_t interval) { nexthop->metric_seqno = ms; nexthop->interval = interval; nexthop->requested_update = false; if (ms.metric != GP_BABEL_INFINITY) - nexthop->last_update = gmrf_now(gmrf); + nexthop->last_update = gmrf_now(ctx->gmrf); - gp_babel_announce_update(gmrf, ctx, announce); + gp_babel_announce_update(ctx, announce); } |