* Channel options.
* Second line indicates filed in the MeshChannelInfo union carrying the answer.
*/
-enum MeshOption
+enum GNUNET_MESH_ChannelOption
{
/**
* Default options: unreliable, default buffering, not out of order.
* Method called whenever another peer has added us to a channel
* the other peer initiated.
* Only called (once) upon reception of data with a message type which was
- * subscribed to in #GNUNET_MESH_connect. A call to #GNUNET_MESH_channel_destroy
- * causes te channel to be ignored and no further notifications are sent about
- * the same channel.
+ * subscribed to in #GNUNET_MESH_connect.
+ *
+ * A call to #GNUNET_MESH_channel_destroy causes te channel to be ignored. In
+ * this case the handler MUST return NULL.
*
* @param cls closure
* @param channel new handle to the channel
GNUNET_PeerIdentity
* initiator,
uint32_t port,
- enum MeshOption
+ enum GNUNET_MESH_ChannelOption
options);
void *channel_ctx,
const struct GNUNET_PeerIdentity *peer,
uint32_t port,
- enum MeshOption options);
+ enum GNUNET_MESH_ChannelOption options);
/**
*/
const union GNUNET_MESH_ChannelInfo *
GNUNET_MESH_channel_get_info (struct GNUNET_MESH_Channel *channel,
- enum MeshOption option, ...);
+ enum GNUNET_MESH_ChannelOption option, ...);
/**
* @param target other endpoint of the channel
*/
typedef void (*GNUNET_MESH_ChannelsCB) (void *cls,
- uint32_t channel_number,
+ uint32_t root_channel_number,
+ uint32_t dest_channel_number,
+ uint32_t public_channel_number,
const struct GNUNET_PeerIdentity *origin,
const struct GNUNET_PeerIdentity *target);
const struct GNUNET_PeerIdentity *parent);
+/**
+ * Method called to retrieve information about all tunnels in MESH, called
+ * once per tunnel.
+ *
+ * After last tunnel has been reported, an additional call with NULL is done.
+ *
+ * @param cls Closure.
+ * @param peer Destination peer, or NULL on "EOF".
+ * @param channels Number of channels.
+ * @param connections Number of connections.
+ * @param estate Encryption state.
+ * @param cstate Connectivity state.
+ */
+typedef void (*GNUNET_MESH_TunnelsCB) (void *cls,
+ const struct GNUNET_PeerIdentity *peer,
+ unsigned int channels,
+ unsigned int connections,
+ uint16_t estate,
+ uint16_t cstate);
+
+
+
+/**
+ * Method called to retrieve information about a specific tunnel the mesh peer
+ * has established, o`r is trying to establish.
+ *
+ * @param cls Closure.
+ * @param peer Peer towards whom the tunnel is directed.
+ * @param channels Number of channels.
+ * @param connections Number of connections.
+ * @param estate Encryption state.
+ * @param cstate Connectivity state.
+ */
+typedef void (*GNUNET_MESH_TunnelCB) (void *cls,
+ const struct GNUNET_PeerIdentity *peer,
+ unsigned int channels,
+ unsigned int connections,
+ unsigned int estate,
+ unsigned int cstate);
+
+
/**
* Request information about the running mesh peer.
* The callback will be called for every channel known to the service,
*/
void
GNUNET_MESH_get_channels (struct GNUNET_MESH_Handle *h,
- GNUNET_MESH_ChannelsCB callback,
- void *callback_cls);
+ GNUNET_MESH_ChannelsCB callback,
+ void *callback_cls);
/**
* WARNING: unstable API, likely to change in the future!
*
* @param h Handle to the mesh peer.
- * @param initiator ID of the owner of the channel.
+ * @param peer ID of the other end of the channel.
* @param channel_number Channel number.
* @param callback Function to call with the requested data.
* @param callback_cls Closure for @c callback.
*/
void
-GNUNET_MESH_show_channel (struct GNUNET_MESH_Handle *h,
- struct GNUNET_PeerIdentity *initiator,
+GNUNET_MESH_get_channel (struct GNUNET_MESH_Handle *h,
+ struct GNUNET_PeerIdentity *peer,
uint32_t channel_number,
GNUNET_MESH_ChannelCB callback,
void *callback_cls);
GNUNET_MESH_get_channels_cancel (struct GNUNET_MESH_Handle *h);
+/**
+ * Request information about the running mesh peer.
+ * The callback will be called for every channel known to the service,
+ * listing all active peers that blong to the channel.
+ *
+ * If called again on the same handle, it will overwrite the previous
+ * callback and cls. To retrieve the cls, monitor_cancel must be
+ * called first.
+ *
+ * WARNING: unstable API, likely to change in the future!
+ *
+ * @param h Handle to the mesh peer.
+ * @param callback Function to call with the requested data.
+ * @param callback_cls Closure for @c callback.
+ */
+void
+GNUNET_MESH_get_tunnels (struct GNUNET_MESH_Handle *h,
+ GNUNET_MESH_TunnelsCB callback,
+ void *callback_cls);
+
+/**
+ * Cancel a monitor request. The monitor callback will not be called.
+ *
+ * @param h Mesh handle.
+ *
+ * @return Closure given to GNUNET_MESH_monitor, if any.
+ */
+void *
+GNUNET_MESH_get_tunnels_cancel (struct GNUNET_MESH_Handle *h);
+
+/**
+ * Request information about the running mesh peer.
+ * The callback will be called for every channel known to the service,
+ * listing all active peers that blong to the channel.
+ *
+ * If called again on the same handle, it will overwrite the previous
+ * callback and cls. To retrieve the cls, monitor_cancel must be
+ * called first.
+ *
+ * WARNING: unstable API, likely to change in the future!
+ *
+ * @param h Handle to the mesh peer.
+ * @param callback Function to call with the requested data.
+ * @param callback_cls Closure for @c callback.
+ */
+void
+GNUNET_MESH_get_tunnel (struct GNUNET_MESH_Handle *h,
+ const struct GNUNET_PeerIdentity *id,
+ GNUNET_MESH_TunnelCB callback,
+ void *callback_cls);
+
/**
* Create a message queue for a mesh channel.
* The message queue can only be used to transmit messages,