2 This file is part of GNUnet.
3 (C) 2001 - 2011 Christian Grothoff (and other contributing authors)
5 GNUnet is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published
7 by the Free Software Foundation; either version 3, or (at your
8 option) any later version.
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with GNUnet; see the file COPYING. If not, write to the
17 Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA.
22 * @author Bartlomiej Polot
30 #include <gnunet_mesh_service.h>
31 #include "gnunet_common.h"
33 /******************************************************************************/
34 /******************** MESH NETWORK MESSAGES **************************/
35 /******************************************************************************/
36 /* API CALL MESSAGE USED
37 * -------- ------------
38 * connect GNUNET_MESH_Connect
39 * disconnect None (network level disconnect)
41 * tunnel_create GNUNET_MESH_TunnelMessage
42 * tunnel_destroy GNUNET_MESH_TunnelMessage
44 * peer_request_connect_add GNUNET_MESH_ConnectPeer
45 * peer_request_connect_del GNUNET_MESH_ConnectPeer
46 * peer_request_connect_by_type GNUNET_MESH_ConnectPeerByType
48 * notify_transmit_ready GNUNET_MESH_Control
49 * notify_transmit_ready_cancel None
53 struct GNUNET_MESH_Connect {
55 * Type: GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT
57 * Size: sizeof(struct GNUNET_MESH_Connect) + messages_subscribed * sizeof (message_type)
59 struct GNUNET_MessageHeader header;
61 /* uint16_t messages_subscribed[] */
68 struct GNUNET_MESH_TunnelMessage {
70 * Type: GNUNET_MESSAGE_TYPE_MESH_LOCAL_TUNNEL_[CREATE|DESTROY]
72 struct GNUNET_MessageHeader header;
75 * ID of a tunnel controlled by this client.
77 uint32_t tunnel_id GNUNET_PACKED;
81 struct GNUNET_MESH_PeerControl {
84 * Type: GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_[ADD|DEL] (client to service, client created tunnel)
85 * Type: GNUNET_MESSAGE_TYPE_MESH_LOCAL_TUNNEL_NOTIFY[CONNECT|DISCONNECT] (service to client)
87 * Size: sizeof(struct GNUNET_MESH_PeerControl)
89 struct GNUNET_MessageHeader header;
92 * ID of a tunnel controlled by this client.
94 uint32_t tunnel_id GNUNET_PACKED;
97 * Peer to connect/disconnect.
99 struct GNUNET_PeerIdentity peer;
105 struct GNUNET_MESH_ConnectPeerByType {
107 * Type: GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_BY_TYPE
109 struct GNUNET_MessageHeader header;
112 * ID of a tunnel controlled by this client.
114 uint32_t tunnel_id GNUNET_PACKED;
119 GNUNET_MESH_ApplicationType type;
123 struct GNUNET_MESH_RequestTransmitReady {
125 * Type: GNUNET_MESSAGE_TYPE_MESH_LOCAL_REQUEST_TRANSMIT_READY
127 struct GNUNET_MessageHeader header;
130 * ID of a tunnel controlled by this client.
132 uint32_t tunnel_id GNUNET_PACKED;
135 * Size of message we would like to transmit to this tunnel
137 uint32_t msg_size GNUNET_PACKED;
140 struct GNUNET_MESH_NotifyTransmitReady {
142 * Type: GNUNET_MESSAGE_TYPE_MESH_LOCAL_NOTIFY_TRANSMIT_READY
144 struct GNUNET_MessageHeader header;
147 * ID of a tunnel controlled by this client.
149 uint32_t tunnel_id GNUNET_PACKED;
152 * Size of message we can now transmit to this tunnel
154 uint32_t msg_size GNUNET_PACKED;
158 struct GNUNET_MESH_Data {
160 * Type: GNUNET_MESSAGE_TYPE_MESH_LOCAL_DATA (client to service, or service to client)
162 * Size: sizeof(struct GNUNET_MESH_Data) + sizeof (data)
164 struct GNUNET_MessageHeader header;
167 * ID of a tunnel controlled by this client.
169 uint32_t tunnel_id GNUNET_PACKED;
172 * Source or destination of the message (depending on direction).
174 struct GNUNET_PeerIdentity destination;
180 struct GNUNET_MESH_DataBroadcast {
182 * Type: GNUNET_MESSAGE_TYPE_MESH_LOCAL_DATA_BROADCAST (client to service only, client created tunnel)
184 * Size: sizeof(struct GNUNET_MESH_DataBroadcast) + sizeof (data)
186 struct GNUNET_MessageHeader header;
189 * ID of a tunnel controlled by this client.
191 uint32_t tunnel_id GNUNET_PACKED;