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;
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 */
unsigned int mode;
int on_channel;
+ /* 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 */
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);