Integer type name change.
[silc.git] / apps / silcd / idlist.h
index 89b00f88b8c0ba7247f8630089cee7f37cd1d1a7..9766921f6bccc33bd186a26f2e80d6153af8f0c1 100644 (file)
@@ -31,13 +31,14 @@ typedef struct SilcChannelEntryStruct *SilcChannelEntry;
 typedef struct {
   SilcIDCache cache;
   SilcSchedule schedule;
+  SilcUInt32 timeout;
 } *SilcIDListPurge;
 
 /* Channel key re-key context. */
 typedef struct {
   void *context;
   SilcChannelEntry channel;
-  uint32 key_len;
+  SilcUInt32 key_len;
   SilcTask task;
 } *SilcServerChannelRekey;
 
@@ -46,20 +47,21 @@ typedef struct {
   /* Current sending encryption key, provided for re-key. The `pfs'
      is TRUE if the Perfect Forward Secrecy is performed in re-key. */
   unsigned char *send_enc_key;
-  uint32 enc_key_len;
+  SilcUInt32 enc_key_len;
   int ske_group;
   bool pfs;
-  uint32 timeout;
+  SilcUInt32 timeout;
   void *context;
 } *SilcServerRekey;
 
 /* ID List Entry status type and all the types. */
-typedef uint8 SilcIDListStatus;
+typedef SilcUInt8 SilcIDListStatus;
 #define SILC_IDLIST_STATUS_NONE         0x00    /* No status */
 #define SILC_IDLIST_STATUS_REGISTERED   0x01    /* Entry is registered */
 #define SILC_IDLIST_STATUS_RESOLVED     0x02    /* Entry info is resolved */
 #define SILC_IDLIST_STATUS_RESOLVING    0x04    /* Entry is being resolved
                                                   with WHOIS or IDENTIFY */
+#define SILC_IDLIST_STATUS_DISABLED     0x08    /* Entry is disabled */
 
 /*
    Generic ID list data structure.
@@ -79,22 +81,29 @@ typedef struct {
   SilcCipher send_key;
   SilcCipher receive_key;
 
-  /* Re-key context */
-  SilcServerRekey rekey;
-
-  /* Hash selected in the SKE protocol, NULL if not needed at all */
-  SilcHash hash;
-
   /* HMAC */
   SilcHmac hmac_send;
   SilcHmac hmac_receive;
 
+  /* Packet sequence numbers */
+  SilcUInt32 psn_send;
+  SilcUInt32 psn_receive;
+
+  /* Hash selected in the SKE protocol, NULL if not needed at all */
+  SilcHash hash;
+
   /* Public key */
   SilcPublicKey public_key;
+  unsigned char fingerprint[20];
+
+  /* Re-key context */
+  SilcServerRekey rekey;
 
   long last_receive;           /* Time last received data */
   long last_sent;              /* Time last sent data */
 
+  unsigned long created;       /* Time when entry was created */
+
   SilcIDListStatus status;     /* Status mask of the entry */
 } *SilcIDListData, SilcIDListDataStruct;
 
@@ -126,7 +135,7 @@ typedef struct {
        Logical name of the server. There is no limit of the length of the
        server name. This is usually the same name as defined in DNS.
 
-   uint8 server_type
+   SilcUInt8 server_type
 
        Type of the server. SILC_SERVER or SILC_ROUTER are the possible
        choices for this.
@@ -167,7 +176,7 @@ struct SilcServerEntryStruct {
   SilcIDListDataStruct data;
 
   char *server_name;
-  uint8 server_type;
+  SilcUInt8 server_type;
   SilcServerID *id;
   char *server_info;
   char *motd;
@@ -190,7 +199,7 @@ struct SilcServerEntryStruct {
 
        Pointer to the client list. This is the client currently on channel.
 
-   uint32 mode
+   SilcUInt32 mode
 
        Client's current mode on the channel.
 
@@ -203,7 +212,7 @@ struct SilcServerEntryStruct {
 */
 typedef struct SilcChannelClientEntryStruct {
   SilcClientEntry client;
-  uint32 mode;
+  SilcUInt32 mode;
   SilcChannelEntry channel;
 } *SilcChannelClientEntry;
 
@@ -275,7 +284,7 @@ typedef struct SilcChannelClientEntryStruct {
        nickname. Nickname is not relevant information that would need to be 
        saved as plain.
 
-   uint32 mode
+   SilcUInt32 mode
 
        Client's mode.  Client maybe for example server operator or
        router operator (SILC operator).
@@ -286,7 +295,7 @@ typedef struct SilcChannelClientEntryStruct {
        not allow any command to be exeucted more than once in about
        2 seconds. This is result of normal time().
 
-   uint8 fast_command
+   SilcUInt8 fast_command
 
        Counter to check command bursts.  By default, up to 5 commands
        are allowed before limiting the execution.  See command flags
@@ -311,7 +320,7 @@ typedef struct SilcChannelClientEntryStruct {
        but as just said, this is usually pointer to the socket connection
        list.
 
-   uint16 resolve_cmd_ident
+   SilcUInt16 resolve_cmd_ident
 
        Command identifier for the entry when the entry's data.status
        is SILC_IDLIST_STATUS_RESOLVING.  If this entry is asked to be
@@ -329,10 +338,10 @@ struct SilcClientEntryStruct {
   char *username;
   char *userinfo;
   SilcClientID *id;
-  uint32 mode;
+  SilcUInt32 mode;
 
   long last_command;
-  uint8 fast_command;
+  SilcUInt8 fast_command;
 
   /* Pointer to the router */
   SilcServerEntry router;
@@ -345,7 +354,7 @@ struct SilcClientEntryStruct {
 
   /* data.status is RESOLVING and this includes the resolving command 
      reply identifier. */
-  uint16 resolve_cmd_ident;
+  SilcUInt16 resolve_cmd_ident;
 };
 
 /* 
@@ -370,7 +379,7 @@ struct SilcClientEntryStruct {
 
        Logical name of the channel.
 
-   uint32 mode
+   SilcUInt32 mode
 
        Current mode of the channel.  See lib/silccore/silcchannel.h for
        all modes.
@@ -407,7 +416,7 @@ struct SilcClientEntryStruct {
    SilcPublicKey founder_key
    SilcAuthMethod founder_method
    unsigned char *founder_passwd
-   uint32 founder_passwd_len
+   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
@@ -431,7 +440,7 @@ struct SilcClientEntryStruct {
        The key of the channel (the cipher actually).
 
    unsigned char *key
-   uint32 key_len
+   SilcUInt32 key_len
 
        Raw key data of the channel key.
 
@@ -451,7 +460,7 @@ struct SilcClientEntryStruct {
 */
 struct SilcChannelEntryStruct {
   char *channel_name;
-  uint32 mode;
+  SilcUInt32 mode;
   SilcChannelID *id;
   bool global_users;
   char *topic;
@@ -461,15 +470,16 @@ struct SilcChannelEntryStruct {
   SilcPublicKey founder_key;
   SilcAuthMethod founder_method;
   unsigned char *founder_passwd;
-  uint32 founder_passwd_len;
+  SilcUInt32 founder_passwd_len;
 
-  uint32 user_limit;
+  SilcUInt32 user_limit;
   unsigned char *passphrase;
   char *invite_list;
   char *ban_list;
 
   /* All users on this channel */
   SilcHashTable user_list;
+  SilcUInt32 user_count;
 
   /* Pointer to the router */
   SilcServerEntry router;
@@ -477,11 +487,14 @@ struct SilcChannelEntryStruct {
   /* Channel keys */
   SilcCipher channel_key;
   unsigned char *key;
-  uint32 key_len;
+  SilcUInt32 key_len;
   unsigned char iv[SILC_CIPHER_MAX_IV_SIZE];
   SilcHmac hmac;
 
   SilcServerChannelRekey rekey;
+
+  unsigned long created;
+  bool disabled;
 };
 
 /* 
@@ -568,16 +581,17 @@ int silc_idlist_del_server(SilcIDList id_list, SilcServerEntry entry);
 SilcClientEntry
 silc_idlist_add_client(SilcIDList id_list, char *nickname, char *username, 
                       char *userinfo, SilcClientID *id, 
-                      SilcServerEntry router, void *connection);
+                      SilcServerEntry router, void *connection,
+                      int expire);
 int silc_idlist_del_client(SilcIDList id_list, SilcClientEntry entry);
 int silc_idlist_get_clients_by_nickname(SilcIDList id_list, char *nickname,
                                        char *server, 
                                        SilcClientEntry **clients,
-                                       uint32 *clients_count);
+                                       SilcUInt32 *clients_count);
 int silc_idlist_get_clients_by_hash(SilcIDList id_list, char *nickname,
                                    SilcHash md5hash,
                                    SilcClientEntry **clients,
-                                   uint32 *clients_count);
+                                   SilcUInt32 *clients_count);
 SilcClientEntry
 silc_idlist_find_client_by_id(SilcIDList id_list, SilcClientID *id,
                              bool registered, SilcIDCacheEntry *ret_entry);
@@ -589,7 +603,8 @@ void silc_idlist_client_destructor(SilcIDCache cache,
 SilcChannelEntry
 silc_idlist_add_channel(SilcIDList id_list, char *channel_name, int mode,
                        SilcChannelID *id, SilcServerEntry router,
-                       SilcCipher channel_key, SilcHmac hmac);
+                       SilcCipher channel_key, SilcHmac hmac,
+                       int expire);
 int silc_idlist_del_channel(SilcIDList id_list, SilcChannelEntry entry);
 SilcChannelEntry
 silc_idlist_find_channel_by_name(SilcIDList id_list, char *name,
@@ -602,6 +617,6 @@ silc_idlist_replace_channel_id(SilcIDList id_list, SilcChannelID *old_id,
                               SilcChannelID *new_id);
 SilcChannelEntry *
 silc_idlist_get_channels(SilcIDList id_list, SilcChannelID *channel_id,
-                        uint32 *channels_count);
+                        SilcUInt32 *channels_count);
 
 #endif