#include "system.h"
#include "utils.h"
-#include "splay_tree.h"
#include "conf.h"
#include "connection.h"
#include "device.h"
and close the connection.
*/
static void timeout_handler(int fd, short events, void *event) {
- splay_node_t *node, *next;
- connection_t *c;
time_t now = time(NULL);
- for(node = connection_tree->head; node; node = next) {
+ for(list_node_t *node = connection_list->head, *next; node; node = next) {
next = node->next;
- c = node->data;
+ connection_t *c = node->data;
if(c->status.control)
continue;
}
int reload_configuration(void) {
- connection_t *c;
- splay_node_t *node, *next;
char *fname;
- struct stat s;
/* Reread our own configuration file */
/* If StrictSubnet is set, expire deleted Subnets and read new ones in */
if(strictsubnets) {
- subnet_t *subnet;
-
- for(node = subnet_tree->head; node; node = node->next) {
- subnet = node->data;
+ for(splay_node_t *node = subnet_tree->head; node; node = node->next) {
+ subnet_t *subnet = node->data;
subnet->expires = 1;
}
load_all_subnets();
- for(node = subnet_tree->head; node; node = next) {
+ for(splay_node_t *node = subnet_tree->head, *next; node; node = next) {
next = node->next;
- subnet = node->data;
+ subnet_t *subnet = node->data;
if(subnet->expires == 1) {
send_del_subnet(everyone, subnet);
if(subnet->owner->status.reachable)
}
}
} else { /* Only read our own subnets back in */
- subnet_t *subnet, *s2;
-
- for(node = myself->subnet_tree->head; node; node = node->next) {
+ for(splay_node_t *node = myself->subnet_tree->head; node; node = node->next) {
subnet_t *subnet = node->data;
if(!subnet->expires)
subnet->expires = 1;
config_t *cfg = lookup_config(config_tree, "Subnet");
while(cfg) {
+ subnet_t *subnet, *s2;
+
if(!get_config_subnet(cfg, &subnet))
continue;
cfg = lookup_config_next(config_tree, cfg);
}
- for(node = myself->subnet_tree->head; node; node = next) {
+ for(splay_node_t *node = myself->subnet_tree->head, *next; node; node = next) {
next = node->next;
subnet_t *subnet = node->data;
if(subnet->expires == 1) {
/* Close connections to hosts that have a changed or deleted host config file */
- for(node = connection_tree->head; node; node = next) {
- c = node->data;
+ for(list_node_t *node = connection_list->head, *next; node; node = next) {
+ connection_t *c = node->data;
next = node->next;
if(c->status.control)
continue;
xasprintf(&fname, "%s" SLASH "hosts" SLASH "%s", confbase, c->name);
+ struct stat s;
if(stat(fname, &s) || s.st_mtime > last_config_check) {
logger(DEBUG_CONNECTIONS, LOG_INFO, "Host config file of %s has been changed", c->name);
terminate_connection(c, c->status.active);
}
void retry(void) {
- connection_t *c;
- splay_node_t *node, *next;
-
- for(node = connection_tree->head; node; node = next) {
+ for(list_node_t *node = connection_list->head, *next; node; node = next) {
next = node->next;
- c = node->data;
+ connection_t *c = node->data;
if(c->outgoing && !c->node) {
if(timeout_initialized(&c->outgoing->ev))