updates. New data types.
[silc.git] / apps / silcd / server_internal.h
index 429988c4a001d667ac1e6778080954e4bed5e6cb..93d046ad6ea5adb7f29e9884aefb9b4d3876b518 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) */
+  uint32 my_clients;     /* Locally connected clients */
+  uint32 my_servers;     /* Locally connected servers */
+  uint32 my_routers;     /* Locally connected routers */
+  uint32 my_channels;    /* Locally created channels */
+  uint32 my_chanclients;         /* Local clients on local channels */
+  uint32 my_aways;       /* Local clients away (XXX) */
+  uint32 my_server_ops;          /* Local server operators */
+  uint32 my_router_ops;          /* Local router operators */
+
+  /* Global stats (mainly for router) */
+  uint32 cell_clients;   /* All clients in cell */
+  uint32 cell_servers;   /* All servers in cell */
+  uint32 cell_channels;          /* All channels in cell */
+  uint32 cell_chanclients; /* All clients on cell's channels */
+  uint32 clients;        /* All clients */
+  uint32 servers;        /* All servers */
+  uint32 routers;        /* All routers */
+  uint32 channels;       /* All channels */
+  uint32 chanclients;    /* All clients on channels */
+  uint32 server_ops;     /* All server operators */
+  uint32 router_ops;     /* All router operators */
+
+  /* General */
+  uint32 conn_attempts;          /* Connection attempts */
+  uint32 conn_failures;          /* Connection failure */
+  uint32 auth_attempts;          /* Authentication attempts */
+  uint32 auth_failures;          /* Authentication failures */
+  uint32 packets_sent;   /* Sent packets */
+  uint32 packets_received; /* Received packets */
 } SilcServerStatistics;
 
 typedef struct {
-  void *id_entry;
   SilcSocketConnection sock;
 
   /* Remote host name and port */
@@ -37,8 +64,8 @@ typedef struct {
   int remote_port;
   
   /* Current connection retry info */
-  unsigned int retry_count;
-  unsigned int retry_timeout;
+  uint32 retry_count;
+  uint32 retry_timeout;
 
   /* Back pointer to server */
   SilcServer server;
@@ -55,8 +82,13 @@ struct SilcServerStruct {
   int standalone;
   int listenning;
   SilcServerID *id;
+  unsigned char *id_string;
+  uint32 id_string_len;
   SilcIdType id_type;
 
+  /* Current command identifier, 0 not used */
+  uint16 cmd_ident;
+
   /* Server's own ID entry. */
   SilcServerEntry id_entry;
 
@@ -94,13 +126,13 @@ struct SilcServerStruct {
   SilcHmac sha1hmac;
 
   /* Configuration object */
-  SilcConfigServer config;
+  SilcServerConfig config;
 
   /* Random pool */
   SilcRng rng;
 
   /* Server statistics */
-  SilcServerStatistics stats;
+  SilcServerStatistics stat;
 
   /* Pending command queue */
   SilcDList pending_commands;
@@ -114,6 +146,20 @@ struct SilcServerStruct {
 #endif
 };
 
+/* Server's heartbeat context */
+typedef struct {
+  SilcServer server;
+} *SilcServerHBContext;
+
+/* Failure context. This is allocated when failure packet is received.
+   Failure packets are processed with timeout and data is saved in this
+   structure. */
+typedef struct {
+  SilcServer server;
+  SilcSocketConnection sock;
+  uint32 failure;
+} *SilcServerFailureContext;
+
 /* Macros */
 
 /* Registers generic task for file descriptor for reading from network and