projects
/
tinc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
#define s6_addr32, needed for FreeBSD.
[tinc]
/
src
/
graph.c
diff --git
a/src/graph.c
b/src/graph.c
index
0847b28
..
dd080c0
100644
(file)
--- a/
src/graph.c
+++ b/
src/graph.c
@@
-17,7
+17,7
@@
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- $Id: graph.c,v 1.1.2.
6 2002/02/10 21:57:54
guus Exp $
+ $Id: graph.c,v 1.1.2.
9 2002/03/12 16:30:15
guus Exp $
*/
/* We need to generate two trees from the graph:
*/
/* We need to generate two trees from the graph:
@@
-77,11
+77,22
@@
void mst_kruskal(void)
int safe_edges = 0;
int skipped;
int safe_edges = 0;
int skipped;
+ /* Clear MST status on connections */
+
+ for(node = connection_tree->head; node; node = node->next)
+ {
+ c = (connection_t *)node->data;
+ c->status.mst = 0;
+ }
+
/* Do we have something to do at all? */
if(!edge_weight_tree->head)
return;
/* Do we have something to do at all? */
if(!edge_weight_tree->head)
return;
+ if(debug_lvl >= DEBUG_SCARY_THINGS)
+ syslog(LOG_DEBUG, "Running Kruskal's algorithm:");
+
/* Clear visited status on nodes */
for(node = node_tree->head; node; node = node->next)
/* Clear visited status on nodes */
for(node = node_tree->head; node; node = node->next)
@@
-95,14
+106,6
@@
void mst_kruskal(void)
((edge_t *)edge_weight_tree->head->data)->from.node->status.visited = 1;
((edge_t *)edge_weight_tree->head->data)->from.node->status.visited = 1;
- /* Clear MST status on connections */
-
- for(node = connection_tree->head; node; node = node->next)
- {
- c = (connection_t *)node->data;
- c->status.mst = 0;
- }
-
/* Add safe edges */
for(skipped = 0, node = edge_weight_tree->head; node; node = next)
/* Add safe edges */
for(skipped = 0, node = edge_weight_tree->head; node; node = next)
@@
-123,12
+126,18
@@
void mst_kruskal(void)
safe_edges++;
safe_edges++;
+ if(debug_lvl >= DEBUG_SCARY_THINGS)
+ syslog(LOG_DEBUG, " Adding edge %s - %s weight %d", e->from.node->name, e->to.node->name, e->weight);
+
if(skipped)
{
next = edge_weight_tree->head;
continue;
}
}
if(skipped)
{
next = edge_weight_tree->head;
continue;
}
}
+
+ if(debug_lvl >= DEBUG_SCARY_THINGS)
+ syslog(LOG_DEBUG, "Done, counted %d nodes and %d safe edges.", nodes, safe_edges);
}
/* Implementation of a simple breadth-first search algorithm.
}
/* Implementation of a simple breadth-first search algorithm.
@@
-186,17
+195,15
@@
void sssp_bfs(void)
to_hc.node->nexthop = (n->nexthop == myself) ? to_hc.node : n->nexthop;
to_hc.node->via = (e->options & OPTION_INDIRECT || n->via != n) ? n->via : to_hc.node;
to_hc.node->options = e->options;
to_hc.node->nexthop = (n->nexthop == myself) ? to_hc.node : n->nexthop;
to_hc.node->via = (e->options & OPTION_INDIRECT || n->via != n) ? n->via : to_hc.node;
to_hc.node->options = e->options;
- if(
to_hc.node->address != to_hc.address || to_hc.node->port != to_hc.port
)
+ if(
sockaddrcmp(&to_hc.node->address, &to_hc.udpaddress)
)
{
node = avl_unlink(node_udp_tree, to_hc.node);
{
node = avl_unlink(node_udp_tree, to_hc.node);
- to_hc.node->address = to_hc.address;
- to_hc.node->port = to_hc.port;
+ to_hc.node->address = to_hc.udpaddress;
if(to_hc.node->hostname)
free(to_hc.node->hostname);
if(to_hc.node->hostname)
free(to_hc.node->hostname);
- to_hc.node->hostname =
hostlookup(htonl(to_hc.address)
);
+ to_hc.node->hostname =
sockaddr2hostname(&to_hc.udpaddress
);
avl_insert_node(node_udp_tree, node);
}
avl_insert_node(node_udp_tree, node);
}
- to_hc.node->port = to_hc.port;
node = avl_alloc_node();
node->data = to_hc.node;
avl_insert_before(todo_tree, from, node);
node = avl_alloc_node();
node->data = to_hc.node;
avl_insert_before(todo_tree, from, node);