+/* Internal channel entry context */
+typedef struct SilcChannelEntryInternalStruct {
+ SilcRwLock lock; /* Read/write lock */
+
+ /* SilcChannelEntry status information */
+ SilcDList old_channel_keys;
+ SilcDList old_hmacs;
+
+ /* Channel private keys */
+ SilcDList private_keys; /* List of private keys or NULL */
+ SilcChannelPrivateKey curr_key; /* Current private key */
+
+ /* Channel keys */
+ SilcCipher send_key; /* The channel key */
+ SilcCipher receive_key; /* The channel key */
+ SilcHmac hmac; /* Current HMAC */
+ unsigned char iv[SILC_CIPHER_MAX_IV_SIZE]; /* Current IV */
+
+ SilcAtomic32 refcnt; /* Reference counter */
+ SilcAtomic32 deleted; /* Flag indicating whether the
+ channel object is already
+ scheduled for deletion */
+ SilcUInt16 resolve_cmd_ident; /* Channel information resolving
+ identifier. This is used when
+ resolving users, and other
+ stuff that relates to the
+ channel. Not used for the
+ channel resolving itself. */
+} SilcChannelEntryInternal;
+
+/* Internal server entry context */
+typedef struct SilcServerEntryInternalStruct {
+ SilcRwLock lock; /* Read/write lock */
+ SilcUInt16 resolve_cmd_ident; /* Resolving identifier */
+ SilcAtomic32 refcnt; /* Reference counter */
+} SilcServerEntryInternal;
+