Fixed KILLED notify handling in normal server.
[silc.git] / apps / silcd / idlist.h
index 888e509b804a2ae3ad54514046664807552f3106..d7be279188c14c3195cd86e165c9ab2fbbd1b4ee 100644 (file)
@@ -63,6 +63,7 @@ typedef SilcUInt8 SilcIDListStatus;
                                                   with WHOIS or IDENTIFY */
 #define SILC_IDLIST_STATUS_DISABLED     0x08    /* Entry is disabled */
 #define SILC_IDLIST_STATUS_RESUMED      0x10    /* Entry is resumed */
+#define SILC_IDLIST_STATUS_LOCAL        0x20    /* Entry locally connected */
 
 /*
    Generic ID list data structure.
@@ -415,14 +416,10 @@ struct SilcClientEntryStruct {
        the cipher to be used. This can be set at SILC_COMMAND_JOIN.
 
    SilcPublicKey founder_key
-   SilcAuthMethod founder_method
-   unsigned char *founder_passwd
-   SilcUInt32 founder_passwd_len
 
-       If the SILC_CMODE_FOUNDER_AUTH has been set then these will include
-       the founder's public key, authentication method and the password
-       if the method is SILC_AUTH_PASSWORD.  If it is SILC_AUTH_PUBLIC_KEY
-       then the `founder_passwd' is NULL.
+       If the SILC_CMODE_FOUNDER_AUTH has been set then this will include
+       the founder's public key.  When the mode and this key is set the
+       channel is also permanent channel and cannot be destroyed.
 
    SilcHashTable user_list
 
@@ -463,15 +460,10 @@ struct SilcChannelEntryStruct {
   char *channel_name;
   SilcUInt32 mode;
   SilcChannelID *id;
-  bool global_users;
   char *topic;
   char *cipher;
   char *hmac_name;
-
   SilcPublicKey founder_key;
-  SilcAuthMethod founder_method;
-  unsigned char *founder_passwd;
-  SilcUInt32 founder_passwd_len;
 
   SilcUInt32 user_limit;
   unsigned char *passphrase;
@@ -489,13 +481,15 @@ struct SilcChannelEntryStruct {
   SilcCipher channel_key;
   unsigned char *key;
   SilcUInt32 key_len;
-  unsigned char iv[SILC_CIPHER_MAX_IV_SIZE];
   SilcHmac hmac;
 
   SilcServerChannelRekey rekey;
-
   unsigned long created;
-  bool disabled;
+
+  /* Flags */
+  unsigned int global_users : 1;
+  unsigned int disabled : 1;
+  unsigned int users_resolved : 1;
 };
 
 /* 
@@ -597,7 +591,8 @@ SilcClientEntry
 silc_idlist_find_client_by_id(SilcIDList id_list, SilcClientID *id,
                              bool registered, SilcIDCacheEntry *ret_entry);
 SilcClientEntry
-silc_idlist_replace_client_id(SilcIDList id_list, SilcClientID *old_id,
+silc_idlist_replace_client_id(SilcServer server,
+                             SilcIDList id_list, SilcClientID *old_id,
                              SilcClientID *new_id, const char *nickname);
 void silc_idlist_client_destructor(SilcIDCache cache,
                                   SilcIDCacheEntry entry);