X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Fgraph.c;h=60d3b02ff3ceb6d6e0625638d4b905e990ac5db8;hb=1ab929718ac182ebdf9fc006c2efe74b6d974fb8;hp=233cf5442a4e000e612a8a64f6b384de65ffeaf4;hpb=fb7b6e7a0c966a88a682f656ca1caeb9a0583c5b;p=meshlink diff --git a/src/graph.c b/src/graph.c index 233cf544..60d3b02f 100644 --- a/src/graph.c +++ b/src/graph.c @@ -48,6 +48,7 @@ #include "graph.h" #include "list.h" #include "logger.h" +#include "meshlink_internal.h" #include "netutl.h" #include "node.h" #include "protocol.h" @@ -63,19 +64,19 @@ static void mst_kruskal(void) { /* Clear MST status on connections */ - for list_each(connection_t, c, connection_list) + for list_each(connection_t, c, mesh->connections) c->status.mst = false; logger(DEBUG_SCARY_THINGS, LOG_DEBUG, "Running Kruskal's algorithm:"); /* Clear visited status on nodes */ - for splay_each(node_t, n, node_tree) + for splay_each(node_t, n, mesh->nodes) n->status.visited = false; /* Starting point */ - for splay_each(edge_t, e, edge_weight_tree) { + for splay_each(edge_t, e, mesh->edges) { if(e->from->status.reachable) { e->from->status.visited = true; break; @@ -86,7 +87,7 @@ static void mst_kruskal(void) { bool skipped = false; - for splay_each(edge_t, e, edge_weight_tree) { + for splay_each(edge_t, e, mesh->edges) { if(!e->reverse || (e->from->status.visited == e->to->status.visited)) { skipped = true; continue; @@ -105,7 +106,7 @@ static void mst_kruskal(void) { if(skipped) { skipped = false; - next = edge_weight_tree->head; + next = mesh->edges->head; } } } @@ -119,21 +120,21 @@ static void sssp_bfs(void) { /* Clear visited status on nodes */ - for splay_each(node_t, n, node_tree) { + for splay_each(node_t, n, mesh->nodes) { n->status.visited = false; n->status.indirect = true; n->distance = -1; } - /* Begin with myself */ + /* Begin with mesh->self */ - myself->status.visited = true; - myself->status.indirect = false; - myself->nexthop = myself; - myself->prevedge = NULL; - myself->via = myself; - myself->distance = 0; - list_insert_head(todo_list, myself); + mesh->self->status.visited = true; + mesh->self->status.indirect = false; + mesh->self->nexthop = mesh->self; + mesh->self->prevedge = NULL; + mesh->self->via = mesh->self; + mesh->self->distance = 0; + list_insert_head(todo_list, mesh->self); /* Loop while todo_list is filled */ @@ -173,7 +174,7 @@ static void sssp_bfs(void) { e->to->status.visited = true; e->to->status.indirect = indirect; - e->to->nexthop = (n->nexthop == myself) ? e->to : n->nexthop; + e->to->nexthop = (n->nexthop == mesh->self) ? e->to : n->nexthop; e->to->prevedge = e; e->to->via = indirect ? n->via : e->to; e->to->options = e->options; @@ -195,7 +196,7 @@ static void sssp_bfs(void) { static void check_reachability(void) { /* Check reachability status. */ - for splay_each(node_t, n, node_tree) { + for splay_each(node_t, n, mesh->nodes) { if(n->status.visited != n->status.reachable) { n->status.reachable = !n->status.reachable; n->last_state_change = now.tv_sec;