summaryrefslogtreecommitdiffstats
path: root/src/announce.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/announce.c')
-rw-r--r--src/announce.c48
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);
}