#endif
#endif
+#define MESH_TUNNEL_OPT_SPEED_MIN 0x1
+#define MESH_TUNNEL_OPT_NOBUFFER 0x2
+
+
/******************************************************************************/
/******************** MESH NETWORK MESSAGES **************************/
/******************************************************************************/
struct GNUNET_MESH_ManipulatePath
{
/**
- * Type: GNUNET_MESSAGE_TYPE_MESH_PATH_[CREATE|CHANGE|ADD|DEL]
+ * Type: GNUNET_MESSAGE_TYPE_MESH_PATH_[CREATE|CHANGE|ADD|DESTROY]
*
* Size: sizeof(struct GNUNET_MESH_ManipulatePath) +
* path_length * sizeof (struct GNUNET_PeerIdentity)
*/
uint32_t tid GNUNET_PACKED;
+ /**
+ * Tunnel options (MESH_TUNNEL_OPT_*).
+ */
+ uint32_t opt GNUNET_PACKED;
+
+ /**
+ * 64 bit alignment padding.
+ */
+ uint32_t reserved GNUNET_PACKED;
+
/**
* path_length structs defining the *whole* path from the origin [0] to the
* final destination [path_length-1].
*/
uint32_t tid GNUNET_PACKED;
+ /**
+ * Number of hops to live
+ */
+ uint32_t ttl GNUNET_PACKED;
+
+ /**
+ * Unique ID of the packet
+ */
+ uint32_t pid GNUNET_PACKED;
+
/**
* OID of the tunnel
*/
/**
- * Message for ack'ing a path
+ * Message to acknowledge mesh data traffic.
*/
-struct GNUNET_MESH_PathACK
+struct GNUNET_MESH_ACK
{
/**
- * Type: GNUNET_MESSAGE_TYPE_MESH_PATH_ACK
+ * Type: GNUNET_MESSAGE_TYPE_MESH_ACK
*/
struct GNUNET_MessageHeader header;
struct GNUNET_PeerIdentity oid;
/**
- * ID of the endpoint
+ * Maximum packet ID authorized.
*/
- struct GNUNET_PeerIdentity peer_id;
+ uint32_t pid;
- /* TODO: signature */
};
-
/**
- * Message for notifying a disconnection in a path
+ * Message for ack'ing a path
*/
-struct GNUNET_MESH_PathBroken
+struct GNUNET_MESH_PathACK
{
/**
- * Type: GNUNET_MESSAGE_TYPE_MESH_PATH_BROKEN
+ * Type: GNUNET_MESSAGE_TYPE_MESH_PATH_ACK
*/
struct GNUNET_MessageHeader header;
/**
* ID of the endpoint
*/
- struct GNUNET_PeerIdentity peer1;
-
- /**
- * ID of the endpoint
- */
- struct GNUNET_PeerIdentity peer2;
+ struct GNUNET_PeerIdentity peer_id;
/* TODO: signature */
};
/**
- * Message to destroy a tunnel
+ * Message for notifying a disconnection in a path
*/
-struct GNUNET_MESH_TunnelDestroy
+struct GNUNET_MESH_PathBroken
{
/**
- * Type: GNUNET_MESSAGE_TYPE_MESH_TUNNEL_DESTROY
+ * Type: GNUNET_MESSAGE_TYPE_MESH_PATH_BROKEN
*/
struct GNUNET_MessageHeader header;
*/
struct GNUNET_PeerIdentity oid;
+ /**
+ * ID of the endpoint
+ */
+ struct GNUNET_PeerIdentity peer1;
+
+ /**
+ * ID of the endpoint
+ */
+ struct GNUNET_PeerIdentity peer2;
+
/* TODO: signature */
};
/**
- * Message for mesh flow control
+ * Message to destroy a tunnel
*/
-struct GNUNET_MESH_SpeedNotify
+struct GNUNET_MESH_TunnelDestroy
{
/**
- * Type: GNUNET_MESSAGE_TYPE_DATA_SPEED_NOTIFY
+ * Type: GNUNET_MESSAGE_TYPE_MESH_TUNNEL_DESTROY
*/
struct GNUNET_MessageHeader header;
*/
struct GNUNET_PeerIdentity oid;
- /**
- * Is the speed limited by the slowest peer?.
- */
- int16_t speed_min;
+ /* TODO: signature */
+};
- /**
- * Is the buffering allowed?.
- */
- int16_t buffering;
-};
GNUNET_NETWORK_STRUCT_END
#if 0 /* keep Emacsens' auto-indent happy */