X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fmesh%2Fmesh_protocol.h;h=2d708eb6220b11144c963eac1b525937a790b92e;hb=0f6d24a229e9149db26a4e667ed25032d19f533a;hp=d35d7141eedfec15e1592846d99cc338c37006a1;hpb=cf19b5082fe8de33e38957f54d28647635b46b60;p=oweals%2Fgnunet.git diff --git a/src/mesh/mesh_protocol.h b/src/mesh/mesh_protocol.h index d35d7141e..2d708eb62 100644 --- a/src/mesh/mesh_protocol.h +++ b/src/mesh/mesh_protocol.h @@ -35,9 +35,6 @@ extern "C" #endif #endif -#define MESH_TUNNEL_OPT_NOBUFFER 0x2 - - /******************************************************************************/ /******************** MESH NETWORK MESSAGES **************************/ /******************************************************************************/ @@ -64,7 +61,7 @@ struct GNUNET_MESH_CreateTunnel uint32_t tid GNUNET_PACKED; /** - * Tunnel options (MESH_TUNNEL_OPT_*). + * Tunnel options (GNUNET_MESH_OPTION_*). */ uint32_t opt GNUNET_PACKED; @@ -81,26 +78,6 @@ struct GNUNET_MESH_CreateTunnel /* struct GNUNET_PeerIdentity peers[path_length]; */ }; -/** - * Message for mesh path destruction. - */ -struct GNUNET_MESH_DestroyTunnel -{ - /** - * Type: GNUNET_MESSAGE_TYPE_MESH_PATH_DESTROY - * - * Size: sizeof(struct GNUNET_MESH_ManipulatePath) + - * path_length * sizeof (struct GNUNET_PeerIdentity) - */ - struct GNUNET_MessageHeader header; - - /** - * Global id of the tunnel this path belongs to, - * unique in conjunction with the origin. - */ - uint32_t tid GNUNET_PACKED; -}; - /** * Message for mesh data traffic. @@ -124,7 +101,7 @@ struct GNUNET_MESH_Data uint32_t ttl GNUNET_PACKED; /** - * Unique ID of the packet + * ID of the packet */ uint32_t pid GNUNET_PACKED; @@ -133,12 +110,51 @@ struct GNUNET_MESH_Data */ struct GNUNET_PeerIdentity oid; + /** + * Unique ID of the payload message + */ + uint32_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; + + /** + * Bitfield of already-received newer messages + * pid + 1 @ LSB + * pid + 64 @ MSB + */ + uint64_t futures GNUNET_PACKED; + + /** + * Last message ID received. + */ + uint32_t mid GNUNET_PACKED; +}; + + /** * Message to acknowledge mesh data traffic. */ @@ -162,10 +178,10 @@ struct GNUNET_MESH_ACK /** * 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. */ @@ -185,6 +201,11 @@ struct GNUNET_MESH_Poll * OID of the tunnel */ struct GNUNET_PeerIdentity oid; + + /** + * Last packet sent. + */ + uint32_t pid GNUNET_PACKED; }; /** @@ -285,15 +306,15 @@ struct GNUNET_MESH_TunnelDestroy struct GNUNET_MESH_TunnelKeepAlive { /** - * Type: GNUNET_MESSAGE_TYPE_MESH_PATH_KEEPALIVE + * Type: GNUNET_MESSAGE_TYPE_MESH_PATH_(FWD|BCK)_KEEPALIVE */ struct GNUNET_MessageHeader header; - + /** * TID of the tunnel */ uint32_t tid GNUNET_PACKED; - + /** * OID of the tunnel */