Author: Johnny Mnemonic <johnny@themnemonic.org>
- Copyright (C) 1997 - 2002 Johnny Mnemonic
+ Copyright (C) 1997 - 2002 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
struct SilcServerConfigPkcsStruct *next;
} SilcServerConfigPkcs;
-typedef struct SilcServerConfigServerInfoStruct {
- char *server_name;
+typedef struct SilcServerConfigServerInfoInterfaceStruct {
char *server_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 */
unsigned char *passphrase;
SilcUInt32 passphrase_len;
SilcHashTable publickeys;
- char *version;
SilcServerConfigConnParams *param;
bool backup_router;
struct SilcServerConfigServerStruct *next;
SilcUInt32 passphrase_len;
SilcHashTable publickeys;
SilcUInt16 port;
- char *version;
SilcServerConfigConnParams *param;
bool initiator;
bool backup_router;
typedef struct {
void *tmp;
+ /* Reference count (when this reaches zero, config object is destroyed) */
+ SilcInt32 refcount;
+
/* The General section */
char *module_path;
bool prefer_passphrase_auth;
SilcUInt32 key_exchange_timeout;
SilcUInt32 conn_auth_timeout;
SilcServerConfigConnParams param;
+ bool detach_disabled;
+ SilcUInt32 detach_timeout;
+ bool logging_timestamp;
+ bool logging_quick;
+ long logging_flushdelay;
/* Other configuration sections */
SilcServerConfigCipher *cipher;
SilcServerConfigRouter *routers;
} *SilcServerConfig;
+typedef struct {
+ SilcServerConfig config;
+ void *ref_ptr;
+} SilcServerConfigRef;
+
/* Prototypes */
/* Basic config operations */
-SilcServerConfig silc_server_config_alloc(char *filename);
+SilcServerConfig silc_server_config_alloc(const char *filename);
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);
SilcServerConfigClient *
silc_server_config_find_client(SilcServer server, char *host);
SilcServerConfigAdmin *
-silc_server_config_find_admin(SilcServer server, char *host, char *user,
+silc_server_config_find_admin(SilcServer server, char *host, char *user,
char *nick);
SilcServerConfigDeny *
silc_server_config_find_denied(SilcServer server, char *host);
silc_server_config_find_server_conn(SilcServer server, char *host);
SilcServerConfigRouter *
silc_server_config_find_router_conn(SilcServer server, char *host, int port);
+SilcServerConfigRouter *
+silc_server_config_find_backup_conn(SilcServer server, char *host);
bool silc_server_config_is_primary_route(SilcServer server);
SilcServerConfigRouter *
silc_server_config_get_primary_router(SilcServer server);
-bool silc_server_config_set_defaults(SilcServer server);
+SilcServerConfigRouter *
+silc_server_config_get_backup_router(SilcServer server);
#endif /* !SERVERCONFIG_H */