updates.
[silc.git] / apps / silcd / idlist.h
index 0ab6c3acff221b35eecb079f2571585c9e57d4ed..d018bd10b6d29c5b52013b140f0614244a5cdc54 100644 (file)
@@ -4,7 +4,7 @@
 
   Author: Pekka Riikonen <priikone@poseidon.pspt.fi>
 
-  Copyright (C) 1997 - 2000 Pekka Riikonen
+  Copyright (C) 1997 - 2001 Pekka Riikonen
 
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -53,7 +53,6 @@ typedef struct {
   SilcPKCS pkcs;
   SilcPublicKey public_key;
 
-  unsigned short cmd_ident;  /* Current command identifier, 0 not used */
   long last_receive;         /* Time last received data */
   long last_sent;           /* Time last sent data */
   unsigned char registered;  /* Boolean whether connection is registered */
@@ -362,6 +361,10 @@ struct SilcClientEntryStruct {
        Current initial vector. Initial vector is received always along
        with the channel packet. By default this is filled with NULL.
 
+   SilcHmac hmac;
+
+       HMAC of the channel.
+
 */
 struct SilcChannelEntryStruct {
   char *channel_name;
@@ -392,6 +395,7 @@ struct SilcChannelEntryStruct {
   unsigned char *key;
   unsigned int key_len;
   unsigned char iv[SILC_CIPHER_MAX_IV_SIZE];
+  SilcHmac hmac;
 };
 
 /* 
@@ -464,6 +468,12 @@ SilcServerEntry
 silc_idlist_find_server_by_id(SilcIDList id_list, SilcServerID *id,
                              SilcIDCacheEntry *ret_entry);
 SilcServerEntry
+silc_idlist_find_server_by_name(SilcIDList id_list, char *name,
+                               SilcIDCacheEntry *ret_entry);
+SilcServerEntry
+silc_idlist_find_server_by_conn(SilcIDList id_list, char *hostname,
+                               int port, SilcIDCacheEntry *ret_entry);
+SilcServerEntry
 silc_idlist_replace_server_id(SilcIDList id_list, SilcServerID *old_id,
                              SilcServerID *new_id);
 void silc_idlist_del_server(SilcIDList id_list, SilcServerEntry entry);
@@ -471,7 +481,7 @@ SilcClientEntry
 silc_idlist_add_client(SilcIDList id_list, unsigned char *nickname, 
                       char *username, char *userinfo, SilcClientID *id, 
                       SilcServerEntry router, void *connection);
-void silc_idlist_del_client(SilcIDList id_list, SilcClientEntry entry);
+int silc_idlist_del_client(SilcIDList id_list, SilcClientEntry entry);
 SilcClientEntry *
 silc_idlist_get_clients_by_nickname(SilcIDList id_list, char *nickname,
                                    char *server, unsigned int *clients_count);
@@ -495,13 +505,16 @@ silc_idlist_replace_client_id(SilcIDList id_list, SilcClientID *old_id,
 SilcChannelEntry
 silc_idlist_add_channel(SilcIDList id_list, char *channel_name, int mode,
                        SilcChannelID *id, SilcServerEntry router,
-                       SilcCipher channel_key);
-void silc_idlist_del_channel(SilcIDList id_list, SilcChannelEntry entry);
+                       SilcCipher channel_key, SilcHmac hmac);
+int silc_idlist_del_channel(SilcIDList id_list, SilcChannelEntry entry);
 SilcChannelEntry
 silc_idlist_find_channel_by_name(SilcIDList id_list, char *name,
                                 SilcIDCacheEntry *ret_entry);
 SilcChannelEntry
 silc_idlist_find_channel_by_id(SilcIDList id_list, SilcChannelID *id,
                               SilcIDCacheEntry *ret_entry);
+SilcChannelEntry
+silc_idlist_replace_channel_id(SilcIDList id_list, SilcChannelID *old_id,
+                              SilcChannelID *new_id);
 
 #endif