implemented KICK command
[silc.git] / lib / silcclient / idlist.h
index 1b2d9d7b73818d5e66228933547c057fedf7af17..4b831db68c91ade45424989c0853f90e9a86256a 100644 (file)
    client entry. This entry also includes the private message keys if
    they are used. */
 typedef struct SilcClientEntryStruct {
-  char *nickname;
-  char *server;
+  char *nickname;             /* nickname */
+  char *username;            /* username[@host] */
+  char *server;                      /* SILC server name */
+  char *realname;
   unsigned int num;
   SilcClientID *id;
 
@@ -35,9 +37,14 @@ typedef struct SilcClientEntryStruct {
      with the remote client. */
   SilcCipher send_key;
   SilcCipher receive_key;
-} SilcClientEntryObject;
+} *SilcClientEntry;
 
-typedef SilcClientEntryObject *SilcClientEntry;
+/* Client and its mode on a channel */
+typedef struct SilcChannelUserStruct {
+  SilcClientEntry client;
+  unsigned int mode;
+  struct SilcChannelUserStruct *next;
+} *SilcChannelUser;
 
 /* Channel entry context. This is allocate for every channel client has
    joined to. This includes for example the channel specific keys */
@@ -49,17 +56,19 @@ typedef struct SilcChannelEntryStruct {
   unsigned int mode;
   int on_channel;
 
-  SilcClientEntry *clients;
-  unsigned int clients_count;
+  /* Joined clients */
+  SilcList clients;
 
   /* Channel keys */
   SilcCipher channel_key;
   unsigned char *key;
   unsigned int key_len;
   unsigned char iv[SILC_CIPHER_MAX_IV_SIZE];
-} SilcChannelEntryObject;
+} *SilcChannelEntry;
 
-typedef SilcChannelEntryObject *SilcChannelEntry;
+/* Command identifier used by ID list routines when sending WHOIS/IDENTIFY
+   commands to routers. */
+#define SILC_IDLIST_IDENT 3333
 
 /* Prototypes */
 
@@ -67,7 +76,11 @@ SilcClientEntry silc_idlist_get_client(SilcClient client,
                                       SilcClientConnection conn,
                                       char *nickname,
                                       char *server,
-                                      unsigned int num);
+                                      unsigned int num,
+                                      int query);
+SilcClientEntry silc_idlist_get_client_by_id(SilcClient client,
+                                            SilcClientConnection conn,
+                                            SilcClientID *client_id);
 SilcChannelEntry silc_idlist_get_channel(SilcClient client,
                                         SilcClientConnection conn,
                                         char *channel);