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 {
+ SilcSocketConnection sock;
+
+ /* Remote host name and port */
+ char *remote_host;
+ int remote_port;
+
+ /* Current connection retry info */
+ uint32 retry_count;
+ uint32 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;
+ uint32 id_string_len;
SilcIdType id_type;
+
+ /* Current command identifier, 0 not used */
+ uint16 cmd_ident;
+
+ /* 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;
SilcTaskQueue timeout_queue;
SilcHmac sha1hmac;
/* Configuration object */
- SilcConfigServer config;
+ SilcServerConfig config;
/* Random pool */
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) list */
SilcDList sim;
#endif
-} SilcServerObject;
+};
+
+/* 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;
+
+/* Session key's re-key context. */
+typedef struct {
+ SilcServer server;
+ SilcSocketConnection sock;
+ uint32 timeout;
+} *SilcServerRekeyContext;
/* Macros */
} while(0)
/* Prototypes */
+SILC_TASK_CALLBACK_GLOBAL(silc_server_rekey_final);
#endif