X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fmesh%2Fmesh.h;h=d8fc404e19462433a6a6180b523afaddb9810f5b;hb=1e1865f39492df814911c4448155df6b09ab802d;hp=874e29a9124a5303c81fbbb6cd142627a1f40841;hpb=734360920c83580d3d1ce2b3c4668da3816e28b2;p=oweals%2Fgnunet.git diff --git a/src/mesh/mesh.h b/src/mesh/mesh.h index 874e29a91..d8fc404e1 100644 --- a/src/mesh/mesh.h +++ b/src/mesh/mesh.h @@ -27,8 +27,16 @@ #define MESH_H_ #include -#include +#define MESH_DEBUG GNUNET_YES + + +#include "platform.h" #include "gnunet_common.h" +#include "gnunet_util_lib.h" +#include "gnunet_peer_lib.h" +#include "gnunet_core_service.h" +#include "gnunet_protocols.h" +#include /******************************************************************************/ /******************** MESH LOCAL MESSAGES *************************/ @@ -67,13 +75,18 @@ /************************** CONSTANTS ******************************/ /******************************************************************************/ -#define GNUNET_MESH_LOCAL_TUNNEL_ID_MARK 0x80000000 +#define GNUNET_MESH_LOCAL_TUNNEL_ID_CLI 0x80000000 +#define GNUNET_MESH_LOCAL_TUNNEL_ID_SERV 0xB0000000 +#define CORE_QUEUE_SIZE 10 +#define LOCAL_QUEUE_SIZE 100 /******************************************************************************/ /************************** MESSAGES ******************************/ /******************************************************************************/ +GNUNET_NETWORK_STRUCT_BEGIN + /** * Message for a client to register to the service */ @@ -83,20 +96,21 @@ struct GNUNET_MESH_ClientConnect * Type: GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT * * Size: sizeof(struct GNUNET_MESH_ClientConnect) + - * sizeof(uint16_t) * types + - * sizeof(MESH_ApplicationType) * applications + * sizeof(MESH_ApplicationType) * applications + + * sizeof(uint16_t) * types */ struct GNUNET_MessageHeader header; - uint16_t types GNUNET_PACKED; uint16_t applications GNUNET_PACKED; - /* uint16_t list_types[types] */ + uint16_t types GNUNET_PACKED; /* uint16_t list_apps[applications] */ + /* uint16_t list_types[types] */ }; /** * Type for tunnel numbering. - * - Local tunnel numbers are >= 0x80000000 + * - Local tunnel numbers given by the service (incoming) are >= 0xB0000000 + * - Local tunnel numbers given by the client (created) are >= 0x80000000 * - Global tunnel numbers are < 0x80000000 */ typedef uint32_t MESH_TunnelNumber; @@ -119,6 +133,30 @@ struct GNUNET_MESH_TunnelMessage MESH_TunnelNumber tunnel_id GNUNET_PACKED; }; + +/** + * Message for the service to let a client know about created tunnels. + */ +struct GNUNET_MESH_TunnelNotification +{ + /** + * Type: GNUNET_MESSAGE_TYPE_MESH_LOCAL_TUNNEL_CREATE + * + * Size: sizeof(struct GNUNET_MESH_TunnelMessage) + */ + struct GNUNET_MessageHeader header; + + /** + * ID of a tunnel controlled by this client. + */ + MESH_TunnelNumber tunnel_id GNUNET_PACKED; + + /** + * Peer at the other end, if any + */ + struct GNUNET_PeerIdentity peer; +}; + /** * Message for: * - request adding and deleting peers from a tunnel @@ -173,5 +211,53 @@ struct GNUNET_MESH_ConnectPeerByType */ GNUNET_MESH_ApplicationType type GNUNET_PACKED; }; +GNUNET_NETWORK_STRUCT_END + +/******************************************************************************/ +/************************ ENUMERATIONS ****************************/ +/******************************************************************************/ + +/** + * All the states a peer participating in a tunnel can be in. + */ +enum MeshPeerState +{ + /** + * Uninitialized status, should never appear in operation. + */ + MESH_PEER_INVALID, + + /** + * Peer is the root and owner of the tree + */ + MESH_PEER_ROOT, + + /** + * Peer only retransmits traffic, is not a final destination + */ + MESH_PEER_RELAY, + + /** + * Path to the peer not known yet + */ + MESH_PEER_SEARCHING, + + /** + * Request sent, not yet answered. + */ + MESH_PEER_WAITING, + + /** + * Peer connected and ready to accept data + */ + MESH_PEER_READY, + + /** + * Peer connected previosly but not responding + */ + MESH_PEER_RECONNECTING +}; + + #endif