serverconfig.h
- Author: Johnny Mnemonic <johnny@themnemonic.org>
+ Author: Giovanni Giacobbi <giovanni@giacobbi.net>
- Copyright (C) 1997 - 2002 Johnny Mnemonic
+ Copyright (C) 1997 - 2007 Pekka Riikonen
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
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
+ the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
struct SilcServerConfigPkcsStruct *next;
} SilcServerConfigPkcs;
-typedef struct SilcServerConfigServerInfoStruct {
- char *server_name;
+typedef struct SilcServerConfigServerInfoInterfaceStruct {
char *server_ip;
+ char *public_ip;
SilcUInt16 port;
+ struct SilcServerConfigServerInfoInterfaceStruct *next;
+} SilcServerConfigServerInfoInterface;
+
+typedef struct SilcServerConfigServerInfoStruct {
+ char *server_name;
+ SilcServerConfigServerInfoInterface *primary;
+ SilcServerConfigServerInfoInterface *secondary;
char *server_type; /* E.g. "Test Server" */
char *location; /* geographic location */
char *admin; /* admin full name */
/* Connection parameters */
typedef struct SilcServerConfigConnParams {
+ struct SilcServerConfigConnParams *next;
char *name;
+ char *version_protocol;
+ char *version_software;
+ char *version_software_vendor;
SilcUInt32 connections_max;
SilcUInt32 connections_max_per_host;
SilcUInt32 keepalive_secs;
SilcUInt32 reconnect_count;
SilcUInt32 reconnect_interval;
SilcUInt32 reconnect_interval_max;
- bool reconnect_keep_trying;
SilcUInt32 key_exchange_rekey;
- bool key_exchange_pfs;
- char *version_protocol;
- char *version_software;
- char *version_software_vendor;
- struct SilcServerConfigConnParams *next;
+ SilcUInt32 qos_rate_limit;
+ SilcUInt32 qos_bytes_limit;
+ SilcUInt32 qos_limit_sec;
+ SilcUInt32 qos_limit_usec;
+ SilcUInt32 chlimit;
+ unsigned int key_exchange_pfs : 1;
+ unsigned int reconnect_keep_trying : 1;
+ unsigned int anonymous : 1;
+ unsigned int qos : 1;
} SilcServerConfigConnParams;
/* Holds all client authentication data from config file */
char *host;
unsigned char *passphrase;
SilcUInt32 passphrase_len;
- SilcHashTable publickeys;
+ SilcBool publickeys;
SilcServerConfigConnParams *param;
struct SilcServerConfigClientStruct *next;
} SilcServerConfigClient;
char *nick;
unsigned char *passphrase;
SilcUInt32 passphrase_len;
- SilcHashTable publickeys;
+ SilcBool publickeys;
struct SilcServerConfigAdminStruct *next;
} SilcServerConfigAdmin;
char *host;
unsigned char *passphrase;
SilcUInt32 passphrase_len;
- SilcHashTable publickeys;
- char *version;
+ SilcBool publickeys;
SilcServerConfigConnParams *param;
- bool backup_router;
+ SilcBool backup_router;
struct SilcServerConfigServerStruct *next;
} SilcServerConfigServer;
char *host;
unsigned char *passphrase;
SilcUInt32 passphrase_len;
- SilcHashTable publickeys;
+ SilcBool publickeys;
SilcUInt16 port;
- char *version;
SilcServerConfigConnParams *param;
- bool initiator;
- bool backup_router;
+ SilcBool initiator;
+ SilcBool backup_router;
+ SilcBool dynamic_connection;
char *backup_replace_ip;
SilcUInt16 backup_replace_port;
- bool backup_local;
+ SilcBool backup_local;
struct SilcServerConfigRouterStruct *next;
} SilcServerConfigRouter;
/* define the SilcServerConfig object */
typedef struct {
+ SilcServer server;
void *tmp;
/* Reference count (when this reaches zero, config object is destroyed) */
- SilcUInt16 refcount;
+ SilcInt32 refcount;
/* The General section */
char *module_path;
- bool prefer_passphrase_auth;
- bool require_reverse_lookup;
+ SilcBool prefer_passphrase_auth;
+ SilcBool require_reverse_lookup;
SilcUInt32 channel_rekey_secs;
SilcUInt32 key_exchange_timeout;
SilcUInt32 conn_auth_timeout;
SilcServerConfigConnParams param;
- bool logging_quick;
+ SilcBool detach_disabled;
+ SilcUInt32 detach_timeout;
+ SilcBool logging_timestamp;
+ SilcBool logging_quick;
long logging_flushdelay;
+ char *debug_string;
+ SilcBool httpd;
+ char *httpd_ip;
+ SilcUInt16 httpd_port;
+ SilcBool dynamic_server;
+ SilcBool local_channels;
/* Other configuration sections */
SilcServerConfigCipher *cipher;
/* Prototypes */
/* Basic config operations */
-SilcServerConfig silc_server_config_alloc(SilcServer server,
- const char *filename);
+SilcServerConfig silc_server_config_alloc(const char *filename,
+ SilcServer server);
void silc_server_config_destroy(SilcServerConfig config);
void silc_server_config_ref(SilcServerConfigRef *ref, SilcServerConfig config,
void *ref_ptr);
void silc_server_config_unref(SilcServerConfigRef *ref);
/* Algorithm registering and reset functions */
-bool silc_server_config_register_ciphers(SilcServer server);
-bool silc_server_config_register_hashfuncs(SilcServer server);
-bool silc_server_config_register_hmacs(SilcServer server);
-bool silc_server_config_register_pkcs(SilcServer server);
+SilcBool silc_server_config_register_ciphers(SilcServer server);
+SilcBool silc_server_config_register_hashfuncs(SilcServer server);
+SilcBool silc_server_config_register_hmacs(SilcServer server);
+SilcBool silc_server_config_register_pkcs(SilcServer server);
void silc_server_config_setlogfiles(SilcServer server);
/* Run-time config access functions */
silc_server_config_find_server_conn(SilcServer server, char *host);
SilcServerConfigRouter *
silc_server_config_find_router_conn(SilcServer server, char *host, int port);
-bool silc_server_config_is_primary_route(SilcServer server);
+SilcServerConfigRouter *
+silc_server_config_find_backup_conn(SilcServer server, char *host);
+SilcBool silc_server_config_is_primary_route(SilcServer server);
SilcServerConfigRouter *
silc_server_config_get_primary_router(SilcServer server);
+SilcServerConfigRouter *
+silc_server_config_get_backup_router(SilcServer server);
#endif /* !SERVERCONFIG_H */