2 This file is part of GNUnet.
3 (C) 2010,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 * @brief automatic transport selection messages
23 * @author Christian Grothoff
24 * @author Matthias Wachs
29 #include "gnunet_util_lib.h"
35 START_FLAG_SCHEDULING = 0,
37 START_FLAG_PERFORMANCE_WITH_PIC = 1,
39 START_FLAG_PERFORMANCE_NO_PIC = 2
43 struct ClientStartMessage
45 struct GNUNET_MessageHeader header;
48 * NBO value of an 'enum StartFlag'.
50 uint32_t start_flag GNUNET_PACKED;
54 struct RequestAddressMessage
56 struct GNUNET_MessageHeader header;
58 uint32_t reserved GNUNET_PACKED;
60 struct GNUNET_PeerIdentity peer;
64 struct AddressUpdateMessage
66 struct GNUNET_MessageHeader header;
68 uint32_t ats_count GNUNET_PACKED;
70 struct GNUNET_PeerIdentity peer;
72 uint16_t address_length GNUNET_PACKED;
74 uint16_t plugin_name_length GNUNET_PACKED;
76 uint32_t session_id GNUNET_PACKED;
79 * - struct GNUNET_ATS_Information [ats_count];
80 * - char address[address_length]
81 * - char plugin_name[plugin_name_length] (including '\0'-termination).
86 struct AddressUseMessage
88 struct GNUNET_MessageHeader header;
90 struct GNUNET_PeerIdentity peer;
92 uint16_t in_use GNUNET_PACKED;
94 uint16_t address_length GNUNET_PACKED;
96 uint16_t plugin_name_length GNUNET_PACKED;
98 uint32_t session_id GNUNET_PACKED;
101 * - char address[address_length]
102 * - char plugin_name[plugin_name_length] (including '\0'-termination).
108 struct AddressDestroyedMessage
110 struct GNUNET_MessageHeader header;
112 uint32_t reserved GNUNET_PACKED;
114 struct GNUNET_PeerIdentity peer;
116 uint16_t address_length GNUNET_PACKED;
118 uint16_t plugin_name_length GNUNET_PACKED;
120 uint32_t session_id GNUNET_PACKED;
123 * - char address[address_length]
124 * - char plugin_name[plugin_name_length] (including '\0'-termination).
130 struct AddressSuggestionMessage
132 struct GNUNET_MessageHeader header;
134 uint32_t ats_count GNUNET_PACKED;
136 struct GNUNET_PeerIdentity peer;
138 uint16_t address_length GNUNET_PACKED;
140 uint16_t plugin_name_length GNUNET_PACKED;
142 uint32_t session_id GNUNET_PACKED;
144 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out;
146 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in;
149 * - struct GNUNET_ATS_Information [ats_count];
150 * - char address[address_length]
151 * - char plugin_name[plugin_name_length] (including '\0'-termination).
157 struct PeerInformationMessage
159 struct GNUNET_MessageHeader header;
161 uint32_t ats_count GNUNET_PACKED;
163 struct GNUNET_PeerIdentity peer;
165 uint16_t address_length GNUNET_PACKED;
167 uint16_t plugin_name_length GNUNET_PACKED;
169 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out;
171 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in;
174 * - struct GNUNET_ATS_Information [ats_count];
175 * - char address[address_length]
176 * - char plugin_name[plugin_name_length] (including '\0'-termination).
182 struct ReservationRequestMessage
184 struct GNUNET_MessageHeader header;
186 int32_t amount GNUNET_PACKED;
188 struct GNUNET_PeerIdentity peer;
193 * Message sent by ATS service to client to confirm that it is done
194 * using the given session ID.
196 struct SessionReleaseMessage
198 struct GNUNET_MessageHeader header;
200 uint32_t session_id GNUNET_PACKED;
202 struct GNUNET_PeerIdentity peer;
206 struct ReservationResultMessage
208 struct GNUNET_MessageHeader header;
210 int32_t amount GNUNET_PACKED;
212 struct GNUNET_PeerIdentity peer;
214 struct GNUNET_TIME_RelativeNBO res_delay;
218 struct PreferenceInformation
221 uint32_t preference_kind GNUNET_PACKED;
223 float preference_value GNUNET_PACKED;
228 struct ChangePreferenceMessage
230 struct GNUNET_MessageHeader header;
232 uint32_t num_preferences GNUNET_PACKED;
234 struct GNUNET_PeerIdentity peer;
236 /* followed by 'num_preferences'
237 * struct PreferenceInformation values */