X-Git-Url: https://tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fconnection.c;h=36c0fdbc58fd76eed0dc010c666561b20651ad9a;hp=0fd9e1699596589317de8cec404e31294041b42f;hb=8c3105283ac53f8cc9cc4dde25957ec1cf6b53a0;hpb=4c85542894f7fca823b119b05e07179deb24229a diff --git a/src/connection.c b/src/connection.c index 0fd9e169..36c0fdbc 100644 --- a/src/connection.c +++ b/src/connection.c @@ -2,6 +2,7 @@ connection.c -- connection list management Copyright (C) 2000-2009 Guus Sliepen , 2000-2005 Ivo Timmermans + 2008 Max Rijevski 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 @@ -119,7 +120,7 @@ void dump_connections(void) { for(node = connection_tree->head; node; node = node->next) { c = node->data; - logger(LOG_DEBUG, " %s at %s options %lx socket %d status %04x outbuf %d/%d/%d", + logger(LOG_DEBUG, " %s at %s options %x socket %d status %04x outbuf %d/%d/%d", c->name, c->hostname, c->options, c->socket, bitfield_to_int(&c->status, sizeof c->status), c->outbufsize, c->outbufstart, c->outbuflen); } @@ -128,12 +129,27 @@ void dump_connections(void) { } bool read_connection_config(connection_t *c) { + list_node_t *node, *next; + size_t name_len = strlen(c->name); char *fname; - int x; + bool x; + + for(node = cmdline_conf->tail; node; node = next) { + config_t *cfg = (config_t *)node->data; + next = node->prev; + if (!strncmp(c->name, cfg->variable, name_len) && cfg->variable[name_len] == '.') { + config_t *new_cfg = new_config(); + new_cfg->variable = xstrdup(cfg->variable + name_len + 1); + new_cfg->value = xstrdup(cfg->value); + new_cfg->file = NULL; + new_cfg->line = cfg->line; + config_add(c->config_tree, new_cfg); + } + } xasprintf(&fname, "%s/hosts/%s", confbase, c->name); x = read_config_file(c->config_tree, fname); free(fname); - return x == 0; + return x; }