#endif
#endif
-#define MESH_TUNNEL_OPT_NOBUFFER 0x2
-
-
/******************************************************************************/
/******************** MESH NETWORK MESSAGES **************************/
/******************************************************************************/
uint32_t tid GNUNET_PACKED;
/**
- * Tunnel options (MESH_TUNNEL_OPT_*).
+ * Tunnel options (GNUNET_MESH_OPTION_*).
*/
uint32_t opt GNUNET_PACKED;
uint32_t ttl GNUNET_PACKED;
/**
- * Unique ID of the packet
+ * ID of the packet
*/
uint32_t pid GNUNET_PACKED;
*/
struct GNUNET_PeerIdentity oid;
+ /**
+ * Unique ID of the payload message
+ */
+ uint64_t mid GNUNET_PACKED;
+
/**
* Payload follows
*/
};
+/**
+ * Message to acknowledge end-to-end data.
+ */
+struct GNUNET_MESH_DataACK
+{
+ /**
+ * Type: GNUNET_MESSAGE_TYPE_MESH_DATA_ACK
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * TID of the tunnel
+ */
+ uint32_t tid GNUNET_PACKED;
+
+ /**
+ * OID of the tunnel
+ */
+ struct GNUNET_PeerIdentity oid;
+
+ /**
+ * Last message ID received.
+ */
+ uint64_t mid GNUNET_PACKED;
+
+ /**
+ * Bitfield of already-received newer messages // TODO implement and use
+ * pid + 1 @ LSB
+ * pid + 32 @ MSB
+ */
+ uint32_t futures GNUNET_PACKED;
+};
+
+
/**
* Message to acknowledge mesh data traffic.
*/
/**
* Maximum packet ID authorized.
*/
- uint32_t pid;
-
+ uint32_t pid GNUNET_PACKED;
};
+
/**
* Message to query a peer about its Flow Control status regarding a tunnel.
*/
* OID of the tunnel
*/
struct GNUNET_PeerIdentity oid;
+
+ /**
+ * Last packet sent.
+ */
+ uint32_t pid GNUNET_PACKED;
};
/**