aboutsummaryrefslogtreecommitdiff
path: root/src/dht/gnunet-service-dht.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/dht/gnunet-service-dht.c')
-rw-r--r--src/dht/gnunet-service-dht.c164
1 files changed, 0 insertions, 164 deletions
diff --git a/src/dht/gnunet-service-dht.c b/src/dht/gnunet-service-dht.c
deleted file mode 100644
index da46dcfee..000000000
--- a/src/dht/gnunet-service-dht.c
+++ /dev/null
@@ -1,164 +0,0 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2009, 2010, 2011, 2016 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/**
22 * @file dht/gnunet-service-dht.c
23 * @brief GNUnet DHT service
24 * @author Christian Grothoff
25 * @author Nathan Evans
26 */
27#include "platform.h"
28#include "gnunet_block_lib.h"
29#include "gnunet_util_lib.h"
30#include "gnunet_transport_service.h"
31#include "gnunet_transport_hello_service.h"
32#include "gnunet_hello_lib.h"
33#include "gnunet_dht_service.h"
34#include "gnunet_statistics_service.h"
35#include "gnunet-service-dht.h"
36#include "gnunet-service-dht_datacache.h"
37#include "gnunet-service-dht_hello.h"
38#include "gnunet-service-dht_neighbours.h"
39#include "gnunet-service-dht_nse.h"
40#include "gnunet-service-dht_routing.h"
41
42/**
43 * Our HELLO
44 */
45struct GNUNET_MessageHeader *GDS_my_hello;
46
47/**
48 * Handle to get our current HELLO.
49 */
50static struct GNUNET_TRANSPORT_HelloGetHandle *ghh;
51
52/**
53 * Hello address expiration
54 */
55struct GNUNET_TIME_Relative hello_expiration;
56
57
58#include "gnunet-service-dht_clients.c"
59
60
61/**
62 * Receive the HELLO from transport service, free current and replace
63 * if necessary.
64 *
65 * @param cls NULL
66 * @param message HELLO message of peer
67 */
68static void
69process_hello (void *cls,
70 const struct GNUNET_MessageHeader *message)
71{
72 GNUNET_free (GDS_my_hello);
73 GDS_my_hello = GNUNET_malloc (ntohs (message->size));
74 GNUNET_memcpy (GDS_my_hello,
75 message,
76 ntohs (message->size));
77}
78
79
80/**
81 * Task run during shutdown.
82 *
83 * @param cls unused
84 */
85static void
86shutdown_task (void *cls)
87{
88 if (NULL != ghh)
89 {
90 GNUNET_TRANSPORT_hello_get_cancel (ghh);
91 ghh = NULL;
92 }
93 GDS_NEIGHBOURS_done ();
94 GDS_DATACACHE_done ();
95 GDS_ROUTING_done ();
96 GDS_HELLO_done ();
97 GDS_NSE_done ();
98 if (NULL != GDS_block_context)
99 {
100 GNUNET_BLOCK_context_destroy (GDS_block_context);
101 GDS_block_context = NULL;
102 }
103 if (NULL != GDS_stats)
104 {
105 GNUNET_STATISTICS_destroy (GDS_stats,
106 GNUNET_YES);
107 GDS_stats = NULL;
108 }
109 GNUNET_free (GDS_my_hello);
110 GDS_my_hello = NULL;
111 GDS_CLIENTS_stop ();
112}
113
114
115/**
116 * Process dht requests.
117 *
118 * @param cls closure
119 * @param c configuration to use
120 * @param service the initialized service
121 */
122static void
123run (void *cls,
124 const struct GNUNET_CONFIGURATION_Handle *c,
125 struct GNUNET_SERVICE_Handle *service)
126{
127 GDS_cfg = c;
128 GDS_service = service;
129 if (GNUNET_OK !=
130 GNUNET_CONFIGURATION_get_value_time (c,
131 "transport",
132 "HELLO_EXPIRATION",
133 &hello_expiration))
134 {
135 hello_expiration = GNUNET_CONSTANTS_HELLO_ADDRESS_EXPIRATION;
136 }
137 GDS_block_context = GNUNET_BLOCK_context_create (GDS_cfg);
138 GDS_stats = GNUNET_STATISTICS_create ("dht",
139 GDS_cfg);
140 GNUNET_SERVICE_suspend (GDS_service);
141 GDS_CLIENTS_init ();
142 GDS_ROUTING_init ();
143 GDS_NSE_init ();
144 GDS_DATACACHE_init ();
145 GDS_HELLO_init ();
146 if (GNUNET_OK != GDS_NEIGHBOURS_init ())
147 {
148 shutdown_task (NULL);
149 return;
150 }
151 GNUNET_SCHEDULER_add_shutdown (&shutdown_task,
152 NULL);
153 ghh = GNUNET_TRANSPORT_hello_get (GDS_cfg,
154 GNUNET_TRANSPORT_AC_GLOBAL,
155 &process_hello,
156 NULL);
157}
158
159
160/* Finally, define the main method */
161GDS_DHT_SERVICE_INIT ("dht", &run);
162
163
164/* end of gnunet-service-dht.c */