updates.
[silc.git] / apps / silcd / idlist.h
index bbce9ea529ef391d9e34a8a9efcacf07fdccca34..9d29d74fdfc02a0c0f054673981b31099ffd4ddb 100644 (file)
@@ -241,24 +241,21 @@ typedef struct SilcChannelClientEntryStruct {
        not allow any command to be exeucted more than once in about
        2 seconds. This is result of normal time().
 
+   char fast_command
+
+       Counter to check command bursts.  By default, up to 5 commands
+       are allowed before limiting the execution.  See command flags
+       for more detail.
+
    SilcServerEntry router
 
        This is a pointer to the server list. This is the router server whose 
        cell this client is coming from. This is used to route messages to 
        this client.
 
-   SilcCipher session_key
-
-       The actual session key established by key exchange protcol between
-       connecting parties. This is used for both encryption and decryption.
-
-   SilcPKCS pkcs
+   SilcList channels
 
-       PKCS of the client. This maybe NULL.
-
-   SilcHmac hmac
-
-       MAC key used to compute MAC's for packets. 
+       List of channels this client has joined.
 
    void *connection
 
@@ -279,6 +276,7 @@ struct SilcClientEntryStruct {
   int mode;
 
   long last_command;
+  char fast_command;
 
   /* Pointer to the router */
   SilcServerEntry router;
@@ -361,10 +359,9 @@ struct SilcClientEntryStruct {
        Current initial vector. Initial vector is received always along
        with the channel packet. By default this is filled with NULL.
 
-   char *hmac;
+   SilcHmac hmac;
 
-       HMAC of the channel.  Server only saves the name of the HMAC as
-       it never actually needs to compute the MAC.
+       HMAC of the channel.
 
 */
 struct SilcChannelEntryStruct {
@@ -396,7 +393,7 @@ struct SilcChannelEntryStruct {
   unsigned char *key;
   unsigned int key_len;
   unsigned char iv[SILC_CIPHER_MAX_IV_SIZE];
-  char *hmac;
+  SilcHmac hmac;
 };
 
 /* 
@@ -503,10 +500,12 @@ silc_idlist_find_client_by_id(SilcIDList id_list, SilcClientID *id,
 SilcClientEntry
 silc_idlist_replace_client_id(SilcIDList id_list, SilcClientID *old_id,
                              SilcClientID *new_id);
+void silc_idlist_client_destructor(SilcIDCache cache,
+                                  SilcIDCacheEntry entry);
 SilcChannelEntry
 silc_idlist_add_channel(SilcIDList id_list, char *channel_name, int mode,
                        SilcChannelID *id, SilcServerEntry router,
-                       SilcCipher channel_key, char *hmac);
+                       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,