X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Fsilcd%2Fserverconfig.h;h=2104976ed3e87275c5c485ab67a941d792cd930f;hb=413da0f8686910f5e627393157566ae729ca99c4;hp=f06ab5796bab5d0fe8213d6824c7a457ec15e372;hpb=06de75789d7eb830f8358b1b784e82b9941b33c8;p=silc.git diff --git a/apps/silcd/serverconfig.h b/apps/silcd/serverconfig.h index f06ab579..2104976e 100644 --- a/apps/silcd/serverconfig.h +++ b/apps/silcd/serverconfig.h @@ -2,9 +2,9 @@ serverconfig.h - Author: Johnny Mnemonic + Author: Giovanni Giacobbi - 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 @@ -24,23 +24,23 @@ typedef struct SilcServerConfigCipherStruct { char *name; char *module; - uint32 key_length; - uint32 block_length; + SilcUInt32 key_length; + SilcUInt32 block_length; struct SilcServerConfigCipherStruct *next; } SilcServerConfigCipher; typedef struct SilcServerConfigHashStruct { char *name; char *module; - uint32 block_length; - uint32 digest_length; + SilcUInt32 block_length; + SilcUInt32 digest_length; struct SilcServerConfigHashStruct *next; } SilcServerConfigHash; typedef struct SilcServerConfigHmacStruct { char *name; char *hash; - uint32 mac_length; + SilcUInt32 mac_length; struct SilcServerConfigHmacStruct *next; } SilcServerConfigHmac; @@ -49,10 +49,16 @@ typedef struct SilcServerConfigPkcsStruct { struct SilcServerConfigPkcsStruct *next; } SilcServerConfigPkcs; +typedef struct SilcServerConfigServerInfoInterfaceStruct { + char *server_ip; + SilcUInt16 port; + struct SilcServerConfigServerInfoInterfaceStruct *next; +} SilcServerConfigServerInfoInterface; + typedef struct SilcServerConfigServerInfoStruct { char *server_name; - char *server_ip; - uint16 port; + SilcServerConfigServerInfoInterface *primary; + SilcServerConfigServerInfoInterface *secondary; char *server_type; /* E.g. "Test Server" */ char *location; /* geographic location */ char *admin; /* admin full name */ @@ -67,30 +73,39 @@ typedef struct SilcServerConfigServerInfoStruct { typedef struct SilcServerConfigLoggingStruct { char *file; - uint32 maxsize; + SilcUInt32 maxsize; } SilcServerConfigLogging; /* Connection parameters */ typedef struct SilcServerConfigConnParams { - char *name; - uint32 connections_max; - uint32 connections_max_per_host; - uint32 keepalive_secs; - uint32 reconnect_count; - uint32 reconnect_interval; - uint32 reconnect_interval_max; - bool reconnect_keep_trying; - uint32 key_exchange_rekey; - bool key_exchange_pfs; 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; + SilcUInt32 key_exchange_rekey; + SilcUInt32 qos_rate_limit; + SilcUInt32 qos_bytes_limit; + SilcUInt32 qos_limit_sec; + SilcUInt32 qos_limit_usec; + 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 */ typedef struct SilcServerConfigClientStruct { char *host; unsigned char *passphrase; - uint32 passphrase_len; - void *publickey; + SilcUInt32 passphrase_len; + SilcHashTable publickeys; SilcServerConfigConnParams *param; struct SilcServerConfigClientStruct *next; } SilcServerConfigClient; @@ -101,8 +116,8 @@ typedef struct SilcServerConfigAdminStruct { char *user; char *nick; unsigned char *passphrase; - uint32 passphrase_len; - void *publickey; + SilcUInt32 passphrase_len; + SilcHashTable publickeys; struct SilcServerConfigAdminStruct *next; } SilcServerConfigAdmin; @@ -117,9 +132,8 @@ typedef struct SilcServerConfigDenyStruct { typedef struct SilcServerConfigServerStruct { char *host; unsigned char *passphrase; - uint32 passphrase_len; - void *publickey; - char *version; + SilcUInt32 passphrase_len; + SilcHashTable publickeys; SilcServerConfigConnParams *param; bool backup_router; struct SilcServerConfigServerStruct *next; @@ -129,15 +143,14 @@ typedef struct SilcServerConfigServerStruct { typedef struct SilcServerConfigRouterStruct { char *host; unsigned char *passphrase; - uint32 passphrase_len; - void *publickey; - uint16 port; - char *version; + SilcUInt32 passphrase_len; + SilcHashTable publickeys; + SilcUInt16 port; SilcServerConfigConnParams *param; bool initiator; bool backup_router; char *backup_replace_ip; - uint16 backup_replace_port; + SilcUInt16 backup_replace_port; bool backup_local; struct SilcServerConfigRouterStruct *next; } SilcServerConfigRouter; @@ -146,14 +159,23 @@ typedef struct SilcServerConfigRouterStruct { 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; bool require_reverse_lookup; - uint32 channel_rekey_secs; - uint32 key_exchange_timeout; - uint32 conn_auth_timeout; + SilcUInt32 channel_rekey_secs; + 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; + char *debug_string; /* Other configuration sections */ SilcServerConfigCipher *cipher; @@ -173,11 +195,19 @@ typedef struct { 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); @@ -190,7 +220,7 @@ void silc_server_config_setlogfiles(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); @@ -198,9 +228,12 @@ SilcServerConfigServer * 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 */