X-Git-Url: https://tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fconnection.c;h=36c0fdbc58fd76eed0dc010c666561b20651ad9a;hp=7c8cd0ba83e3c326a47505f8f8cd175403926bfe;hb=8c3105283ac53f8cc9cc4dde25957ec1cf6b53a0;hpb=a227843b739d279b63adcf3736ebb03d856080c4 diff --git a/src/connection.c b/src/connection.c index 7c8cd0ba..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 @@ -40,8 +41,8 @@ static int connection_compare(const connection_t *a, const connection_t *b) { void init_connections(void) { connection_tree = avl_alloc_tree((avl_compare_t) connection_compare, (avl_action_t) free_connection); broadcast = new_connection(); - broadcast->name = xstrdup(_("everyone")); - broadcast->hostname = xstrdup(_("BROADCAST")); + broadcast->name = xstrdup("everyone"); + broadcast->hostname = xstrdup("BROADCAST"); } void exit_connections(void) { @@ -115,25 +116,40 @@ void dump_connections(void) { avl_node_t *node; connection_t *c; - logger(LOG_DEBUG, _("Connections:")); + logger(LOG_DEBUG, "Connections:"); 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); } - logger(LOG_DEBUG, _("End of connections.")); + logger(LOG_DEBUG, "End of connections."); } 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; }