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
26 * - soft stateing (keep-alive (CHANGE?) / timeout / disconnect) -- not a message issue
27 * - error reporting (CREATE/CHANGE/ADD/DEL?) -- new message!
28 * - partial disconnect reporting -- same as error reporting?
29 * - add vs create? change vs. keep-alive? same msg or different ones? -- thinking...
30 * - speed requirement specification (change?) in mesh API -- API call
39 #include "gnunet_common.h"
42 * Message for mesh path management
44 struct GNUNET_MESH_ManipulatePath
47 * Type: GNUNET_MESSAGE_TYPE_MESH_PATH_[CREATE|CHANGE|ADD|DEL]
49 * Size: sizeof(struct GNUNET_MESH_ManipulatePath) + path_length * sizeof (struct GNUNET_PeerIdentity)
51 struct GNUNET_MessageHeader header;
54 * Id of the tunnel this path belongs to, unique in conjunction with the origin.
56 uint32_t tid GNUNET_PACKED;
59 * Information about speed requirements. If the tunnel cannot sustain the
60 * minimum bandwidth, packets are to be dropped.
62 uint32_t speed_min GNUNET_PACKED;
65 * path_length structs defining the *whole* path from the origin [0] to the
66 * final destination [path_length-1].
68 // struct GNUNET_PeerIdentity peers[path_length];
72 * Message for mesh data traffic to all tunnel targets.
74 struct GNUNET_MESH_OriginMulticast
77 * Type: GNUNET_MESSAGE_TYPE_DATA_MULTICAST
79 struct GNUNET_MessageHeader header;
84 uint32_t tid GNUNET_PACKED;
89 struct GNUNET_PeerIdentity oid;
92 * FIXME: Some form of authentication
103 * Message for mesh data traffic to a particular destination from origin.
105 struct GNUNET_MESH_DataMessageFromOrigin
108 * Type: GNUNET_MESSAGE_TYPE_DATA_MESSAGE_FROM_ORIGIN
110 struct GNUNET_MessageHeader header;
115 uint32_t tid GNUNET_PACKED;
120 struct GNUNET_PeerIdentity oid;
125 struct GNUNET_PeerIdentity destination;
128 * FIXME: Some form of authentication
139 * Message for mesh data traffic from a tunnel participant to origin.
141 struct GNUNET_MESH_DataMessageToOrigin
144 * Type: GNUNET_MESSAGE_TYPE_DATA_MESSAGE_TO_ORIGIN
146 struct GNUNET_MessageHeader header;
151 uint32_t tid GNUNET_PACKED;
156 struct GNUNET_PeerIdentity oid;
159 * Sender of the message.
161 struct GNUNET_PeerIdentity sender;
164 * FIXME: Some form of authentication
174 * Message for mesh flow control
176 struct GNUNET_MESH_SpeedNotify
179 * Type: GNUNET_MESSAGE_TYPE_DATA_SPEED_NOTIFY
181 struct GNUNET_MessageHeader header;
186 uint32_t tid GNUNET_PACKED;
191 struct GNUNET_PeerIdentity oid;
194 * Slowest link down the path (above minimum speed requirement).