/*
net.c -- most of the network code
- Copyright (C) 1998-2005 Ivo Timmermans,
- 2000-2013 Guus Sliepen <guus@tinc-vpn.org>
- 2006 Scott Lamb <slamb@slamb.org>
- 2011 Loïc Grenié <loic.grenie@gmail.com>
+ Copyright (C) 2014 Guus Sliepen <guus@meshlink.io>
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
logger(DEBUG_SCARY_THINGS, LOG_DEBUG, "Purging node %s (%s)", n->name, n->hostname);
for splay_each(edge_t, e, n->edge_tree) {
- if(!tunnelserver)
- send_del_edge(everyone, e);
+ send_del_edge(everyone, e);
edge_del(e);
}
}
c->node->connection = NULL;
if(c->edge) {
- if(report && !tunnelserver)
+ if(report)
send_del_edge(everyone, c->edge);
edge_del(c->edge);
edge_t *e;
e = lookup_edge(c->node, myself);
if(e) {
- if(!tunnelserver)
- send_del_edge(everyone, e);
+ send_del_edge(everyone, e);
edge_del(e);
}
}
}
}
-#ifndef HAVE_MINGW
-static void sigterm_handler(void *data) {
- logger(DEBUG_ALWAYS, LOG_NOTICE, "Got %s signal", strsignal(((signal_t *)data)->signum));
- event_exit();
-}
-
-static void sighup_handler(void *data) {
- logger(DEBUG_ALWAYS, LOG_NOTICE, "Got %s signal", strsignal(((signal_t *)data)->signum));
- if(reload_configuration())
- exit(1);
-}
-
-static void sigalrm_handler(void *data) {
- logger(DEBUG_ALWAYS, LOG_NOTICE, "Got %s signal", strsignal(((signal_t *)data)->signum));
- retry();
-}
-#endif
-
int reload_configuration(void) {
char *fname = NULL;
return EINVAL;
}
- read_config_options(config_tree, NULL);
-
xasprintf(&fname, "%s" SLASH "hosts" SLASH "%s", confbase, myself->name);
read_config_file(config_tree, fname);
free(fname);
timeout_add(&pingtimer, timeout_handler, &pingtimer, &(struct timeval){pingtimeout, rand() % 100000});
timeout_add(&periodictimer, periodic_handler, &periodictimer, &(struct timeval){pingtimeout, rand() % 100000});
-#ifndef HAVE_MINGW
- signal_t sighup = {0};
- signal_t sigterm = {0};
- signal_t sigquit = {0};
- signal_t sigint = {0};
- signal_t sigalrm = {0};
-
- signal_add(&sighup, sighup_handler, &sighup, SIGHUP);
- signal_add(&sigterm, sigterm_handler, &sigterm, SIGTERM);
- signal_add(&sigquit, sigterm_handler, &sigquit, SIGQUIT);
- signal_add(&sigint, sigterm_handler, &sigint, SIGINT);
- signal_add(&sigalrm, sigalrm_handler, &sigalrm, SIGALRM);
-#endif
-
if(!event_loop()) {
logger(DEBUG_ALWAYS, LOG_ERR, "Error while waiting for input: %s", strerror(errno));
return 1;
}
-#ifndef HAVE_MINGW
- signal_del(&sighup);
- signal_del(&sigterm);
- signal_del(&sigquit);
- signal_del(&sigint);
- signal_del(&sigalrm);
-#endif
-
timeout_del(&periodictimer);
timeout_del(&pingtimer);