diff options
-rw-r--r-- | src/ats/ats.h | 8 | ||||
-rw-r--r-- | src/ats/ats_api_connectivity.c | 17 | ||||
-rw-r--r-- | src/ats/ats_api_scheduling.c | 1 | ||||
-rw-r--r-- | src/ats/gnunet-service-ats_connectivity.c | 13 | ||||
-rw-r--r-- | src/include/gnunet_ats_service.h | 5 | ||||
-rw-r--r-- | src/transport/gnunet-service-transport_neighbours.c | 3 |
6 files changed, 29 insertions, 18 deletions
diff --git a/src/ats/ats.h b/src/ats/ats.h index 3a7f28a64..5c1e806b6 100644 --- a/src/ats/ats.h +++ b/src/ats/ats.h | |||
@@ -82,7 +82,7 @@ struct ClientStartMessage | |||
82 | 82 | ||
83 | 83 | ||
84 | /** | 84 | /** |
85 | * Scheduling client to ATS service: we would like to have | 85 | * Connectivity client to ATS service: we would like to have |
86 | * address suggestions for this peer. | 86 | * address suggestions for this peer. |
87 | */ | 87 | */ |
88 | struct RequestAddressMessage | 88 | struct RequestAddressMessage |
@@ -95,9 +95,9 @@ struct RequestAddressMessage | |||
95 | struct GNUNET_MessageHeader header; | 95 | struct GNUNET_MessageHeader header; |
96 | 96 | ||
97 | /** | 97 | /** |
98 | * Always zero. | 98 | * How "strong" is our need for an address for this peer? |
99 | */ | 99 | */ |
100 | uint32_t reserved GNUNET_PACKED; | 100 | uint32_t strength GNUNET_PACKED; |
101 | 101 | ||
102 | /** | 102 | /** |
103 | * Peer to get address suggestions for. | 103 | * Peer to get address suggestions for. |
@@ -107,7 +107,7 @@ struct RequestAddressMessage | |||
107 | 107 | ||
108 | 108 | ||
109 | /** | 109 | /** |
110 | * ATS client to ATS service: here is another address you can use. | 110 | * Scheduling client to ATS service: here is another address you can use. |
111 | */ | 111 | */ |
112 | struct AddressAddMessage | 112 | struct AddressAddMessage |
113 | { | 113 | { |
diff --git a/src/ats/ats_api_connectivity.c b/src/ats/ats_api_connectivity.c index 4099cadbd..1012e9cee 100644 --- a/src/ats/ats_api_connectivity.c +++ b/src/ats/ats_api_connectivity.c | |||
@@ -45,6 +45,11 @@ struct GNUNET_ATS_ConnectivitySuggestHandle | |||
45 | * Connecitivity handle this suggestion handle belongs to. | 45 | * Connecitivity handle this suggestion handle belongs to. |
46 | */ | 46 | */ |
47 | struct GNUNET_ATS_ConnectivityHandle *ch; | 47 | struct GNUNET_ATS_ConnectivityHandle *ch; |
48 | |||
49 | /** | ||
50 | * How urgent is the request. | ||
51 | */ | ||
52 | uint32_t strength; | ||
48 | }; | 53 | }; |
49 | 54 | ||
50 | 55 | ||
@@ -174,13 +179,14 @@ transmit_suggestion (void *cls, | |||
174 | void *value) | 179 | void *value) |
175 | { | 180 | { |
176 | struct GNUNET_ATS_ConnectivityHandle *ch = cls; | 181 | struct GNUNET_ATS_ConnectivityHandle *ch = cls; |
182 | struct GNUNET_ATS_ConnectivitySuggestHandle *sh = value; | ||
177 | struct GNUNET_MQ_Envelope *ev; | 183 | struct GNUNET_MQ_Envelope *ev; |
178 | struct RequestAddressMessage *m; | 184 | struct RequestAddressMessage *m; |
179 | 185 | ||
180 | if (NULL == ch->mq) | 186 | if (NULL == ch->mq) |
181 | return GNUNET_SYSERR; | 187 | return GNUNET_SYSERR; |
182 | ev = GNUNET_MQ_msg (m, GNUNET_MESSAGE_TYPE_ATS_REQUEST_ADDRESS); | 188 | ev = GNUNET_MQ_msg (m, GNUNET_MESSAGE_TYPE_ATS_REQUEST_ADDRESS); |
183 | m->reserved = htonl (0); | 189 | m->strength = htonl (sh->strength); |
184 | m->peer = *peer; | 190 | m->peer = *peer; |
185 | GNUNET_MQ_send (ch->mq, ev); | 191 | GNUNET_MQ_send (ch->mq, ev); |
186 | return GNUNET_OK; | 192 | return GNUNET_OK; |
@@ -244,7 +250,7 @@ GNUNET_ATS_connectivity_init (const struct GNUNET_CONFIGURATION_Handle *cfg) | |||
244 | 250 | ||
245 | 251 | ||
246 | /** | 252 | /** |
247 | * Function called to free all `struct GNUNET_ATS_SuggestHandles` | 253 | * Function called to free all `struct GNUNET_ATS_ConnectivitySuggestHandle`s |
248 | * in the map. | 254 | * in the map. |
249 | * | 255 | * |
250 | * @param cls NULL | 256 | * @param cls NULL |
@@ -303,11 +309,13 @@ GNUNET_ATS_connectivity_done (struct GNUNET_ATS_ConnectivityHandle *ch) | |||
303 | * | 309 | * |
304 | * @param ch handle | 310 | * @param ch handle |
305 | * @param peer identity of the peer we need an address for | 311 | * @param peer identity of the peer we need an address for |
312 | * @param strength how urgent is the need for such a suggestion | ||
306 | * @return suggest handle, NULL if a request is already pending | 313 | * @return suggest handle, NULL if a request is already pending |
307 | */ | 314 | */ |
308 | struct GNUNET_ATS_ConnectivitySuggestHandle * | 315 | struct GNUNET_ATS_ConnectivitySuggestHandle * |
309 | GNUNET_ATS_connectivity_suggest (struct GNUNET_ATS_ConnectivityHandle *ch, | 316 | GNUNET_ATS_connectivity_suggest (struct GNUNET_ATS_ConnectivityHandle *ch, |
310 | const struct GNUNET_PeerIdentity *peer) | 317 | const struct GNUNET_PeerIdentity *peer, |
318 | uint32_t strength) | ||
311 | { | 319 | { |
312 | struct GNUNET_ATS_ConnectivitySuggestHandle *s; | 320 | struct GNUNET_ATS_ConnectivitySuggestHandle *s; |
313 | 321 | ||
@@ -317,6 +325,7 @@ GNUNET_ATS_connectivity_suggest (struct GNUNET_ATS_ConnectivityHandle *ch, | |||
317 | s = GNUNET_new (struct GNUNET_ATS_ConnectivitySuggestHandle); | 325 | s = GNUNET_new (struct GNUNET_ATS_ConnectivitySuggestHandle); |
318 | s->ch = ch; | 326 | s->ch = ch; |
319 | s->id = *peer; | 327 | s->id = *peer; |
328 | s->strength = strength; | ||
320 | if (GNUNET_OK != | 329 | if (GNUNET_OK != |
321 | GNUNET_CONTAINER_multipeermap_put (ch->sug_requests, | 330 | GNUNET_CONTAINER_multipeermap_put (ch->sug_requests, |
322 | &s->id, | 331 | &s->id, |
@@ -360,7 +369,7 @@ GNUNET_ATS_connectivity_suggest_cancel (struct GNUNET_ATS_ConnectivitySuggestHan | |||
360 | return; | 369 | return; |
361 | } | 370 | } |
362 | ev = GNUNET_MQ_msg (m, GNUNET_MESSAGE_TYPE_ATS_REQUEST_ADDRESS_CANCEL); | 371 | ev = GNUNET_MQ_msg (m, GNUNET_MESSAGE_TYPE_ATS_REQUEST_ADDRESS_CANCEL); |
363 | m->reserved = htonl (0); | 372 | m->strength = htonl (0); |
364 | m->peer = sh->id; | 373 | m->peer = sh->id; |
365 | GNUNET_MQ_send (ch->mq, ev); | 374 | GNUNET_MQ_send (ch->mq, ev); |
366 | GNUNET_free (sh); | 375 | GNUNET_free (sh); |
diff --git a/src/ats/ats_api_scheduling.c b/src/ats/ats_api_scheduling.c index d7a5a83a1..ab8a8711d 100644 --- a/src/ats/ats_api_scheduling.c +++ b/src/ats/ats_api_scheduling.c | |||
@@ -247,7 +247,6 @@ find_session (struct GNUNET_ATS_SchedulingHandle *sh, | |||
247 | sizeof (struct GNUNET_PeerIdentity))) | 247 | sizeof (struct GNUNET_PeerIdentity))) |
248 | { | 248 | { |
249 | GNUNET_break (0); | 249 | GNUNET_break (0); |
250 | force_reconnect (sh); | ||
251 | return NULL; | 250 | return NULL; |
252 | } | 251 | } |
253 | return ar; | 252 | return ar; |
diff --git a/src/ats/gnunet-service-ats_connectivity.c b/src/ats/gnunet-service-ats_connectivity.c index 8c103a33c..7bde6e354 100644 --- a/src/ats/gnunet-service-ats_connectivity.c +++ b/src/ats/gnunet-service-ats_connectivity.c | |||
@@ -73,7 +73,7 @@ GAS_connectivity_has_peer (void *cls, | |||
73 | 73 | ||
74 | 74 | ||
75 | /** | 75 | /** |
76 | * Handle 'request address' messages from clients. | 76 | * Handle #GNUNET_MESSAGE_TYPE_ATS_REQUEST_ADDRESS messages from clients. |
77 | * | 77 | * |
78 | * @param cls unused, NULL | 78 | * @param cls unused, NULL |
79 | * @param client client that sent the request | 79 | * @param client client that sent the request |
@@ -90,8 +90,8 @@ GAS_handle_request_address (void *cls, | |||
90 | 90 | ||
91 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 91 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
92 | "Received `%s' message\n", | 92 | "Received `%s' message\n", |
93 | "REQUEST_ADDRESS"); | 93 | "GNUNET_MESSAGE_TYPE_ATS_REQUEST_ADDRESS"); |
94 | GNUNET_break (0 == ntohl (msg->reserved)); | 94 | /* FIXME: should not ignore "msg->strength" */ |
95 | cr = GNUNET_new (struct ConnectionRequest); | 95 | cr = GNUNET_new (struct ConnectionRequest); |
96 | cr->client = client; | 96 | cr->client = client; |
97 | (void) GNUNET_CONTAINER_multipeermap_put (connection_requests, | 97 | (void) GNUNET_CONTAINER_multipeermap_put (connection_requests, |
@@ -137,7 +137,8 @@ free_matching_requests (void *cls, | |||
137 | 137 | ||
138 | 138 | ||
139 | /** | 139 | /** |
140 | * Handle 'request address cancel' messages from clients. | 140 | * Handle #GNUNET_MESSAGE_TYPE_ATS_REQUEST_ADDRESS_CANCEL messages |
141 | * from clients. | ||
141 | * | 142 | * |
142 | * @param cls unused, NULL | 143 | * @param cls unused, NULL |
143 | * @param client client that sent the request | 144 | * @param client client that sent the request |
@@ -152,9 +153,9 @@ GAS_handle_request_address_cancel (void *cls, | |||
152 | (const struct RequestAddressMessage *) message; | 153 | (const struct RequestAddressMessage *) message; |
153 | 154 | ||
154 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 155 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
155 | "Received REQUEST_ADDRESS_CANCEL message for peer %s\n", | 156 | "Received GNUNET_MESSAGE_TYPE_ATS_REQUEST_ADDRESS_CANCEL message for peer %s\n", |
156 | GNUNET_i2s (&msg->peer)); | 157 | GNUNET_i2s (&msg->peer)); |
157 | GNUNET_break (0 == ntohl (msg->reserved)); | 158 | GNUNET_break (0 == ntohl (msg->strength)); |
158 | GNUNET_CONTAINER_multipeermap_get_multiple (connection_requests, | 159 | GNUNET_CONTAINER_multipeermap_get_multiple (connection_requests, |
159 | &msg->peer, | 160 | &msg->peer, |
160 | &free_matching_requests, | 161 | &free_matching_requests, |
diff --git a/src/include/gnunet_ats_service.h b/src/include/gnunet_ats_service.h index 4264f22a4..32e98abd6 100644 --- a/src/include/gnunet_ats_service.h +++ b/src/include/gnunet_ats_service.h | |||
@@ -302,12 +302,13 @@ GNUNET_ATS_connectivity_done (struct GNUNET_ATS_ConnectivityHandle *ch); | |||
302 | * | 302 | * |
303 | * @param ch handle | 303 | * @param ch handle |
304 | * @param peer identity of the peer we need an address for | 304 | * @param peer identity of the peer we need an address for |
305 | * TODO: add argument to allow client to express 'strength's of request | 305 | * @param strength how urgent is the need for such a suggestion |
306 | * @return suggestion handle, NULL if request is already pending | 306 | * @return suggestion handle, NULL if request is already pending |
307 | */ | 307 | */ |
308 | struct GNUNET_ATS_ConnectivitySuggestHandle * | 308 | struct GNUNET_ATS_ConnectivitySuggestHandle * |
309 | GNUNET_ATS_connectivity_suggest (struct GNUNET_ATS_ConnectivityHandle *ch, | 309 | GNUNET_ATS_connectivity_suggest (struct GNUNET_ATS_ConnectivityHandle *ch, |
310 | const struct GNUNET_PeerIdentity *peer); | 310 | const struct GNUNET_PeerIdentity *peer, |
311 | uint32_t strength); | ||
311 | 312 | ||
312 | 313 | ||
313 | /** | 314 | /** |
diff --git a/src/transport/gnunet-service-transport_neighbours.c b/src/transport/gnunet-service-transport_neighbours.c index d41fa6582..07af225c1 100644 --- a/src/transport/gnunet-service-transport_neighbours.c +++ b/src/transport/gnunet-service-transport_neighbours.c | |||
@@ -2213,7 +2213,8 @@ setup_neighbour (const struct GNUNET_PeerIdentity *peer) | |||
2213 | n, | 2213 | n, |
2214 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY)); | 2214 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY)); |
2215 | n->suggest_handle = GNUNET_ATS_connectivity_suggest (GST_ats_connect, | 2215 | n->suggest_handle = GNUNET_ATS_connectivity_suggest (GST_ats_connect, |
2216 | peer); | 2216 | peer, |
2217 | 0); | ||
2217 | 2218 | ||
2218 | return n; | 2219 | return n; |
2219 | } | 2220 | } |