X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=lib%2Fsilcclient%2Fclient_internal.h;h=a297182024c827335a6caf89aa4e7ac4de015e22;hp=c7bc0434a75c36009d737df2a02bbaa251bad56f;hb=HEAD;hpb=8a6279964422ae932dcf5af1a32616cfcbde5a19 diff --git a/lib/silcclient/client_internal.h b/lib/silcclient/client_internal.h index c7bc0434..a2971820 100644 --- a/lib/silcclient/client_internal.h +++ b/lib/silcclient/client_internal.h @@ -29,6 +29,8 @@ #include "client_channel.h" #include "client_notify.h" #include "client_keyagr.h" +#include "client_ftp.h" +#include "client_listener.h" /****************************** Definitions *********************************/ @@ -47,16 +49,7 @@ typedef struct { SilcSKE ske; SilcSKEVerifyCbCompletion completion; void *completion_context; -} *VerifyKeyContext; - -/* Structure to hold away messages set by user. This is mainly created - for future extensions where away messages could be set according filters - such as nickname and hostname. For now only one away message can - be set in one connection. */ -struct SilcClientAwayStruct { - char *away; - struct SilcClientAwayStruct *next; -}; +} *SilcVerifyKeyContext; /* Command and command reply context used to hold registered commands in the SILC client. */ @@ -105,16 +98,18 @@ typedef struct SilcClientCommandContextStruct { /* Internal context for the client->internal pointer in the SilcClient. */ struct SilcClientInternalStruct { SilcFSMStruct fsm; /* Client's FSM */ - SilcFSMEventStruct wait_event; /* Event signaller */ + SilcFSMEventStruct wait_event; /* Event signaller */ SilcClientOperations *ops; /* Client operations */ SilcClientParams *params; /* Client parameters */ SilcPacketEngine packet_engine; /* Packet engine */ SilcMutex lock; /* Client lock */ SilcList commands; /* Registered commands */ + SilcDList ftp_sessions; /* FTP sessions */ char *silc_client_version; /* Version set by application */ SilcClientRunning running; /* Running/Stopped callback */ void *running_context; /* Context for runnign callback */ - SilcAtomic16 conns; /* Number of connections in client */ + SilcAtomic32 conns; /* Number of connections in client */ + SilcUInt16 next_session_id; /* Next FTP session ID */ /* Events */ unsigned int stop : 1; /* Stop client */ @@ -141,14 +136,20 @@ struct SilcClientConnectionInternalStruct { SilcAsyncOperation op; /* Protocols async operation */ SilcAsyncOperation cop; /* Async operation for application */ SilcHashTable attrs; /* Configured user attributes */ + SilcStream user_stream; /* Low level stream in connecting */ + char *disconnect_message; /* Disconnection message */ + char *away_message; /* Away message */ SilcIDCache client_cache; /* Client entry cache */ SilcIDCache channel_cache; /* Channel entry cache */ SilcIDCache server_cache; /* Server entry cache */ + SilcUInt32 remote_version; /* Remote SILC protocol version */ SilcAtomic16 cmd_ident; /* Current command identifier */ SilcUInt8 retry_count; /* Packet retry counter */ SilcUInt8 retry_timer; /* Packet retry timer */ + SilcClientConnectionStatus status; /* Connection callback status */ + SilcStatus error; /* Connection callback error */ /* Events */ unsigned int connect : 1; /* Connect remote host */ @@ -160,14 +161,7 @@ struct SilcClientConnectionInternalStruct { unsigned int verbose : 1; /* Notify application */ unsigned int registering : 1; /* Set when registering to network */ unsigned int rekey_responder : 1; /* Set when rekeying as responder */ - unsigned int callback_called : 1; /* Set when connect callback called */ unsigned int auth_request : 1; /* Set when requesting auth method */ - - SilcClientAway *away; - SilcDList ftp_sessions; - SilcUInt32 next_session_id; - SilcClientFtpSession active_session; - SilcHashTable privmsg_wait; /* Waited private messages */ }; SILC_FSM_STATE(silc_client_connection_st_run); @@ -178,29 +172,23 @@ SILC_FSM_STATE(silc_client_disconnect); SILC_FSM_STATE(silc_client_st_stop); void silc_client_del_connection(SilcClient client, SilcClientConnection conn); -SilcBool silc_client_del_client(SilcClient client, SilcClientConnection conn, - SilcClientEntry client_entry); -SilcBool silc_client_del_channel(SilcClient client, SilcClientConnection conn, - SilcChannelEntry channel); -SilcBool silc_client_del_server(SilcClient client, SilcClientConnection conn, - SilcServerEntry server); -SilcUInt16 silc_client_command_send_argv(SilcClient client, - SilcClientConnection conn, - SilcCommand command, - SilcClientCommandReply reply, - void *reply_context, - SilcUInt32 argc, - unsigned char **argv, - SilcUInt32 *argv_lens, - SilcUInt32 *argv_types); -void silc_client_command_free(SilcClientCommandContext cmd); void silc_client_fsm_destructor(SilcFSM fsm, void *fsm_context, void *destructor_context); - -void silc_client_ftp(SilcClient client, SilcClientConnection conn, - SilcPacket packet); -void silc_client_connection_auth_request(SilcClient client, - SilcClientConnection conn, - SilcPacket packet); - -#endif +void silc_client_command_free(SilcClientCommandContext cmd); +SilcClientConnection +silc_client_add_connection(SilcClient client, + SilcConnectionType conn_type, + SilcBool connect, + SilcClientConnectionParams *params, + SilcPublicKey public_key, + SilcPrivateKey private_key, + char *remote_host, int port, + SilcClientConnectCallback callback, + void *context); +void silc_client_attributes_process(SilcClient client, + SilcClientConnection conn, + SilcDList attrs, + SilcPKCSSignCb sign_cb, + void *context); + +#endif /* CLIENT_INTERNAL_H */