aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ats/ats_api_scheduling.c22
-rw-r--r--src/ats/test_ats_solver_add_address_and_request.c2
-rw-r--r--src/ats/test_ats_solver_alternative_after_delete_address.c3
-rw-r--r--src/ats/test_ats_solver_convergence.c2
-rw-r--r--src/ats/test_ats_solver_preferences.c3
-rw-r--r--src/ats/test_ats_solver_request_and_add_address.c2
-rw-r--r--src/ats/test_ats_solver_request_and_delete_address.c3
-rw-r--r--src/include/gnunet_ats_service.h6
-rw-r--r--src/transport/gnunet-service-transport.c8
-rw-r--r--src/transport/gnunet-service-transport_neighbours.c22
10 files changed, 32 insertions, 41 deletions
diff --git a/src/ats/ats_api_scheduling.c b/src/ats/ats_api_scheduling.c
index 4cf48d761..d2bf06c17 100644
--- a/src/ats/ats_api_scheduling.c
+++ b/src/ats/ats_api_scheduling.c
@@ -90,17 +90,22 @@ struct ATS_Network
90 struct ATS_Network * prev; 90 struct ATS_Network * prev;
91 91
92 struct sockaddr *network; 92 struct sockaddr *network;
93
93 struct sockaddr *netmask; 94 struct sockaddr *netmask;
95
94 socklen_t length; 96 socklen_t length;
95}; 97};
96 98
99
97/** 100/**
98 * Handle for address suggestions 101 * Handle for address suggestions
99 */ 102 */
100struct GNUNET_ATS_SuggestHandle 103struct GNUNET_ATS_SuggestHandle
101{ 104{
102 struct GNUNET_ATS_SuggestHandle *prev; 105 struct GNUNET_ATS_SuggestHandle *prev;
106
103 struct GNUNET_ATS_SuggestHandle *next; 107 struct GNUNET_ATS_SuggestHandle *next;
108
104 struct GNUNET_PeerIdentity id; 109 struct GNUNET_PeerIdentity id;
105}; 110};
106 111
@@ -1104,15 +1109,11 @@ GNUNET_ATS_reset_backoff (struct GNUNET_ATS_SchedulingHandle *sh,
1104 * 1109 *
1105 * @param sh handle 1110 * @param sh handle
1106 * @param peer identity of the peer we need an address for 1111 * @param peer identity of the peer we need an address for
1107 * @param cont the continuation to call with the address
1108 * @param cont_cls the cls for the @a cont
1109 * @return suggest handle 1112 * @return suggest handle
1110 */ 1113 */
1111struct GNUNET_ATS_SuggestHandle * 1114struct GNUNET_ATS_SuggestHandle *
1112GNUNET_ATS_suggest_address (struct GNUNET_ATS_SchedulingHandle *sh, 1115GNUNET_ATS_suggest_address (struct GNUNET_ATS_SchedulingHandle *sh,
1113 const struct GNUNET_PeerIdentity *peer, 1116 const struct GNUNET_PeerIdentity *peer)
1114 GNUNET_ATS_AddressSuggestionCallback cont,
1115 void *cont_cls)
1116{ 1117{
1117 struct PendingMessage *p; 1118 struct PendingMessage *p;
1118 struct RequestAddressMessage *m; 1119 struct RequestAddressMessage *m;
@@ -1123,17 +1124,20 @@ GNUNET_ATS_suggest_address (struct GNUNET_ATS_SchedulingHandle *sh,
1123 p = GNUNET_malloc (sizeof (struct PendingMessage) + 1124 p = GNUNET_malloc (sizeof (struct PendingMessage) +
1124 sizeof (struct RequestAddressMessage)); 1125 sizeof (struct RequestAddressMessage));
1125 p->size = sizeof (struct RequestAddressMessage); 1126 p->size = sizeof (struct RequestAddressMessage);
1126 p->is_init = GNUNET_NO;
1127 m = (struct RequestAddressMessage *) &p[1]; 1127 m = (struct RequestAddressMessage *) &p[1];
1128 m->header.type = htons (GNUNET_MESSAGE_TYPE_ATS_REQUEST_ADDRESS); 1128 m->header.type = htons (GNUNET_MESSAGE_TYPE_ATS_REQUEST_ADDRESS);
1129 m->header.size = htons (sizeof (struct RequestAddressMessage)); 1129 m->header.size = htons (sizeof (struct RequestAddressMessage));
1130 m->reserved = htonl (0); 1130 m->reserved = htonl (0);
1131 m->peer = *peer; 1131 m->peer = *peer;
1132 GNUNET_CONTAINER_DLL_insert_tail (sh->pending_head, sh->pending_tail, p); 1132 GNUNET_CONTAINER_DLL_insert_tail (sh->pending_head,
1133 sh->pending_tail,
1134 p);
1133 do_transmit (sh); 1135 do_transmit (sh);
1134 s = GNUNET_new (struct GNUNET_ATS_SuggestHandle); 1136 s = GNUNET_new (struct GNUNET_ATS_SuggestHandle);
1135 s->id = (*peer); 1137 s->id = *peer;
1136 GNUNET_CONTAINER_DLL_insert_tail (sh->sug_head, sh->sug_tail, s); 1138 GNUNET_CONTAINER_DLL_insert_tail (sh->sug_head,
1139 sh->sug_tail,
1140 s);
1137 return s; 1141 return s;
1138} 1142}
1139 1143
diff --git a/src/ats/test_ats_solver_add_address_and_request.c b/src/ats/test_ats_solver_add_address_and_request.c
index cca1e4692..0fb678166 100644
--- a/src/ats/test_ats_solver_add_address_and_request.c
+++ b/src/ats/test_ats_solver_add_address_and_request.c
@@ -159,7 +159,7 @@ stat_cb(void *cls, const char *subsystem,
159 159
160 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "ATS statistics: `%s' `%s' %llu\n", 160 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "ATS statistics: `%s' `%s' %llu\n",
161 subsystem,name, value); 161 subsystem,name, value);
162 GNUNET_ATS_suggest_address (sched_ats, &p.id, NULL, NULL); 162 GNUNET_ATS_suggest_address (sched_ats, &p.id);
163 return GNUNET_OK; 163 return GNUNET_OK;
164} 164}
165 165
diff --git a/src/ats/test_ats_solver_alternative_after_delete_address.c b/src/ats/test_ats_solver_alternative_after_delete_address.c
index 1f713801f..fd6a5188a 100644
--- a/src/ats/test_ats_solver_alternative_after_delete_address.c
+++ b/src/ats/test_ats_solver_alternative_after_delete_address.c
@@ -266,11 +266,12 @@ stat_cb(void *cls, const char *subsystem,
266 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "All addresses added, requesting....\n"); 266 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "All addresses added, requesting....\n");
267 /* We have 2 addresses, so we can request */ 267 /* We have 2 addresses, so we can request */
268 addresses_added = GNUNET_YES; 268 addresses_added = GNUNET_YES;
269 GNUNET_ATS_suggest_address (sched_ats, &p.id, NULL, NULL); 269 GNUNET_ATS_suggest_address (sched_ats, &p.id);
270 } 270 }
271 return GNUNET_OK; 271 return GNUNET_OK;
272} 272}
273 273
274
274static void 275static void
275run (void *cls, const struct GNUNET_CONFIGURATION_Handle *mycfg, 276run (void *cls, const struct GNUNET_CONFIGURATION_Handle *mycfg,
276 struct GNUNET_TESTING_Peer *peer) 277 struct GNUNET_TESTING_Peer *peer)
diff --git a/src/ats/test_ats_solver_convergence.c b/src/ats/test_ats_solver_convergence.c
index aa8704ccf..e33b138ac 100644
--- a/src/ats/test_ats_solver_convergence.c
+++ b/src/ats/test_ats_solver_convergence.c
@@ -219,7 +219,7 @@ stat_cb(void *cls, const char *subsystem,
219 "ATS statistics: `%s' `%s' %llu\n", 219 "ATS statistics: `%s' `%s' %llu\n",
220 subsystem,name, 220 subsystem,name,
221 (unsigned long long) value); 221 (unsigned long long) value);
222 GNUNET_ATS_suggest_address (sched_ats, &p.id, NULL, NULL); 222 GNUNET_ATS_suggest_address (sched_ats, &p.id);
223 return GNUNET_OK; 223 return GNUNET_OK;
224} 224}
225 225
diff --git a/src/ats/test_ats_solver_preferences.c b/src/ats/test_ats_solver_preferences.c
index 946cb5476..048e19b6b 100644
--- a/src/ats/test_ats_solver_preferences.c
+++ b/src/ats/test_ats_solver_preferences.c
@@ -256,9 +256,10 @@ run (void *cls, const struct GNUNET_CONFIGURATION_Handle *mycfg,
256 /* Adding address */ 256 /* Adding address */
257 GNUNET_ATS_address_add (sched_ats, &test_hello_address, test_session, 257 GNUNET_ATS_address_add (sched_ats, &test_hello_address, test_session,
258 test_ats_info, test_ats_count); 258 test_ats_info, test_ats_count);
259 GNUNET_ATS_suggest_address(sched_ats, &test_hello_address.peer, NULL, NULL); 259 GNUNET_ATS_suggest_address(sched_ats, &test_hello_address.peer);
260} 260}
261 261
262
262int 263int
263main (int argc, char *argv[]) 264main (int argc, char *argv[])
264{ 265{
diff --git a/src/ats/test_ats_solver_request_and_add_address.c b/src/ats/test_ats_solver_request_and_add_address.c
index 3c7b8a522..a70d3e4a5 100644
--- a/src/ats/test_ats_solver_request_and_add_address.c
+++ b/src/ats/test_ats_solver_request_and_add_address.c
@@ -199,7 +199,7 @@ run (void *cls, const struct GNUNET_CONFIGURATION_Handle *mycfg,
199 test_hello_address.address_length = test_addr.addr_len; 199 test_hello_address.address_length = test_addr.addr_len;
200 200
201 /* Request */ 201 /* Request */
202 GNUNET_ATS_suggest_address (sched_ats, &p.id, NULL, NULL); 202 GNUNET_ATS_suggest_address (sched_ats, &p.id);
203 203
204 204
205 /* Adding address */ 205 /* Adding address */
diff --git a/src/ats/test_ats_solver_request_and_delete_address.c b/src/ats/test_ats_solver_request_and_delete_address.c
index 1e4644b2c..c30aaf833 100644
--- a/src/ats/test_ats_solver_request_and_delete_address.c
+++ b/src/ats/test_ats_solver_request_and_delete_address.c
@@ -186,10 +186,11 @@ stat_cb(void *cls, const char *subsystem,
186 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "ATS statistics: `%s' `%s' %llu\n", 186 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "ATS statistics: `%s' `%s' %llu\n",
187 subsystem,name, value); 187 subsystem,name, value);
188 if (GNUNET_NO == address_deleted) 188 if (GNUNET_NO == address_deleted)
189 GNUNET_ATS_suggest_address (sched_ats, &p.id, NULL, NULL); 189 GNUNET_ATS_suggest_address (sched_ats, &p.id);
190 return GNUNET_OK; 190 return GNUNET_OK;
191} 191}
192 192
193
193static void 194static void
194run (void *cls, const struct GNUNET_CONFIGURATION_Handle *mycfg, 195run (void *cls, const struct GNUNET_CONFIGURATION_Handle *mycfg,
195 struct GNUNET_TESTING_Peer *peer) 196 struct GNUNET_TESTING_Peer *peer)
diff --git a/src/include/gnunet_ats_service.h b/src/include/gnunet_ats_service.h
index 8b1aaf5c7..7be2e4758 100644
--- a/src/include/gnunet_ats_service.h
+++ b/src/include/gnunet_ats_service.h
@@ -386,15 +386,11 @@ GNUNET_ATS_reset_backoff (struct GNUNET_ATS_SchedulingHandle *sh,
386 * 386 *
387 * @param sh handle 387 * @param sh handle
388 * @param peer identity of the peer we need an address for 388 * @param peer identity of the peer we need an address for
389 * @param cont the continuation to indicate success to call with the address
390 * @param cont_cls the closure for the @a cont
391 * @return suggestion handle 389 * @return suggestion handle
392 */ 390 */
393struct GNUNET_ATS_SuggestHandle * 391struct GNUNET_ATS_SuggestHandle *
394GNUNET_ATS_suggest_address (struct GNUNET_ATS_SchedulingHandle *sh, 392GNUNET_ATS_suggest_address (struct GNUNET_ATS_SchedulingHandle *sh,
395 const struct GNUNET_PeerIdentity *peer, 393 const struct GNUNET_PeerIdentity *peer);
396 GNUNET_ATS_AddressSuggestionCallback cont,
397 void *cont_cls);
398 394
399 395
400/** 396/**
diff --git a/src/transport/gnunet-service-transport.c b/src/transport/gnunet-service-transport.c
index cd131ae39..03fbc95db 100644
--- a/src/transport/gnunet-service-transport.c
+++ b/src/transport/gnunet-service-transport.c
@@ -928,10 +928,14 @@ ats_request_address_change (void *cls,
928 return; 928 return;
929 } 929 }
930 930
931 GST_neighbours_switch_to_address (&address->peer, address, session, ats, 931 GST_neighbours_switch_to_address (&address->peer,
932 ats_count, bandwidth_in, bandwidth_out); 932 address,
933 session,
934 ats, ats_count,
935 bandwidth_in, bandwidth_out);
933} 936}
934 937
938
935/** 939/**
936 * Function called to notify transport users that another 940 * Function called to notify transport users that another
937 * peer connected to us. 941 * peer connected to us.
diff --git a/src/transport/gnunet-service-transport_neighbours.c b/src/transport/gnunet-service-transport_neighbours.c
index b4db4c2cb..9f2f210fb 100644
--- a/src/transport/gnunet-service-transport_neighbours.c
+++ b/src/transport/gnunet-service-transport_neighbours.c
@@ -2143,21 +2143,6 @@ setup_neighbour (const struct GNUNET_PeerIdentity *peer)
2143 return n; 2143 return n;
2144} 2144}
2145 2145
2146/* We received a address suggestion after requesting an address in
2147 * try_connect or after receiving a connect, switch to address
2148 */
2149static void
2150address_suggest_cont (void *cls,
2151 const struct GNUNET_PeerIdentity *peer,
2152 const struct GNUNET_HELLO_Address *address, struct Session *session,
2153 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
2154 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in,
2155 const struct GNUNET_ATS_Information *ats, uint32_t ats_count)
2156{
2157 GST_neighbours_switch_to_address(peer, address, session, ats, ats_count,
2158 bandwidth_in, bandwidth_out);
2159}
2160
2161 2146
2162struct BlacklistCheckSwitchContext 2147struct BlacklistCheckSwitchContext
2163{ 2148{
@@ -2217,8 +2202,7 @@ try_connect_bl_check_cont (void *cls,
2217 GNUNET_TIME_relative_to_absolute (ATS_RESPONSE_TIMEOUT)); 2202 GNUNET_TIME_relative_to_absolute (ATS_RESPONSE_TIMEOUT));
2218 GNUNET_ATS_reset_backoff (GST_ats, peer); 2203 GNUNET_ATS_reset_backoff (GST_ats, peer);
2219 n->suggest_handle = GNUNET_ATS_suggest_address (GST_ats, 2204 n->suggest_handle = GNUNET_ATS_suggest_address (GST_ats,
2220 peer, 2205 peer);
2221 &address_suggest_cont, n);
2222} 2206}
2223 2207
2224 2208
@@ -2361,7 +2345,7 @@ GST_neighbours_handle_session_syn (const struct GNUNET_MessageHeader *message,
2361 set_state_and_timeout (n, GNUNET_TRANSPORT_PS_SYN_RECV_ATS, 2345 set_state_and_timeout (n, GNUNET_TRANSPORT_PS_SYN_RECV_ATS,
2362 GNUNET_TIME_relative_to_absolute (ATS_RESPONSE_TIMEOUT)); 2346 GNUNET_TIME_relative_to_absolute (ATS_RESPONSE_TIMEOUT));
2363 if (NULL == n->suggest_handle) 2347 if (NULL == n->suggest_handle)
2364 GNUNET_ATS_suggest_address (GST_ats, peer, address_suggest_cont, n); 2348 GNUNET_ATS_suggest_address (GST_ats, peer);
2365 break; 2349 break;
2366 case GNUNET_TRANSPORT_PS_INIT_ATS: 2350 case GNUNET_TRANSPORT_PS_INIT_ATS:
2367 /* SYN message takes priority over us asking ATS for address: 2351 /* SYN message takes priority over us asking ATS for address:
@@ -2415,7 +2399,7 @@ GST_neighbours_handle_session_syn (const struct GNUNET_MessageHeader *message,
2415 n->ack_state = ACK_SEND_SYN_ACK; 2399 n->ack_state = ACK_SEND_SYN_ACK;
2416 n->connect_ack_timestamp = ts; 2400 n->connect_ack_timestamp = ts;
2417 /* Request an address for the peer */ 2401 /* Request an address for the peer */
2418 GNUNET_ATS_suggest_address (GST_ats, peer, address_suggest_cont, n); 2402 GNUNET_ATS_suggest_address (GST_ats, peer);
2419 GNUNET_ATS_reset_backoff (GST_ats, peer); 2403 GNUNET_ATS_reset_backoff (GST_ats, peer);
2420 set_state (n, GNUNET_TRANSPORT_PS_SYN_RECV_ATS); 2404 set_state (n, GNUNET_TRANSPORT_PS_SYN_RECV_ATS);
2421 break; 2405 break;