diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2013-03-08 19:22:53 +0100 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2013-03-08 19:22:53 +0100 |
commit | 4e9b2a8819c7062ad052cd6c549db1d0fbed001d (patch) | |
tree | 987c871f99025a46a1b702b905f006d193913572 | |
parent | 5c859a2408506c53f1b3a17bdc867a649f5bf933 (diff) | |
download | fastd-4e9b2a8819c7062ad052cd6c549db1d0fbed001d.tar fastd-4e9b2a8819c7062ad052cd6c549db1d0fbed001d.zip |
Disable peer configs by default, enable on peer creation
This allows to remove some duplicate code, and will simplify the detection and
handling of duplicate keys.
-rw-r--r-- | src/config.c | 12 | ||||
-rw-r--r-- | src/fastd.c | 7 | ||||
-rw-r--r-- | src/peer.c | 2 |
3 files changed, 12 insertions, 9 deletions
diff --git a/src/config.c b/src/config.c index abd386f..0febd15 100644 --- a/src/config.c +++ b/src/config.c @@ -1000,19 +1000,17 @@ static void peer_dirs_handle_old_peers(fastd_context_t *ctx, fastd_peer_config_t } static void peer_dirs_handle_new_peers(fastd_context_t *ctx, fastd_peer_config_t **peers, fastd_peer_config_t *new_peers) { - fastd_peer_config_t *peer, *next; - for (peer = new_peers; peer; peer = next) { - next = peer->next; - - ctx->conf->protocol->peer_configure(ctx, peer); - if (peer->enabled) - fastd_peer_add(ctx, peer); + fastd_peer_config_t *peer; + for (peer = new_peers; peer; peer = peer->next) { + if (peer->next) + continue; peer->next = *peers; *peers = peer; } } + void fastd_config_load_peer_dirs(fastd_context_t *ctx, fastd_config_t *conf) { fastd_config_t temp_conf; temp_conf.peer_group = conf->peer_group; diff --git a/src/fastd.c b/src/fastd.c index 686df31..fec0838 100644 --- a/src/fastd.c +++ b/src/fastd.c @@ -616,6 +616,10 @@ static void delete_peer_groups(fastd_context_t *ctx) { static void init_peers(fastd_context_t *ctx) { fastd_peer_config_t *peer_conf; for (peer_conf = ctx->conf->peers; peer_conf; peer_conf = peer_conf->next) { + if (peer_conf->enabled) + continue; + + peer_conf->enabled = true; ctx->conf->protocol->peer_configure(ctx, peer_conf); if (peer_conf->enabled) @@ -1138,8 +1142,8 @@ int main(int argc, char *argv[]) { init_tuntap(&ctx); init_peer_groups(&ctx); - init_peers(&ctx); fastd_config_load_peer_dirs(&ctx, &conf); + init_peers(&ctx); if (conf.daemon) { pid_t pid = fork(); @@ -1188,6 +1192,7 @@ int main(int argc, char *argv[]) { init_log(&ctx); fastd_config_load_peer_dirs(&ctx, &conf); + init_peers(&ctx); } if (dump) { @@ -210,7 +210,7 @@ static void delete_peer(fastd_context_t *ctx, fastd_peer_t *peer) { fastd_peer_config_t* fastd_peer_config_new(fastd_context_t *ctx, fastd_config_t *conf) { fastd_peer_config_t *peer = malloc(sizeof(fastd_peer_config_t)); - peer->enabled = true; + peer->enabled = false; peer->hostname = NULL; memset(&peer->address, 0, sizeof(fastd_peer_address_t)); |