*/
/**
- * @file mesh/mesh.c
+ * @file mesh/mesh_common.c
* @brief MESH helper functions
* @author Bartlomiej Polot
*/
#include "mesh.h"
+
+int
+GMC_is_pid_bigger (uint32_t bigger, uint32_t smaller)
+{
+ return (GNUNET_YES == PID_OVERFLOW (smaller, bigger) ||
+ (bigger > smaller && GNUNET_NO == PID_OVERFLOW (bigger, smaller)));
+}
+
+
+uint32_t
+GMC_max_pid (uint32_t a, uint32_t b)
+{
+ if (GMC_is_pid_bigger(a, b))
+ return a;
+ return b;
+}
+
+
+uint32_t
+GMC_min_pid (uint32_t a, uint32_t b)
+{
+ if (GMC_is_pid_bigger(a, b))
+ return b;
+ return a;
+}
+
+
#if !defined(GNUNET_CULL_LOGGING)
const char *
GNUNET_MESH_DEBUG_M2S (uint16_t m)
/**
* Request the creation of a path
*/
- case 256: return "GNUNET_MESSAGE_TYPE_MESH_PATH_CREATE"; break;
+ case 256: return "GNUNET_MESSAGE_TYPE_MESH_CONNECTION_CREATE";
/**
* Request the modification of an existing path
*/
- case 257: return "GNUNET_MESSAGE_TYPE_MESH_PATH_CHANGE"; break;
+ case 257: return "GNUNET_MESSAGE_TYPE_MESH_CONNECTION_ACK";
/**
* Notify that a connection of a path is no longer valid
*/
- case 258: return "GNUNET_MESSAGE_TYPE_MESH_PATH_BROKEN"; break;
+ case 258: return "GNUNET_MESSAGE_TYPE_MESH_CONNECTION_BROKEN";
/**
* At some point, the route will spontaneously change
*/
- case 259: return "GNUNET_MESSAGE_TYPE_MESH_PATH_CHANGED"; break;
+ case 259: return "GNUNET_MESSAGE_TYPE_MESH_PATH_CHANGED";
/**
- * Transport data in the mesh (origin->end) unicast
+ * Transport payload data.
*/
- case 260: return "GNUNET_MESSAGE_TYPE_MESH_UNICAST"; break;
+ case 260: return "GNUNET_MESSAGE_TYPE_MESH_DATA";
+
+ /**
+ * Confirm receipt of payload data.
+ */
+ case 261: return "GNUNET_MESSAGE_TYPE_MESH_DATA_ACK";
/**
- * Transport data to all peers in a tunnel
+ * Key exchange encapsulation.
*/
- case 261: return "GNUNET_MESSAGE_TYPE_MESH_MULTICAST"; break;
+ case 262: return "GNUNET_MESSAGE_TYPE_MESH_KX";
/**
- * Transport data back in the mesh (end->origin)
+ * New ephemeral key.
*/
- case 262: return "GNUNET_MESSAGE_TYPE_MESH_TO_ORIGIN"; break;
+ case 263: return "GNUNET_MESSAGE_TYPE_MESH_KX_EPHEMERAL";
/**
- * Send origin an ACK that the path is complete
+ * Challenge to test peer's session key.
*/
- case 263: return "GNUNET_MESSAGE_TYPE_MESH_PATH_ACK"; break;
+ case 264: return "GNUNET_MESSAGE_TYPE_MESH_KX_PING";
/**
- * Avoid path timeouts
+ * Answer to session key challenge.
*/
- case 264: return "GNUNET_MESSAGE_TYPE_MESH_PATH_KEEPALIVE"; break;
+ case 265: return "GNUNET_MESSAGE_TYPE_MESH_KX_PONG";
/**
* Request the destuction of a path
*/
- case 265: return "GNUNET_MESSAGE_TYPE_MESH_PATH_DESTROY"; break;
+ case 266: return "GNUNET_MESSAGE_TYPE_MESH_CONNECTION_DESTROY";
/**
* Request the destruction of a whole tunnel
*/
- case 266: return "GNUNET_MESSAGE_TYPE_MESH_TUNNEL_DESTROY"; break;
+ case 267: return "GNUNET_MESSAGE_TYPE_MESH_TUNNEL_DESTROY";
/**
* ACK for a data packet.
*/
- case 267: return "GNUNET_MESSAGE_TYPE_MESH_ACK"; break;
+ case 268: return "GNUNET_MESSAGE_TYPE_MESH_ACK";
/**
- * Connect to the mesh service, specifying subscriptions
+ * POLL for ACK.
*/
- case 272: return "GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT"; break;
+ case 269: return "GNUNET_MESSAGE_TYPE_MESH_POLL";
/**
- * Ask the mesh service to create a new tunnel
- */
- case 273: return "GNUNET_MESSAGE_TYPE_MESH_LOCAL_TUNNEL_CREATE"; break;
-
- /**
- * Ask the mesh service to destroy a tunnel
- */
- case 274: return "GNUNET_MESSAGE_TYPE_MESH_LOCAL_TUNNEL_DESTROY"; break;
-
- /**
- * Ask the mesh service to add a peer to an existing tunnel
+ * Announce origin is still alive.
*/
- case 275: return "GNUNET_MESSAGE_TYPE_MESH_LOCAL_PEER_ADD"; break;
+ case 270: return "GNUNET_MESSAGE_TYPE_MESH_FWD_KEEPALIVE";
/**
- * Ask the mesh service to remove a peer from a tunnel
+ * Announce destination is still alive.
*/
- case 276: return "GNUNET_MESSAGE_TYPE_MESH_LOCAL_PEER_DEL"; break;
+ case 271: return "GNUNET_MESSAGE_TYPE_MESH_BCK_KEEPALIVE";
- /**
- * Ask the mesh service to add a peer offering a service to an existing tunnel
+ /**
+ * Connect to the mesh service, specifying subscriptions
*/
- case 277: return "GNUNET_MESSAGE_TYPE_MESH_LOCAL_PEER_ADD_BY_TYPE"; break;
+ case 272: return "GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT";
/**
- * Ask the mesh service to add a peer described by a service string
+ * Ask the mesh service to create a new tunnel
*/
- case 278: return "GNUNET_MESSAGE_TYPE_MESH_LOCAL_ANNOUNCE_REGEX"; break;
+ case 273: return "GNUNET_MESSAGE_TYPE_MESH_CHANNEL_CREATE";
/**
- * Ask the mesh service to add a peer described by a service string
+ * Ask the mesh service to destroy a tunnel
*/
- case 279: return "GNUNET_MESSAGE_TYPE_MESH_LOCAL_PEER_ADD_BY_STRING"; break;
+ case 274: return "GNUNET_MESSAGE_TYPE_MESH_CHANNEL_DESTROY";
/**
- * Ask the mesh service to add a peer to the blacklist of an existing tunnel
+ * Confirm the creation of a channel.
*/
- case 280: return "GNUNET_MESSAGE_TYPE_MESH_LOCAL_PEER_BLACKLIST"; break;
+ case 275: return "GNUNET_MESSAGE_TYPE_MESH_CHANNEL_ACK";
/**
- * Ask the mesh service to remove a peer from the blacklist of a tunnel
+ * Confirm the creation of a channel.
*/
- case 281: return "GNUNET_MESSAGE_TYPE_MESH_LOCAL_PEER_UNBLACKLIST"; break;
+ case 276: return "GNUNET_MESSAGE_TYPE_MESH_CHANNEL_NACK";
/**
- * Set tunnel speed to slowest peer
+ * Encrypted payload.
*/
- case 282: return "GNUNET_MESSAGE_TYPE_MESH_LOCAL_TUNNEL_MIN"; break;
+ case 280: return "GNUNET_MESSAGE_TYPE_MESH_ENCRYPTED";
/**
- * Set tunnel speed to fastest peer
+ * Local payload traffic
*/
- case 283: return "GNUNET_MESSAGE_TYPE_MESH_LOCAL_TUNNEL_MAX"; break;
+ case 285: return "GNUNET_MESSAGE_TYPE_MESH_LOCAL_DATA";
/**
- * Set tunnel buffering on.
+ * Local ACK for data.
*/
- case 284: return "GNUNET_MESSAGE_TYPE_MESH_LOCAL_TUNNEL_BUFFER"; break;
+ case 286: return "GNUNET_MESSAGE_TYPE_MESH_LOCAL_ACK";
/**
- * Set tunnel buffering off.
+ * Local monitoring of service.
*/
- case 285: return "GNUNET_MESSAGE_TYPE_MESH_LOCAL_TUNNEL_NOBUFFER"; break;
+ case 287: return "GNUNET_MESSAGE_TYPE_MESH_LOCAL_INFO_TUNNELS";
/**
- * Local ACK for data.
+ * Local monitoring of service of a specific tunnel.
*/
- case 286: return "GNUNET_MESSAGE_TYPE_MESH_LOCAL_ACK"; break;
+ case 288: return "GNUNET_MESSAGE_TYPE_MESH_LOCAL_INFO_TUNNEL";
/**
* 640kb should be enough for everybody
*/
- case 299: return "GNUNET_MESSAGE_TYPE_MESH_RESERVE_END"; break;
+ case 299: return "GNUNET_MESSAGE_TYPE_MESH_RESERVE_END";
}
sprintf(buf, "%u (UNKNOWN TYPE)", m);
return buf;