X-Git-Url: https://www.tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fgraph.c;h=2fc3b744c4e13fde81ed1d583f6d3b70df304628;hp=a3fe0ce552134a8fa5e9baaabd8f688b79fb3048;hb=2077451e07f93edc520cf5bc31815624a2b03fdd;hpb=40b1692940a8d588c08fb6b8f24ded7c33b041b1 diff --git a/src/graph.c b/src/graph.c index a3fe0ce5..2fc3b744 100644 --- a/src/graph.c +++ b/src/graph.c @@ -1,7 +1,7 @@ /* graph.c -- graph algorithms - Copyright (C) 2001-2004 Guus Sliepen , - 2001-2004 Ivo Timmermans + Copyright (C) 2001-2006 Guus Sliepen , + 2001-2005 Ivo Timmermans This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -226,7 +226,9 @@ void sssp_bfs(void) free(e->to->hostname); e->to->hostname = sockaddr2hostname(&e->to->address); - avl_insert_node(node_udp_tree, node); + + if(node) + avl_insert_node(node_udp_tree, node); if(e->to->options & OPTION_PMTU_DISCOVERY) { e->to->mtuprobes = 0; @@ -258,9 +260,11 @@ void sssp_bfs(void) if(n->status.reachable) { ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Node %s (%s) became reachable"), n->name, n->hostname); + avl_insert(node_udp_tree, n); } else { ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Node %s (%s) became unreachable"), n->name, n->hostname); + avl_delete(node_udp_tree, n); } n->status.validkey = false; @@ -279,6 +283,8 @@ void sssp_bfs(void) asprintf(&envp[5], "REMOTEPORT=%s", port); envp[6] = NULL; + execute_script(n->status.reachable ? "host-up" : "host-down", envp); + asprintf(&name, n->status.reachable ? "hosts/%s-up" : "hosts/%s-down", n->name);