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; /* Realname (userinfo) */
unsigned int num;
- SilcClientID *id;
-
- /* Keys, these are defined if private message key has been defined
- with the remote client. */
- SilcCipher send_key;
- SilcCipher receive_key;
-} SilcClientEntryObject;
+ SilcClientID *id; /* The Client ID */
+ SilcCipher send_key; /* Private message key for sending */
+ SilcCipher receive_key; /* Private message key for receiving */
+ unsigned char *key; /* Set only if appliation provided the
+ key material. NULL if the library
+ generated the key. */
+ unsigned int key_len;
+ int generated; /* TRUE if library generated the key */
+} *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;
- 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;
-
-typedef SilcChannelEntryObject *SilcChannelEntry;
+} *SilcChannelEntry;
-/* Prototypes */
+/* Prototypes (some functions are defined in the silcapi.h) */
SilcClientEntry silc_idlist_get_client(SilcClient client,
SilcClientConnection conn,
char *nickname,
char *server,
- unsigned int num);
-SilcChannelEntry silc_idlist_get_channel(SilcClient client,
- SilcClientConnection conn,
- char *channel);
+ unsigned int num,
+ int query);
#endif