+/* Forward declaration of backup server context */
+typedef struct SilcServerBackupStruct *SilcServerBackup;
+
+/* 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. */
+typedef void (*SilcServerConnectRouterCallback)(SilcServer server,
+ SilcServerEntry server_entry,
+ void *context);
+
+/* Connection structure used when connection to remote */
+typedef struct {
+ SilcSocketConnection sock;
+
+ /* Remote host name and port */
+ char *remote_host;
+ int remote_port;
+ 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 */
+ SilcUInt32 retry_count;
+ SilcUInt32 retry_timeout;
+
+ /* Back pointer to server */
+ SilcServer server;
+
+ SilcServerConnectRouterCallback callback;
+ void *callback_context;
+} *SilcServerConnection;