X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcclient%2Fclient.h;h=7259267f1416d1e2c14161e41d36c43f82b36fb3;hb=017dec75a98209fbef49eb496c2269b0c49e736d;hp=13ebfd0bcd5824dc270e1c1e64631649f1803619;hpb=4559604b1e55af1f277b2420be645583450bb6e0;p=silc.git diff --git a/lib/silcclient/client.h b/lib/silcclient/client.h index 13ebfd0b..7259267f 100644 --- a/lib/silcclient/client.h +++ b/lib/silcclient/client.h @@ -2,7 +2,7 @@ client.h - Author: Pekka Riikonen + Author: Pekka Riikonen Copyright (C) 1997 - 2001 Pekka Riikonen @@ -44,6 +44,15 @@ typedef struct { void *context; } *SilcClientRekey; +/* Context to hold the connection authentication request callbacks that + will be called when the server has replied back to our request about + current authentication method in the session. */ +typedef struct { + SilcConnectionAuthRequest callback; + void *context; + SilcTask timeout; +} *SilcClientConnAuthRequest; + /* Connection structure used in client to associate all the important connection specific data to this structure. */ struct SilcClientConnectionStruct { @@ -121,6 +130,9 @@ struct SilcClientConnectionStruct { /* Re-key context */ SilcClientRekey rekey; + /* Authentication request context. */ + SilcClientConnAuthRequest connauth; + /* Pointer back to the SilcClient. This object is passed to the application and the actual client object is accesible through this pointer. */ SilcClient client; @@ -158,10 +170,11 @@ struct SilcClientStruct { /* All client operations that are implemented in the application. */ SilcClientOperations *ops; - /* SILC client task queues */ - SilcTaskQueue io_queue; - SilcTaskQueue timeout_queue; - SilcTaskQueue generic_queue; + /* Client Parameters */ + SilcClientParams *params; + + /* SILC client scheduler */ + SilcSchedule schedule; /* Table of connections in client. All the connection data is saved here. */ SilcClientConnection *conns; @@ -185,6 +198,9 @@ struct SilcClientStruct { /* Random Number Generator. Application should use this as its primary random number generator. */ SilcRng rng; + + /* Client version. Used to compare to remote host's version strings. */ + char *silc_client_version; }; /* Macros */ @@ -192,25 +208,24 @@ struct SilcClientStruct { /* Registers generic task for file descriptor for reading from network and writing to network. As being generic task the actual task is allocated only once and after that the same task applies to all registered fd's. */ -#define SILC_CLIENT_REGISTER_CONNECTION_FOR_IO(fd) \ -do { \ - SilcTask tmptask = silc_task_register(client->generic_queue, (fd), \ - silc_client_packet_process, \ - context, 0, 0, \ - SILC_TASK_GENERIC, \ - SILC_TASK_PRI_NORMAL); \ - silc_task_set_iotype(tmptask, SILC_TASK_WRITE); \ +#define SILC_CLIENT_REGISTER_CONNECTION_FOR_IO(fd) \ +do { \ + silc_schedule_task_add(client->schedule, (fd), \ + silc_client_packet_process, \ + context, 0, 0, \ + SILC_TASK_GENERIC, \ + SILC_TASK_PRI_NORMAL); \ } while(0) -#define SILC_CLIENT_SET_CONNECTION_FOR_INPUT(fd) \ +#define SILC_CLIENT_SET_CONNECTION_FOR_INPUT(s, fd) \ do { \ - silc_schedule_set_listen_fd((fd), (1L << SILC_TASK_READ)); \ -} while(0) \ + silc_schedule_set_listen_fd((s), (fd), SILC_TASK_READ); \ +} while(0) -#define SILC_CLIENT_SET_CONNECTION_FOR_OUTPUT(fd) \ +#define SILC_CLIENT_SET_CONNECTION_FOR_OUTPUT(s, fd) \ do { \ - silc_schedule_set_listen_fd((fd), ((1L << SILC_TASK_READ) | \ - (1L << SILC_TASK_WRITE))); \ + silc_schedule_set_listen_fd((s), (fd), (SILC_TASK_READ | \ + SILC_TASK_WRITE)); \ } while(0) /* Finds socket connection object by file descriptor */ @@ -279,10 +294,7 @@ void silc_client_remove_from_channels(SilcClient client, void silc_client_replace_from_channels(SilcClient client, SilcClientConnection conn, SilcClientEntry old, - SilcClientEntry new); -char *silc_client_chmode(uint32 mode, SilcChannelEntry channel); -char *silc_client_chumode(uint32 mode); -char *silc_client_chumode_char(uint32 mode); + SilcClientEntry newclient); void silc_client_process_failure(SilcClient client, SilcSocketConnection sock, SilcPacketContext *packet); @@ -295,14 +307,8 @@ void silc_client_notify_by_server(SilcClient client, void silc_client_private_message(SilcClient client, SilcSocketConnection sock, SilcPacketContext *packet); +void silc_client_connection_auth_request(SilcClient client, + SilcSocketConnection sock, + SilcPacketContext *packet); -void silc_client_packet_send_flush(SilcClient client, - SilcSocketConnection sock, - SilcPacketType type, - void *dst_id, - SilcIdType dst_id_type, - SilcCipher cipher, - SilcHmac hmac, - unsigned char *data, - uint32 data_len); #endif