typedef uint32_t MESH_ChannelNumber;
+/**
+ * Hash to be used in Mesh communication. Only 256 bits needed,
+ * instead of the 512 from @c GNUNET_HashCode.
+ *
+ */
+struct GNUNET_MeshHash
+{
+ unsigned char bits[256 / 8];
+};
+
+
/**
* Message for a client to create and destroy channels.
*/
struct GNUNET_MESH_LocalInfo
{
/**
- * Type: GNUNET_MESSAGE_TYPE_MESH_LOCAL_INFO[_TUNNEL]
+ * Type: GNUNET_MESSAGE_TYPE_MESH_LOCAL_INFO[_TUNNEL,_PEER]
*/
struct GNUNET_MessageHeader header;
struct GNUNET_PeerIdentity peer;
};
+
+/**
+ * Message to inform the client about one of the peers in the service.
+ */
+struct GNUNET_MESH_LocalInfoPeer
+{
+ /**
+ * Type: GNUNET_MESSAGE_TYPE_MESH_LOCAL_INFO_PEER[S]
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * Number of paths.
+ */
+ uint16_t paths GNUNET_PACKED;
+
+ /**
+ * Do we have a tunnel toward this peer?
+ */
+ int16_t tunnel GNUNET_PACKED;
+
+ /**
+ * ID of the destination of the tunnel (can be local peer).
+ */
+ struct GNUNET_PeerIdentity destination;
+
+ /* If type == PEER (no 'S'): GNUNET_PeerIdentity paths[]
+ * (each path ends in destination) */
+};
+
/**
* Message to inform the client about one of the tunnels in the service.
*/
GM_min_pid (uint32_t a, uint32_t b);
+/**
+ * Convert a 256 bit MeshHash into a 512 HashCode to use in GNUNET_h2s,
+ * multihashmap, and other HashCode-based functions.
+ *
+ * @param id A 256 bit hash to expand.
+ *
+ * @return A HashCode containing the original 256 bit hash right-padded with 0.
+ */
+const struct GNUNET_HashCode *
+GM_h2hc (const struct GNUNET_MeshHash *id);
+
/**
* Convert a message type into a string to help debug
* Generated with: