WiP (adding paths)
[oweals/gnunet.git] / src / mesh / mesh.h
index c40f08325cded7c5009ac2eaa2c9bb412ec95f97..bbfad3225f56c9e26fd5ca8885b45e5b7cd246d8 100644 (file)
@@ -39,7 +39,7 @@
  * 
  * API CALL (GNUNET_MESH_*)             MESSAGE USED
  * ------------------------             ------------
- * connect                              None (Header + [types])
+ * connect                              GNUNET_MESH_ClientConnect
  * disconnect                           None (network level disconnect)
  *
  * tunnel_create                        GNUNET_MESH_TunnelMessage
  * EVENT                                MESSAGE USED
  * -----                                ------------
  * notify_transmit_ready reply          GNUNET_MESH_TransmitReady
- * notify_transmit_ready data           GNUNET_MESH_Data or
+ * notify_transmit_ready data           GNUNET_MESH_Data OR
  *                                      GNUNET_MESH_DataBroadcast
  * new incoming tunnel                  GNUNET_MESH_PeerControl
  * peer connects to a tunnel            GNUNET_MESH_PeerControl
  * peer disconnects from a tunnel       GNUNET_MESH_PeerControl
  */
 
+/******************************************************************************/
+/**************************       CONSTANTS      ******************************/
+/******************************************************************************/
+
+#define GNUNET_MESH_LOCAL_TUNNEL_ID_MARK 0x80000000
+
+
+/******************************************************************************/
+/**************************        MESSAGES      ******************************/
+/******************************************************************************/
+
+/**
+ * Message for a client to register to the service
+ */
+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
+     */
+    struct GNUNET_MessageHeader header;
+    uint16_t                    types           GNUNET_PACKED;
+    uint16_t                    applications    GNUNET_PACKED;
+    /* uint16_t                 list_types[types]           */
+    /* uint16_t                 list_apps[applications]     */
+};
+
+
 /**
  * Type for tunnel numbering.
  * - Local tunnel numbers are >= 0x80000000
  * - Global tunnel numbers are < 0x80000000
  */
-typedef uint32_t MESH_TunnelID;
+typedef uint32_t MESH_TunnelNumber;
 
 /**
  * Message for a client to create and destroy tunnels.
@@ -85,7 +115,7 @@ struct GNUNET_MESH_TunnelMessage {
     /**
      * ID of a tunnel controlled by this client.
      */
-    MESH_TunnelID               tunnel_id GNUNET_PACKED;
+    MESH_TunnelNumber           tunnel_id GNUNET_PACKED;
 };
 
 /**
@@ -111,7 +141,7 @@ struct GNUNET_MESH_PeerControl {
   /**
    * ID of a tunnel controlled by this client.
    */
-   MESH_TunnelID                tunnel_id GNUNET_PACKED;
+   MESH_TunnelNumber            tunnel_id GNUNET_PACKED;
   
   /**
    * Peer to connect/disconnect.
@@ -132,7 +162,7 @@ struct GNUNET_MESH_ConnectPeerByType {
   /**
    * ID of a tunnel controlled by this client.
    */
-   MESH_TunnelID                tunnel_id GNUNET_PACKED;
+   MESH_TunnelNumber            tunnel_id GNUNET_PACKED;
  
   /**
    * Type specification 
@@ -155,7 +185,7 @@ struct GNUNET_MESH_TransmitReady {
     /**
      * ID of a tunnel controlled by this client.
      */
-    MESH_TunnelID               tunnel_id GNUNET_PACKED;
+    MESH_TunnelNumber           tunnel_id GNUNET_PACKED;
 
     /**
      * Size of message we would like to transmit to this tunnel
@@ -178,7 +208,7 @@ struct GNUNET_MESH_Data {
     /**
      * ID of a tunnel controlled by this client.
      */
-    MESH_TunnelID               tunnel_id GNUNET_PACKED;
+    MESH_TunnelNumber           tunnel_id GNUNET_PACKED;
 
     /**
      * Source or destination of the message (depending on direction).
@@ -202,7 +232,7 @@ struct GNUNET_MESH_DataBroadcast {
     /**
      * ID of a tunnel controlled by this client.
      */
-    MESH_TunnelID               tunnel_id GNUNET_PACKED;
+    MESH_TunnelNumber           tunnel_id GNUNET_PACKED;
 
     /* uint8_t data[] */
 };