X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Fsilcd%2Fserver_internal.h;h=d35c5d8a09f3e60530ec30121c5d39d9c9eb3aae;hb=a818c5b5411bbc4436d1c5f011236985c96bb787;hp=9f51174a0652b74f0ef1708c7f447e4a7e0c5abf;hpb=e5d8d3db6caa344b3d419b884556c21b15e7d123;p=silc.git diff --git a/apps/silcd/server_internal.h b/apps/silcd/server_internal.h index 9f51174a..d35c5d8a 100644 --- a/apps/silcd/server_internal.h +++ b/apps/silcd/server_internal.h @@ -25,35 +25,35 @@ various things. */ 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 */ + SilcUInt32 my_clients; /* Locally connected clients */ + SilcUInt32 my_servers; /* Locally connected servers */ + SilcUInt32 my_routers; /* Locally connected routers */ + SilcUInt32 my_channels; /* Locally created channels */ + SilcUInt32 my_chanclients; /* Local clients on local channels */ + SilcUInt32 my_aways; /* Local clients away (XXX) */ + SilcUInt32 my_server_ops; /* Local server operators */ + SilcUInt32 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 */ + SilcUInt32 cell_clients; /* All clients in cell */ + SilcUInt32 cell_servers; /* All servers in cell */ + SilcUInt32 cell_channels; /* All channels in cell */ + SilcUInt32 cell_chanclients; /* All clients on cell's channels */ + SilcUInt32 clients; /* All clients */ + SilcUInt32 servers; /* All servers */ + SilcUInt32 routers; /* All routers */ + SilcUInt32 channels; /* All channels */ + SilcUInt32 chanclients; /* All clients on channels */ + SilcUInt32 server_ops; /* All server operators */ + SilcUInt32 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 */ + SilcUInt32 conn_attempts; /* Connection attempts */ + SilcUInt32 conn_failures; /* Connection failure */ + SilcUInt32 auth_attempts; /* Authentication attempts */ + SilcUInt32 auth_failures; /* Authentication failures */ + SilcUInt32 packets_sent; /* Sent packets */ + SilcUInt32 packets_received; /* Received packets */ } SilcServerStatistics; /* @@ -66,22 +66,25 @@ struct SilcServerStruct { int sock; SilcServerID *id; unsigned char *id_string; - uint32 id_string_len; + SilcUInt32 id_string_len; SilcIdType id_type; bool standalone; /* TRUE if server is standalone, and does not have connection to network. */ bool listenning; /* TRUE if server is listenning for incoming connections. */ - SilcServerEntry id_entry; /* Server's own ID entry */ SilcServerEntry router; /* Pointer to the primary router */ unsigned long router_connect; /* Time when router was connected */ SilcServerBackup backup; /* Backup routers */ - bool backup_router; + bool backup_router; /* TRUE if this is backup router */ + bool backup_primary; /* TRUE if we've switched our primary + router to a backup router. */ + SilcServerConnection router_conn; /* non-NULL when connecting to the + primary router, and NULL otherwise. */ /* Current command identifier, 0 not used */ - uint16 cmd_ident; + SilcUInt16 cmd_ident; /* SILC server scheduler */ SilcSchedule schedule; @@ -93,11 +96,6 @@ struct SilcServerStruct { /* Table of connected sockets */ SilcSocketConnection *sockets; - /* Server keys */ - SilcCipher send_key; - SilcCipher receive_key; - SilcCipher none_cipher; - /* Server public key */ SilcPKCS pkcs; SilcPublicKey public_key; @@ -123,9 +121,6 @@ struct SilcServerStruct { /* Pending command queue */ SilcDList pending_commands; - /* Default parameteres for server */ - SilcServerParams params; - #ifdef SILC_SIM /* SIM (SILC Module) list */ SilcDList sim; @@ -143,7 +138,7 @@ typedef struct { typedef struct { SilcServer server; SilcSocketConnection sock; - uint32 failure; + SilcUInt32 failure; } *SilcServerFailureContext; /* Macros */ @@ -170,6 +165,24 @@ do { \ silc_schedule_set_listen_fd((s), (fd), (SILC_TASK_READ | SILC_TASK_WRITE)); \ } while(0) +#define SILC_OPER_STATS_UPDATE(c, type, mod) \ +do { \ + if ((c)->mode & (mod)) { \ + if ((c)->connection) \ + server->stat.my_ ## type ## _ops--; \ + if (server->server_type == SILC_ROUTER) \ + server->stat. type ## _ops--; \ + } \ +} while(0) + +#define SILC_GET_SKE_FLAGS(x, p) \ + if ((x)) { \ + if ((x)->param && (x)->param->key_exchange_pfs) \ + (p)->flags |= SILC_SKE_SP_FLAG_PFS; \ + if (!(x)->publickey) \ + (p)->flags |= SILC_SKE_SP_FLAG_MUTUAL; \ + } + /* Prototypes */ SILC_TASK_CALLBACK_GLOBAL(silc_server_rekey_final);