X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=apps%2Fsilcd%2Fserver_internal.h;h=0f4e14b43c4c35ff945f093ceea53413eb749732;hp=35eb1d8986a2b7977d26af7e665dc8a7041bb941;hb=382d15d447b7a95390decfa783836ae4fe255b3d;hpb=9cca2bb4ed4a0f11e8250c49799f555e8dfacd45 diff --git a/apps/silcd/server_internal.h b/apps/silcd/server_internal.h index 35eb1d89..0f4e14b4 100644 --- a/apps/silcd/server_internal.h +++ b/apps/silcd/server_internal.h @@ -85,6 +85,8 @@ struct SilcServerStruct { unsigned int backup_router : 1; /* Set if this is backup router */ unsigned int backup_primary : 1; /* Set if we've switched our primary router to a backup router. */ + unsigned int backup_noswitch: 1; /* Set if we've won't switch to + become primary (we are backup) */ unsigned int wait_backup : 1; /* Set if we are waiting for backup router to connect to us. */ unsigned int server_shutdown: 1; /* Set when shutting down */ @@ -118,10 +120,6 @@ struct SilcServerStruct { SilcHash md5hash; SilcHash sha1hash; - /* HMAC objects for MAC's. */ - SilcHmac md5hmac; - SilcHmac sha1hmac; - /* Configuration object */ SilcServerConfig config; SilcServerConfigRef config_ref; @@ -146,20 +144,17 @@ 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; SilcUInt32 failure; } *SilcServerFailureContext; +/* Rekey must be performed at the lastest when this many packets is sent */ +#define SILC_SERVER_REKEY_THRESHOLD 0xfffffe00 + /* Macros */ /* Return pointer to the primary router connection */ @@ -185,14 +180,15 @@ do { \ SILC_TASK_PRI_NORMAL); \ } while(0) -#define SILC_SET_CONNECTION_FOR_INPUT(s, fd) \ -do { \ - silc_schedule_set_listen_fd((s), (fd), SILC_TASK_READ); \ +#define SILC_SET_CONNECTION_FOR_INPUT(s, fd) \ +do { \ + silc_schedule_set_listen_fd((s), (fd), SILC_TASK_READ, FALSE); \ } while(0) -#define SILC_SET_CONNECTION_FOR_OUTPUT(s, fd) \ -do { \ - silc_schedule_set_listen_fd((s), (fd), (SILC_TASK_READ | SILC_TASK_WRITE)); \ +#define SILC_SET_CONNECTION_FOR_OUTPUT(s, fd) \ +do { \ + silc_schedule_set_listen_fd((s), (fd), (SILC_TASK_READ | SILC_TASK_WRITE), \ + FALSE); \ } while(0) #define SILC_OPER_STATS_UPDATE(c, type, mod) \ @@ -235,6 +231,8 @@ do { \ /* Prototypes */ SILC_TASK_CALLBACK_GLOBAL(silc_server_rekey_final); +SILC_TASK_CALLBACK_GLOBAL(silc_server_rekey_callback); +SILC_TASK_CALLBACK_GLOBAL(silc_server_connect_to_router); void silc_server_watcher_list_destroy(void *key, void *context, void *user_context);