From 7c85db54212247707cd727583eff57285207cfe7 Mon Sep 17 00:00:00 2001 From: thorkill Date: Mon, 6 Jul 2015 01:49:45 +0200 Subject: [PATCH] Introducing new function for edge weight update --- src/edge.c | 10 ++++++++++ src/edge.h | 1 + 2 files changed, 11 insertions(+) diff --git a/src/edge.c b/src/edge.c index c9252726..00ce6fef 100644 --- a/src/edge.c +++ b/src/edge.c @@ -118,6 +118,16 @@ void edge_del(edge_t *e) { splay_delete(e->from->edge_tree, e); } +bool edge_update_weigth(edge_t *e, int weight) { + splay_node_t *oldnode = splay_unlink(edge_weight_tree, e); + if (!oldnode) + return false; + + /* avg_rtt is in ms */ + e->weight = e->avg_rtt*10; + oldnode->data = e; + splay_insert_node(edge_weight_tree, oldnode); + return true; } edge_t *lookup_edge(node_t *from, node_t *to) { diff --git a/src/edge.h b/src/edge.h index e98ade88..aaf421ef 100644 --- a/src/edge.h +++ b/src/edge.h @@ -51,6 +51,7 @@ extern void free_edge_tree(splay_tree_t *); extern void edge_add(edge_t *); extern void edge_del(edge_t *); extern edge_t *lookup_edge(struct node_t *, struct node_t *); +extern bool edge_update_weigth(edge_t *, int); extern bool dump_edges(struct connection_t *); #endif /* __TINC_EDGE_H__ */