aboutsummaryrefslogtreecommitdiff
path: root/src/setu/gnunet-service-setu_protocol.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/setu/gnunet-service-setu_protocol.h')
-rw-r--r--src/setu/gnunet-service-setu_protocol.h256
1 files changed, 0 insertions, 256 deletions
diff --git a/src/setu/gnunet-service-setu_protocol.h b/src/setu/gnunet-service-setu_protocol.h
deleted file mode 100644
index c2a166e60..000000000
--- a/src/setu/gnunet-service-setu_protocol.h
+++ /dev/null
@@ -1,256 +0,0 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2013, 2014 GNUnet e.V.
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
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 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20/**
21 * @author Florian Dold
22 * @author Christian Grothoff
23 * @file set/gnunet-service-set_protocol.h
24 * @brief Peer-to-Peer messages for gnunet set
25 */
26#ifndef SET_PROTOCOL_H
27#define SET_PROTOCOL_H
28
29#include "platform.h"
30#include "gnunet_common.h"
31
32
33GNUNET_NETWORK_STRUCT_BEGIN
34
35struct OperationRequestMessage
36{
37 /**
38 * Type: #GNUNET_MESSAGE_TYPE_SET_P2P_OPERATION_REQUEST
39 */
40 struct GNUNET_MessageHeader header;
41
42 /**
43 * For Intersection: my element count
44 */
45 uint32_t element_count GNUNET_PACKED;
46
47 /**
48 * Application-specific identifier of the request.
49 */
50 struct GNUNET_HashCode app_idX;
51
52 /* rest: optional message */
53};
54
55
56/**
57 * Message containing buckets of an invertible bloom filter.
58 *
59 * If an IBF has too many buckets for an IBF message,
60 * it is split into multiple messages.
61 */
62struct IBFMessage
63{
64 /**
65 * Type: #GNUNET_MESSAGE_TYPE_SET_UNION_P2P_IBF
66 */
67 struct GNUNET_MessageHeader header;
68
69 /**
70 * Size of the whole ibf (number of buckets)
71 */
72 uint32_t ibf_size;
73
74 /**
75 * Offset of the strata in the rest of the message
76 */
77 uint32_t offset GNUNET_PACKED;
78
79 /**
80 * Salt used when hashing elements for this IBF.
81 */
82 uint16_t salt GNUNET_PACKED;
83
84 /**
85 * The bit length of the counter
86 */
87 uint16_t ibf_counter_bit_length;
88 /* rest: buckets */
89};
90
91
92/**
93estimate_best_mode_of_operation (uint64_t avg_element_size,
94uint64_t local_set_size,
95 uint64_t remote_set_size,
96uint64_t est_set_diff_remote,
97 uint64_t est_set_diff_local,)
98 **/
99
100
101struct InquiryMessage
102{
103 /**
104 * Type: #GNUNET_MESSAGE_TYPE_SET_UNION_P2P_IBF
105 */
106 struct GNUNET_MessageHeader header;
107
108 /**
109 * Salt used when hashing elements for this inquiry.
110 */
111 uint32_t salt GNUNET_PACKED;
112
113 /* rest: inquiry IBF keys */
114};
115
116
117/**
118 * During intersection, the first (and possibly second) message
119 * send it the number of elements in the set, to allow the peers
120 * to decide who should start with the Bloom filter.
121 */
122struct IntersectionElementInfoMessage
123{
124 /**
125 * Type: #GNUNET_MESSAGE_TYPE_SET_INTERSECTION_P2P_ELEMENT_INFO
126 */
127 struct GNUNET_MessageHeader header;
128
129 /**
130 * mutator used with this bloomfilter.
131 */
132 uint32_t sender_element_count GNUNET_PACKED;
133};
134
135
136/**
137 * Bloom filter messages exchanged for set intersection calculation.
138 */
139struct BFMessage
140{
141 /**
142 * Type: #GNUNET_MESSAGE_TYPE_SET_INTERSECTION_P2P_BF
143 */
144 struct GNUNET_MessageHeader header;
145
146 /**
147 * Number of elements the sender still has in the set.
148 */
149 uint32_t sender_element_count GNUNET_PACKED;
150
151 /**
152 * XOR of all hashes over all elements remaining in the set.
153 * Used to determine termination.
154 */
155 struct GNUNET_HashCode element_xor_hash;
156
157 /**
158 * Mutator used with this bloomfilter.
159 */
160 uint32_t sender_mutator GNUNET_PACKED;
161
162 /**
163 * Total length of the bloomfilter data.
164 */
165 uint32_t bloomfilter_total_length GNUNET_PACKED;
166
167 /**
168 * Number of bits (k-value) used in encoding the bloomfilter.
169 */
170 uint32_t bits_per_element GNUNET_PACKED;
171
172 /**
173 * rest: the sender's bloomfilter
174 */
175};
176
177
178/**
179 * Last message, send to confirm the final set. Contains the element
180 * count as it is possible that the peer determined that we were done
181 * by getting the empty set, which in that case also needs to be
182 * communicated.
183 */
184struct IntersectionDoneMessage
185{
186 /**
187 * Type: #GNUNET_MESSAGE_TYPE_SET_INTERSECTION_P2P_DONE
188 */
189 struct GNUNET_MessageHeader header;
190
191 /**
192 * Final number of elements in intersection.
193 */
194 uint32_t final_element_count GNUNET_PACKED;
195
196 /**
197 * XOR of all hashes over all elements remaining in the set.
198 */
199 struct GNUNET_HashCode element_xor_hash;
200};
201
202
203/**
204 * Strata estimator together with the peer's overall set size.
205 */
206struct StrataEstimatorMessage
207{
208 /**
209 * Type: #GNUNET_MESSAGE_TYPE_SET_UNION_P2P_SE(C)
210 */
211 struct GNUNET_MessageHeader header;
212
213 /**
214 * The number of ses transmitted
215 */
216 uint8_t se_count;
217
218 /**
219 * Size of the local set
220 */
221 uint64_t set_size;
222};
223
224
225/**
226 * Message which signals to other peer that we are sending full set
227 *
228 */
229struct TransmitFullMessage
230{
231 /**
232 * Type: #GNUNET_MESSAGE_TYPE_SETU_P2P_SEND_FULL
233 */
234 struct GNUNET_MessageHeader header;
235
236 /**
237 * Remote set difference calculated with strata estimator
238 */
239 uint32_t remote_set_difference;
240
241 /**
242 * Total remote set size
243 */
244 uint32_t remote_set_size;
245
246 /**
247 * Local set difference calculated with strata estimator
248 */
249 uint32_t local_set_difference;
250
251};
252
253
254GNUNET_NETWORK_STRUCT_END
255
256#endif