#include "platform.h"
#include "gnunet_fragmentation_lib.h"
+GNUNET_NETWORK_STRUCT_BEGIN
+
/**
- * Header for a message fragment.
+ * Header for a message fragment. Followed by the
+ * original message.
*/
struct FragmentHeader
{
+ /**
+ * Message header.
+ */
struct GNUNET_MessageHeader header;
+ /**
+ * Unique fragment ID.
+ */
+ uint32_t fragment_id;
+
+ /**
+ * Total message size of the original message.
+ */
+ uint16_t total_size;
+
+ /**
+ * Absolute offset (in bytes) of this fragment in the original
+ * message. Will be a multiple of the MTU.
+ */
+ uint16_t offset;
+
};
struct FragmentAcknowledgement
{
+ /**
+ * Message header.
+ */
struct GNUNET_MessageHeader header;
-};
+ /**
+ * Unique fragment ID.
+ */
+ uint32_t fragment_id;
+
+ /**
+ * Bits that are being acknowledged, in big-endian.
+ * (bits that are set correspond to fragments that
+ * have not yet been received).
+ */
+ uint64_t bits;
+};
+GNUNET_NETWORK_STRUCT_END
#endif