Code auditing weekend results and fixes committing.
[silc.git] / apps / silcd / server_internal.h
index 8f4fa5829f39e6fad3f22bf03543f15304b1ae1b..63ca697a9e479d4b51237ab37261258b3cda6d9f 100644 (file)
@@ -4,7 +4,7 @@
 
   Author: Pekka Riikonen <priikone@poseidon.pspt.fi>
 
-  Copyright (C) 1997 - 2000 Pekka Riikonen
+  Copyright (C) 1997 - 2001 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
 
 /* Server statistics structure. This holds various statistics about
    various things. */
-/* XXX TODO */
 typedef struct {
-
+  /* Local stats (server and router) */
+  unsigned long my_clients;      /* Locally connected clients */
+  unsigned long my_servers;      /* Locally connected servers */
+  unsigned long my_routers;      /* Locally connected routers */
+  unsigned long my_channels;     /* Locally created channels */
+  unsigned long my_chanclients;          /* Local clients on local channels */
+  unsigned long my_aways;        /* Local clients away (XXX) */
+  unsigned long my_server_ops;   /* Local server operators */
+  unsigned long my_router_ops;   /* Local router operators */
+
+  /* Global stats (mainly for router) */
+  unsigned long cell_clients;    /* All clients in cell */
+  unsigned long cell_servers;    /* All servers in cell */
+  unsigned long cell_channels;   /* All channels in cell */
+  unsigned long cell_chanclients; /* All clients on cell's channels */
+  unsigned long clients;         /* All clients */
+  unsigned long servers;         /* All servers */
+  unsigned long routers;         /* All routers */
+  unsigned long channels;        /* All channels */
+  unsigned long chanclients;     /* All clients on channels */
+  unsigned long server_ops;      /* All server operators */
+  unsigned long router_ops;      /* All router operators */
+
+  /* General */
+  unsigned long conn_attempts;   /* Connection attempts */
+  unsigned long conn_failures;   /* Connection failure */
+  unsigned long auth_attempts;   /* Authentication attempts */
+  unsigned long auth_failures;   /* Authentication failures */
+  unsigned long packets_sent;    /* Sent packets */
+  unsigned long packets_received; /* Received packets */
 } SilcServerStatistics;
 
+typedef struct {
+  void *id_entry;
+  SilcSocketConnection sock;
+
+  /* Remote host name and port */
+  char *remote_host;
+  int remote_port;
+  
+  /* Current connection retry info */
+  unsigned int retry_count;
+  unsigned int retry_timeout;
+
+  /* Back pointer to server */
+  SilcServer server;
+} *SilcServerConnection;
+
 /* 
    SILC Server Object.
 
 */
-typedef struct SilcServerObjectStruct {
+struct SilcServerStruct {
   char *server_name;
   int server_type;
   int sock;
   int standalone;
   int listenning;
   SilcServerID *id;
+  unsigned char *id_string;
+  unsigned int id_string_len;
   SilcIdType id_type;
-  SilcServerList *id_entry;
+
+  /* Server's own ID entry. */
+  SilcServerEntry id_entry;
+
+  /* Back pointer to the primary router of this server. */
+  SilcServerEntry router;
 
   /* SILC server task queues */
   SilcTaskQueue io_queue;
@@ -79,14 +130,19 @@ typedef struct SilcServerObjectStruct {
   SilcRng rng;
 
   /* Server statistics */
-  SilcServerStatistics stats;
+  SilcServerStatistics stat;
+
+  /* Pending command queue */
+  SilcDList pending_commands;
+
+  /* Default parameteres for server */
+  SilcServerParams params;
 
 #ifdef SILC_SIM
-  /* SIM (SILC Module) table */
-  SilcSimContext **sim;
-  unsigned int sim_count;
+  /* SIM (SILC Module) list */
+  SilcDList sim;
 #endif
-} SilcServerObject;
+};
 
 /* Macros */