- fix error check
[oweals/gnunet.git] / src / mesh / mesh_protocol.h
index 033276e253ab8ca0931500bd1602471f4fbc6935..e2a18b1d808d7fb7fa1c105357c556e7d9258e21 100644 (file)
@@ -35,6 +35,10 @@ extern "C"
 #endif
 #endif
 
+#define MESH_TUNNEL_OPT_SPEED_MIN       0x1
+#define MESH_TUNNEL_OPT_NOBUFFER        0x2
+
+
 /******************************************************************************/
 /********************      MESH NETWORK MESSAGES     **************************/
 /******************************************************************************/
@@ -47,7 +51,7 @@ GNUNET_NETWORK_STRUCT_BEGIN
 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)
@@ -60,6 +64,16 @@ struct GNUNET_MESH_ManipulatePath
      */
   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].
@@ -90,7 +104,7 @@ struct GNUNET_MESH_Multicast
     /**
      * Unique ID of the packet
      */
-  uint32_t mid GNUNET_PACKED;
+  uint32_t pid GNUNET_PACKED;
 
     /**
      * OID of the tunnel
@@ -118,6 +132,16 @@ struct GNUNET_MESH_Unicast
      */
   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
      */
@@ -149,6 +173,16 @@ struct GNUNET_MESH_ToOrigin
      */
   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
      */
@@ -166,12 +200,12 @@ struct GNUNET_MESH_ToOrigin
 
 
 /**
- * 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;
 
@@ -186,21 +220,19 @@ struct GNUNET_MESH_PathACK
   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;
 
@@ -217,24 +249,19 @@ struct GNUNET_MESH_PathBroken
     /**
      * 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;
 
@@ -248,17 +275,27 @@ struct GNUNET_MESH_TunnelDestroy
      */
   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;
 
@@ -272,17 +309,10 @@ struct GNUNET_MESH_SpeedNotify
      */
   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 */