i prefer consistent copyright name.
[silc.git] / apps / silcd / serverconfig.h
index b27c7b6564bf2ba89c1cffff4e6c535004d1c891..4b3cd6a3fce8fa76cd02760cf7e5a938e4b14933 100644 (file)
@@ -4,7 +4,7 @@
 
   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
@@ -122,7 +122,6 @@ typedef struct SilcServerConfigServerStruct {
   unsigned char *passphrase;
   SilcUInt32 passphrase_len;
   SilcHashTable publickeys;
-  char *version;
   SilcServerConfigConnParams *param;
   bool backup_router;
   struct SilcServerConfigServerStruct *next;
@@ -135,7 +134,6 @@ typedef struct SilcServerConfigRouterStruct {
   SilcUInt32 passphrase_len;
   SilcHashTable publickeys;
   SilcUInt16 port;
-  char *version;
   SilcServerConfigConnParams *param;
   bool initiator;
   bool backup_router;
@@ -149,6 +147,9 @@ 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;
@@ -157,6 +158,8 @@ typedef struct {
   SilcUInt32 key_exchange_timeout;
   SilcUInt32 conn_auth_timeout;
   SilcServerConfigConnParams param;
+  bool logging_quick;
+  long logging_flushdelay;
 
   /* Other configuration sections */
   SilcServerConfigCipher *cipher;
@@ -176,11 +179,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);
@@ -193,7 +204,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);
@@ -204,6 +215,5 @@ 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_get_primary_router(SilcServer server);
-bool silc_server_config_set_defaults(SilcServer server);
 
 #endif /* !SERVERCONFIG_H */