-int reload_configuration(void) {
- char *fname = NULL;
-
- /* Reread our own configuration file */
-
- exit_configuration(&mesh->config);
- init_configuration(&mesh->config);
-
- if(!read_server_config()) {
- logger(DEBUG_ALWAYS, LOG_ERR, "Unable to reread configuration file.");
- return EINVAL;
- }
-
- xasprintf(&fname, "%s" SLASH "hosts" SLASH "%s", confbase, mesh->self->name);
- read_config_file(mesh->config, fname);
- free(fname);
-
- /* Parse some options that are allowed to be changed while tinc is running */
-
- setup_myself_reloadable();
-
- /* Try to make outgoing connections */
-
- try_outgoing_connections();
-
- /* Close connections to hosts that have a changed or deleted host config file */
-
- for list_each(connection_t, c, mesh->connections) {
- 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);
- }
- free(fname);
- }
-
- last_config_check = now.tv_sec;
-
- return 0;
-}
-
-void retry(void) {