X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=apps%2Fsilcd%2Fserver.h;h=d442bc033055c1df722d715ec245741dca8bff25;hp=6301b58ec0b9be3402be65a6d83310049d06b26c;hb=a818c5b5411bbc4436d1c5f011236985c96bb787;hpb=6b9bd8ef71943b580d26d0a686bc2ebdc55f2731 diff --git a/apps/silcd/server.h b/apps/silcd/server.h index 6301b58e..d442bc03 100644 --- a/apps/silcd/server.h +++ b/apps/silcd/server.h @@ -29,47 +29,6 @@ typedef struct SilcServerStruct *SilcServer; /* Forward declaration of backup server context */ typedef struct SilcServerBackupStruct *SilcServerBackup; -#define SILC_SERVER_MAX_CONNECTIONS 1000 - -/* General definitions */ - -/* SILC port */ -#define SILC_PORT 768; - -/* Server and router. Used internally by the code. */ -#define SILC_SERVER 0 -#define SILC_ROUTER 1 -#define SILC_BACKUP_ROUTER 2 - -/* Connection retry timeout. We implement exponential backoff algorithm - in connection retry. The interval of timeuot grows when retry count - grows. */ -#define SILC_SERVER_RETRY_COUNT 4 /* Max retry count */ -#define SILC_SERVER_RETRY_MULTIPLIER 7 / 4 /* Interval growth */ -#define SILC_SERVER_RETRY_RANDOMIZER 2 /* timeout += rnd % 2 */ -#define SILC_SERVER_RETRY_INTERVAL_MIN 10 /* Min retry timeout */ -#define SILC_SERVER_RETRY_INTERVAL_MAX 600 /* Max generated timeout */ - -/* - Silc Server Params. - - Structure to hold various default parameters for server that can be - given before running the server. - -*/ -typedef struct { - uint32 retry_count; - uint32 retry_interval_min; - uint32 retry_interval_min_usec; - uint32 retry_interval_max; - char retry_keep_trying; - - uint32 protocol_timeout; - uint32 protocol_timeout_usec; - - char require_reverse_mapping; -} *SilcServerParams; - /* Callback function that is called after the key exchange and connection authentication protocols has been completed with a remote router. The `server_entry' is the remote router entry. */ @@ -77,6 +36,7 @@ typedef void (*SilcServerConnectRouterCallback)(SilcServer server, SilcServerEntry server_entry, void *context); +/* Connection structure used when connection to remote */ typedef struct { SilcSocketConnection sock; @@ -86,10 +46,15 @@ typedef struct { bool backup; char *backup_replace_ip; int backup_replace_port; - + bool no_reconnect; + + /* Connection configuration (maybe NULL), and connection params */ + void *conn; + void *param; + /* Current connection retry info */ - uint32 retry_count; - uint32 retry_timeout; + SilcUInt32 retry_count; + SilcUInt32 retry_timeout; /* Back pointer to server */ SilcServer server; @@ -98,6 +63,35 @@ typedef struct { void *callback_context; } *SilcServerConnection; +/* General definitions */ + +/* SILC port */ +#define SILC_PORT 768; + +/* Server and router. Used internally by the code. */ +#define SILC_SERVER 0 +#define SILC_ROUTER 1 +#define SILC_BACKUP_ROUTER 2 + +/* Default parameter values */ + +/* Connection retry timeout. We implement exponential backoff algorithm + in connection retry. The interval of timeout grows when retry count + grows. */ +#define SILC_SERVER_RETRY_COUNT 7 /* Max retry count */ +#define SILC_SERVER_RETRY_MULTIPLIER 2 /* Interval growth */ +#define SILC_SERVER_RETRY_RANDOMIZER 2 /* timeout += rnd % 2 */ +#define SILC_SERVER_RETRY_INTERVAL_MIN 10 /* Min retry timeout */ +#define SILC_SERVER_RETRY_INTERVAL_MAX 600 /* Max generated timeout */ + +#define SILC_SERVER_KEEPALIVE 300 /* Heartbeat interval */ +#define SILC_SERVER_CHANNEL_REKEY 3600 /* Channel rekey interval */ +#define SILC_SERVER_REKEY 3600 /* Session rekey interval */ +#define SILC_SERVER_SKE_TIMEOUT 60 /* SKE timeout */ +#define SILC_SERVER_CONNAUTH_TIMEOUT 60 /* CONN_AUTH timeout */ +#define SILC_SERVER_MAX_CONNECTIONS 1000 /* Max connections */ +#define SILC_SERVER_MAX_CONNECTIONS_SINGLE 1000 /* Max connections per host */ + /* Macros */ /* This macro is used to send notify messages with formatted string. The @@ -133,16 +127,17 @@ void silc_server_packet_parse_type(SilcServer server, SilcSocketConnection sock, SilcPacketContext *packet); void silc_server_create_connection(SilcServer server, - char *remote_host, uint32 port); + const char *remote_host, SilcUInt32 port); void silc_server_close_connection(SilcServer server, SilcSocketConnection sock); void silc_server_free_client_data(SilcServer server, SilcSocketConnection sock, SilcClientEntry client, int notify, - char *signoff); + const char *signoff); void silc_server_free_sock_user_data(SilcServer server, - SilcSocketConnection sock); + SilcSocketConnection sock, + const char *signoff_message); void silc_server_remove_from_channels(SilcServer server, SilcSocketConnection sock, SilcClientEntry client, @@ -172,7 +167,7 @@ silc_server_create_new_channel_with_id(SilcServer server, int broadcast); bool silc_server_create_channel_key(SilcServer server, SilcChannelEntry channel, - uint32 key_len); + SilcUInt32 key_len); SilcChannelEntry silc_server_save_channel_key(SilcServer server, SilcBuffer key_payload, SilcChannelEntry channel); @@ -190,7 +185,7 @@ void silc_server_announce_get_channels(SilcServer server, SilcBuffer *channels, SilcBuffer *channel_users, SilcBuffer **channel_users_modes, - uint32 *channel_users_modes_c, + SilcUInt32 *channel_users_modes_c, SilcBuffer **channel_topics, SilcChannelID ***channel_ids, unsigned long creation_time); @@ -207,22 +202,23 @@ void silc_server_get_users_on_channel(SilcServer server, SilcChannelEntry channel, SilcBuffer *user_list, SilcBuffer *mode_list, - uint32 *user_count); + SilcUInt32 *user_count); void silc_server_save_users_on_channel(SilcServer server, SilcSocketConnection sock, SilcChannelEntry channel, SilcClientID *noadd, SilcBuffer user_list, SilcBuffer mode_list, - uint32 user_count); + SilcUInt32 user_count); SilcSocketConnection silc_server_get_client_route(SilcServer server, unsigned char *id_data, - uint32 id_len, + SilcUInt32 id_len, SilcClientID *client_id, SilcIDListData *idata); SilcBuffer silc_server_get_client_channel_list(SilcServer server, SilcClientEntry client); SilcClientEntry silc_server_get_client_resolve(SilcServer server, - SilcClientID *client_id); + SilcClientID *client_id, + bool *resolved); #endif