SILC_CONFIG_SERVER_SECTION_TYPE_DENY_CONNECTION, 3 },
{ "[motd]",
SILC_CONFIG_SERVER_SECTION_TYPE_MOTD, 1 },
+ { "[pid]",
+ SILC_CONFIG_SERVER_SECTION_TYPE_PID, 1},
{ NULL, SILC_CONFIG_SERVER_SECTION_TYPE_NONE, 0 }
};
if ((silc_server_config_parse_lines(new, config_parse)) == FALSE)
goto fail;
- silc_free(buffer);
+ silc_buffer_free(buffer);
return new;
fail:
+ silc_buffer_free(buffer);
silc_free(new);
return NULL;
}
silc_free(config->routers);
silc_free(config->denied);
silc_free(config->motd);
+ silc_free(config->pidfile);
silc_free(config);
}
}
silc_free(tmp);
}
- /* Check whether this connection is backup router connection */
- ret = silc_config_get_token(line, &tmp);
- if (ret != -1) {
- config->routers->backup_router = atoi(tmp);
- if (config->routers->backup_router != 0)
- config->routers->backup_router = TRUE;
- silc_free(tmp);
- }
-
- /* Check whether this backup is local (in cell) or remote (other cell) */
- ret = silc_config_get_token(line, &tmp);
- if (ret != -1) {
- config->routers->backup_local = atoi(tmp);
- if (config->routers->backup_local != 0)
- config->routers->backup_local = TRUE;
- silc_free(tmp);
+ /* Get backup replace IP */
+ ret = silc_config_get_token(line, &config->routers->backup_replace_ip);
+ if (ret != -1)
+ config->routers->backup_router = TRUE;
+
+ if (config->routers->backup_router) {
+ /* Get backup replace port */
+ ret = silc_config_get_token(line, &tmp);
+ if (ret != -1) {
+ config->routers->backup_replace_port = atoi(tmp);
+ silc_free(tmp);
+ }
+
+ /* Check whether the backup connection is local */
+ ret = silc_config_get_token(line, &tmp);
+ if (ret != -1) {
+ config->routers->backup_local = atoi(tmp);
+ if (config->routers->backup_local != 0)
+ config->routers->backup_local = TRUE;
+ silc_free(tmp);
+ }
}
check = TRUE;
checkmask |= (1L << pc->section->type);
break;
+ case SILC_CONFIG_SERVER_SECTION_TYPE_PID:
+
+ if (!config->pidfile)
+ config->pidfile = silc_calloc(1, sizeof(*config->pidfile));
+
+ ret = silc_config_get_token(line, &config->pidfile->pid_file);
+ if (ret < 0)
+ break;
+
+ check = TRUE;
+ checkmask |= (1L << pc->section->type);
+ break;
+
case SILC_CONFIG_SERVER_SECTION_TYPE_NONE:
default:
/* Error */
}
if (check == FALSE)
- return FALSE;;
+ return FALSE;
/* Check that all mandatory sections really were found. If not, the server
cannot function and we return error. */
/* Sets log files where log messages is saved by the server. */
-void silc_server_config_setlogfiles(SilcServerConfig config)
+void silc_server_config_setlogfiles(SilcServerConfig config, SilcSchedule sked)
{
SilcServerConfigSectionLogging *log;
- char *info, *warning, *error, *fatal;
- uint32 info_size, warning_size, error_size, fatal_size;
SILC_LOG_DEBUG(("Setting configured log file names"));
-
- /* Set default files before checking configuration */
- info = SILC_LOG_FILE_INFO;
- warning = SILC_LOG_FILE_WARNING;
- error = SILC_LOG_FILE_ERROR;
- fatal = SILC_LOG_FILE_FATAL;
- info_size = 0;
- warning_size = 0;
- error_size = 0;
- fatal_size = 0;
-
log = config->logging;
- while(log) {
- if (!strcmp(log->logtype, SILC_CONFIG_SERVER_LF_INFO)) {
- info = log->filename;
- info_size = log->maxsize;
- }
- if (!strcmp(log->logtype, SILC_CONFIG_SERVER_LF_WARNING)) {
- warning = log->filename;
- warning_size = log->maxsize;
- }
- if (!strcmp(log->logtype, SILC_CONFIG_SERVER_LF_ERROR)) {
- error = log->filename;
- error_size = log->maxsize;
- }
- if (!strcmp(log->logtype, SILC_CONFIG_SERVER_LF_FATAL)) {
- fatal = log->filename;
- fatal_size = log->maxsize;
- }
+ while (log) {
+ if (!strcmp(log->logtype, SILC_CONFIG_SERVER_LF_INFO))
+ silc_log_set_file(SILC_LOG_INFO, log->filename, log->maxsize, sked);
+ if (!strcmp(log->logtype, SILC_CONFIG_SERVER_LF_WARNING))
+ silc_log_set_file(SILC_LOG_WARNING, log->filename, log->maxsize, sked);
+ if (!strcmp(log->logtype, SILC_CONFIG_SERVER_LF_ERROR))
+ silc_log_set_file(SILC_LOG_ERROR, log->filename, log->maxsize, sked);
+ if (!strcmp(log->logtype, SILC_CONFIG_SERVER_LF_FATAL))
+ silc_log_set_file(SILC_LOG_FATAL, log->filename, log->maxsize, sked);
log = log->next;
}
-
- silc_log_set_files(info, info_size, warning, warning_size,
- error, error_size, fatal, fatal_size);
}
/* Registers configured ciphers. These can then be allocated by the