GNUnet 0.26.2-106-g126384b46
 
Loading...
Searching...
No Matches
gnunet-service-fs.h
Go to the documentation of this file.
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2009, 2010 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
26#ifndef GNUNET_SERVICE_FS_H
27#define GNUNET_SERVICE_FS_H
28
29#include "gnunet_pils_service.h"
30#include "gnunet_util_lib.h"
32#include "gnunet_core_service.h"
33#include "gnunet_block_lib.h"
34#include "fs.h"
35
36
43#define TTL_DECREMENT 5000
44
50#define DATASTORE_LOAD_AUTODECLINE GNUNET_TIME_relative_multiply ( \
51 GNUNET_TIME_UNIT_MILLISECONDS, 250)
52
56#define GET_MESSAGE_BIT_QUERY_ONLY 0
57
64#define GET_MESSAGE_BIT_RETURN_TO 1
65
74#define GET_MESSAGE_BIT_TRANSMIT_TO 4
75
76
78
82struct GetMessage
83{
88
92 uint32_t type GNUNET_PACKED;
93
98
103
108
117
123
124 /* this is followed by PeerIdentities as specified in the "hash_bitmap";
125 * after that, an optional bloomfilter (with bits set for replies
126 * that should be suppressed) can be present */
127};
128
129
153
157struct GSF_ConnectedPeer;
158
162struct GSF_PendingRequest;
163
167struct GSF_LocalClient;
168
172struct GSF_RequestPlan;
173
178
182extern struct GNUNET_DATASTORE_Handle *GSF_dsh;
183
187extern const struct GNUNET_CONFIGURATION_Handle *GSF_cfg;
188
193
198extern struct GNUNET_CORE_Handle *GSF_core;
199
203extern struct GNUNET_DHT_Handle *GSF_dht;
204
209
214
218extern struct GNUNET_ATS_PerformanceHandle *GSF_ats;
219
223extern struct GNUNET_PILS_Handle *GSF_pils;
224
235extern double GSF_current_priorities;
236
241extern unsigned int GSF_cover_query_count;
242
247extern unsigned int GSF_cover_content_count;
248
253
258
262extern unsigned int GSF_datastore_queue_size;
263
264
275void
276GSF_consider_forwarding (void *cls,
277 struct GSF_PendingRequest *pr,
279
280
290int
291GSF_test_get_load_too_high_ (uint32_t priority);
292
293
300void
302
303
304#endif
305/* end of gnunet-service-fs.h */
definitions for the entire fs module
static int start
Set if we are to start default services (including ARM).
Definition gnunet-arm.c:38
static int result
Global testing status.
int GSF_enable_randomized_delays
Are we introducing randomized delays for better anonymity?
struct GNUNET_PILS_Handle * GSF_pils
Handle to PILS service.
void GSF_update_datastore_delay_(struct GNUNET_TIME_Absolute start)
We've just now completed a datastore request.
struct GNUNET_BLOCK_Context * GSF_block_ctx
Our block context.
struct GNUNET_DHT_Handle * GSF_dht
Handle for DHT operations.
int GSF_test_get_load_too_high_(uint32_t priority)
Test if the DATABASE (GET) load on this peer is too high to even consider processing the query at all...
struct GNUNET_STATISTICS_Handle * GSF_stats
Handle for reporting statistics.
double GSF_current_priorities
Typical priorities we're seeing from other peers right now.
unsigned int GSF_cover_query_count
How many query messages have we received 'recently' that have not yet been claimed as cover traffic?
const struct GNUNET_CONFIGURATION_Handle * GSF_cfg
Our configuration.
void GSF_consider_forwarding(void *cls, struct GSF_PendingRequest *pr, enum GNUNET_BLOCK_ReplyEvaluationResult result)
Function to be called after we're done processing replies from the local lookup.
struct GNUNET_ATS_PerformanceHandle * GSF_ats
Handle to ATS service.
struct GNUNET_CORE_Handle * GSF_core
Pointer to handle to the core service (points to NULL until we've connected to it).
unsigned int GSF_cover_content_count
How many content messages have we received 'recently' that have not yet been claimed as cover traffic...
struct GNUNET_TIME_Relative GSF_avg_latency
Running average of the observed latency to other peers (round trip).
struct GNUNET_LOAD_Value * GSF_rt_entry_lifetime
How long do requests typically stay in the routing table?
struct GNUNET_DATASTORE_Handle * GSF_dsh
Our connection to the datastore.
unsigned int GSF_datastore_queue_size
Size of the datastore queue we assume for common requests.
Library for data block manipulation.
Core service; the main API for encrypted P2P communications.
API to create, modify and access statistics.
GNUNET_BLOCK_ReplyEvaluationResult
Possible ways for how a block may relate to a query.
#define GNUNET_NETWORK_STRUCT_BEGIN
Define as empty, GNUNET_PACKED should suffice, but this won't work on W32.
#define GNUNET_NETWORK_STRUCT_END
Define as empty, GNUNET_PACKED should suffice, but this won't work on W32;.
#define GNUNET_PACKED
gcc-ism to get packed structs.
Handle to an initialized block library.
Definition block.c:55
Context for the core service connection.
Definition core_api.c:78
Handle to the datastore service.
Connection to the DHT service.
Definition dht_api.c:235
A 512-bit hashcode.
Values we track for load calculations.
Definition load.c:36
Header for all communications.
A handle for the PILS service.
Definition pils_api.c:82
Handle for the service.
Time for absolute times used by GNUnet, in microseconds.
Time for relative time used by GNUnet, in microseconds and in network byte order.
Time for relative time used by GNUnet, in microseconds.
A local client.
M:N binding of plans to pending requests.
An active request.
Information we keep per request per peer.
Message to the datastore service asking about specific content.
Definition datastore.h:141
uint32_t type
Desired content type.
Definition datastore.h:150
struct GNUNET_MessageHeader header
Type is GNUNET_MESSAGE_TYPE_DATASTORE_GET.
Definition datastore.h:145
uint32_t priority
How important is this request (network byte order)
struct GNUNET_HashCode query
Hashcodes of the file(s) we're looking for.
uint32_t reserved
These days not used.
int32_t ttl
Relative time to live in MILLISECONDS (network byte order)
uint32_t hash_bitmap
Which of the optional hash codes are present at the end of the message? See GET_MESSAGE_BIT_xx consta...
Message send by a peer that wants to be excluded from migration for a while.
struct GNUNET_MessageHeader header
Message type will be GNUNET_MESSAGE_TYPE_FS_MIGRATION_STOP.
struct GNUNET_TIME_RelativeNBO duration
How long should the block last?
uint32_t reserved
Always zero.