]> git.meshlink.io Git - meshlink/blobdiff - src/graph.c
Move connection_list to mesh->connections.
[meshlink] / src / graph.c
index 233cf5442a4e000e612a8a64f6b384de65ffeaf4..60d3b02ff3ceb6d6e0625638d4b905e990ac5db8 100644 (file)
@@ -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"
 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;