/* All defined packet flags */
#define SILC_PACKET_FLAG_NONE 0x00
#define SILC_PACKET_FLAG_PRIVMSG_KEY 0x01
-#define SILC_PACKET_FLAG_FORWARDED 0x02
-#define SILC_PACKET_FLAG_BROADCAST 0x04
-#define SILC_PACKET_FLAG_TUNNELED 0x08
+#define SILC_PACKET_FLAG_BROADCAST 0x02
+#define SILC_PACKET_FLAG_TUNNELED 0x04
/* Rest of flags still available
+#define SILC_PACKET_FLAG_XXX 0x08
#define SILC_PACKET_FLAG_XXX 0x10
#define SILC_PACKET_FLAG_XXX 0x20
#define SILC_PACKET_FLAG_XXX 0x40
/* Back pointers */
void *context;
SilcSocketConnection sock;
+
+ /* Reference count for this context. The context is free'd only
+ after the reference count is zero. */
+ int users;
} SilcPacketContext;
/*
#define SILC_PACKET_REMOVE_CHANNEL_USER 28 /* Remove user from channel */
#define SILC_PACKET_REKEY 29
#define SILC_PACKET_REKEY_DONE 30
+#define SILC_PACKET_SET_MODE 31 /* Set mode */
+#define SILC_PACKET_SET_MODE_LIST 32 /* List of Set Mode's */
+#define SILC_PACKET_HEARTBEAT 33 /* Heartbeat */
/* #define SILC_PACKET_MAX 255 */
/* Macros */
void *context);
SilcPacketType silc_packet_parse(SilcPacketContext *ctx);
SilcPacketType silc_packet_parse_special(SilcPacketContext *ctx);
+SilcPacketContext *silc_packet_context_alloc();
SilcPacketContext *silc_packet_context_dup(SilcPacketContext *ctx);
+void silc_packet_context_free(SilcPacketContext *ctx);
#endif