diff options
author | Christian Grothoff <christian@grothoff.org> | 2013-12-18 13:43:19 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2013-12-18 13:43:19 +0000 |
commit | 12d65c145ff0f22fc17c84bba20c7f81cc1603f9 (patch) | |
tree | 84b230337aeaf879ff9ae7250e8b2c7b738a46d1 /src/transport | |
parent | e85f3c49ff318af847a3bbd97571ce25b0ae2752 (diff) | |
download | gnunet-12d65c145ff0f22fc17c84bba20c7f81cc1603f9.tar.gz gnunet-12d65c145ff0f22fc17c84bba20c7f81cc1603f9.zip |
pass ATS information for incoming sessions immediately to ATS service
Diffstat (limited to 'src/transport')
-rw-r--r-- | src/transport/gnunet-service-transport.c | 35 | ||||
-rw-r--r-- | src/transport/gnunet-service-transport.h | 6 | ||||
-rw-r--r-- | src/transport/gnunet-service-transport_neighbours.c | 14 |
3 files changed, 34 insertions, 21 deletions
diff --git a/src/transport/gnunet-service-transport.c b/src/transport/gnunet-service-transport.c index 1f8ffd5bc..f54d30e21 100644 --- a/src/transport/gnunet-service-transport.c +++ b/src/transport/gnunet-service-transport.c | |||
@@ -205,7 +205,7 @@ process_payload (const struct GNUNET_PeerIdentity *peer, | |||
205 | return ret; | 205 | return ret; |
206 | } | 206 | } |
207 | 207 | ||
208 | GST_ats_add_address (address, session); | 208 | GST_ats_add_address (address, session, NULL, 0); |
209 | 209 | ||
210 | if (GNUNET_YES != do_forward) | 210 | if (GNUNET_YES != do_forward) |
211 | return ret; | 211 | return ret; |
@@ -531,13 +531,17 @@ plugin_env_address_to_type (void *cls, | |||
531 | * | 531 | * |
532 | * @param address the address | 532 | * @param address the address |
533 | * @param session the session | 533 | * @param session the session |
534 | * @param ats ats information | ||
535 | * @param ats_count number of @a ats information | ||
534 | */ | 536 | */ |
535 | void | 537 | void |
536 | GST_ats_add_address (const struct GNUNET_HELLO_Address *address, | 538 | GST_ats_add_address (const struct GNUNET_HELLO_Address *address, |
537 | struct Session *session) | 539 | struct Session *session, |
540 | const struct GNUNET_ATS_Information *ats, | ||
541 | uint32_t ats_count) | ||
538 | { | 542 | { |
539 | struct GNUNET_TRANSPORT_PluginFunctions *papi; | 543 | struct GNUNET_TRANSPORT_PluginFunctions *papi; |
540 | struct GNUNET_ATS_Information ats; | 544 | struct GNUNET_ATS_Information ats2[ats_count + 1]; |
541 | uint32_t net; | 545 | uint32_t net; |
542 | 546 | ||
543 | /* valid new address, let ATS know! */ | 547 | /* valid new address, let ATS know! */ |
@@ -566,8 +570,9 @@ GST_ats_add_address (const struct GNUNET_HELLO_Address *address, | |||
566 | address->transport_name); | 570 | address->transport_name); |
567 | GNUNET_break (0); | 571 | GNUNET_break (0); |
568 | } | 572 | } |
569 | ats.type = htonl (GNUNET_ATS_NETWORK_TYPE); | 573 | ats2[0].type = htonl (GNUNET_ATS_NETWORK_TYPE); |
570 | ats.value = htonl(net); | 574 | ats2[0].value = htonl(net); |
575 | memcpy (&ats2[1], ats, sizeof (struct GNUNET_ATS_Information) * ats_count); | ||
571 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 576 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
572 | "Notifying ATS about peer `%s''s new address `%s' session %p in network %s\n", | 577 | "Notifying ATS about peer `%s''s new address `%s' session %p in network %s\n", |
573 | GNUNET_i2s (&address->peer), | 578 | GNUNET_i2s (&address->peer), |
@@ -575,7 +580,8 @@ GST_ats_add_address (const struct GNUNET_HELLO_Address *address, | |||
575 | session, | 580 | session, |
576 | GNUNET_ATS_print_network_type(net)); | 581 | GNUNET_ATS_print_network_type(net)); |
577 | GNUNET_ATS_address_add (GST_ats, | 582 | GNUNET_ATS_address_add (GST_ats, |
578 | address, session, &ats, 1); | 583 | address, session, |
584 | ats2, ats_count + 1); | ||
579 | } | 585 | } |
580 | 586 | ||
581 | 587 | ||
@@ -704,16 +710,13 @@ plugin_env_session_start (void *cls, | |||
704 | } | 710 | } |
705 | 711 | ||
706 | addr = GNUNET_HELLO_address_allocate (peer, plugin, address, address_len); | 712 | addr = GNUNET_HELLO_address_allocate (peer, plugin, address, address_len); |
707 | GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, | 713 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
708 | "Notification from plugin `%s' about new session %p from peer `%s' address `%s'\n", | 714 | "Notification from plugin `%s' about new session %p from peer `%s' address `%s'\n", |
709 | plugin, | 715 | plugin, |
710 | session, | 716 | session, |
711 | GNUNET_i2s (peer), | 717 | GNUNET_i2s (peer), |
712 | GST_plugins_a2s (addr)); | 718 | GST_plugins_a2s (addr)); |
713 | GST_ats_add_address (addr, session); | 719 | GST_ats_add_address (addr, session, ats, ats_count); |
714 | |||
715 | if (0 < ats_count) | ||
716 | GST_ats_update_metrics (peer, addr, session, ats, ats_count); | ||
717 | GNUNET_free(addr); | 720 | GNUNET_free(addr); |
718 | } | 721 | } |
719 | 722 | ||
diff --git a/src/transport/gnunet-service-transport.h b/src/transport/gnunet-service-transport.h index 01a821a4e..1a079e167 100644 --- a/src/transport/gnunet-service-transport.h +++ b/src/transport/gnunet-service-transport.h | |||
@@ -98,10 +98,14 @@ GST_receive_callback (void *cls, | |||
98 | * | 98 | * |
99 | * @param address the address | 99 | * @param address the address |
100 | * @param session the session | 100 | * @param session the session |
101 | * @param ats ats information | ||
102 | * @param ats_count number of @a ats information | ||
101 | */ | 103 | */ |
102 | void | 104 | void |
103 | GST_ats_add_address (const struct GNUNET_HELLO_Address *address, | 105 | GST_ats_add_address (const struct GNUNET_HELLO_Address *address, |
104 | struct Session *session); | 106 | struct Session *session, |
107 | const struct GNUNET_ATS_Information *ats, | ||
108 | uint32_t ats_count); | ||
105 | 109 | ||
106 | 110 | ||
107 | /** | 111 | /** |
diff --git a/src/transport/gnunet-service-transport_neighbours.c b/src/transport/gnunet-service-transport_neighbours.c index b095045c1..e7e84506f 100644 --- a/src/transport/gnunet-service-transport_neighbours.c +++ b/src/transport/gnunet-service-transport_neighbours.c | |||
@@ -1914,7 +1914,7 @@ handle_test_blacklist_cont (void *cls, | |||
1914 | GNUNET_i2s (peer), | 1914 | GNUNET_i2s (peer), |
1915 | (GNUNET_OK == result) ? "allowed" : "FORBIDDEN"); | 1915 | (GNUNET_OK == result) ? "allowed" : "FORBIDDEN"); |
1916 | if (GNUNET_OK == result) | 1916 | if (GNUNET_OK == result) |
1917 | GST_ats_add_address (bcc->na.address, bcc->na.session); | 1917 | GST_ats_add_address (bcc->na.address, bcc->na.session, NULL, 0); |
1918 | else | 1918 | else |
1919 | { | 1919 | { |
1920 | /* Blacklist disagreed on connecting to a peer with this address | 1920 | /* Blacklist disagreed on connecting to a peer with this address |
@@ -2949,7 +2949,9 @@ GST_neighbours_handle_connect_ack (const struct GNUNET_MessageHeader *message, | |||
2949 | n->primary_address.bandwidth_in, | 2949 | n->primary_address.bandwidth_in, |
2950 | n->primary_address.bandwidth_out); | 2950 | n->primary_address.bandwidth_out); |
2951 | /* Tell ATS that the outbound session we created to send CONNECT was successful */ | 2951 | /* Tell ATS that the outbound session we created to send CONNECT was successful */ |
2952 | GST_ats_add_address (n->primary_address.address, n->primary_address.session); | 2952 | GST_ats_add_address (n->primary_address.address, |
2953 | n->primary_address.session, | ||
2954 | NULL, 0); | ||
2953 | set_address (&n->primary_address, | 2955 | set_address (&n->primary_address, |
2954 | n->primary_address.address, | 2956 | n->primary_address.address, |
2955 | n->primary_address.session, | 2957 | n->primary_address.session, |
@@ -2995,7 +2997,9 @@ GST_neighbours_handle_connect_ack (const struct GNUNET_MessageHeader *message, | |||
2995 | n->timeout = GNUNET_TIME_relative_to_absolute (GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT); | 2997 | n->timeout = GNUNET_TIME_relative_to_absolute (GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT); |
2996 | GNUNET_break (GNUNET_NO == n->alternative_address.ats_active); | 2998 | GNUNET_break (GNUNET_NO == n->alternative_address.ats_active); |
2997 | 2999 | ||
2998 | GST_ats_add_address (n->alternative_address.address, n->alternative_address.session); | 3000 | GST_ats_add_address (n->alternative_address.address, |
3001 | n->alternative_address.session, | ||
3002 | NULL, 0); | ||
2999 | set_address (&n->primary_address, | 3003 | set_address (&n->primary_address, |
3000 | n->alternative_address.address, | 3004 | n->alternative_address.address, |
3001 | n->alternative_address.session, | 3005 | n->alternative_address.session, |
@@ -3221,7 +3225,9 @@ GST_neighbours_handle_session_ack (const struct GNUNET_MessageHeader *message, | |||
3221 | n->primary_address.bandwidth_in, | 3225 | n->primary_address.bandwidth_in, |
3222 | n->primary_address.bandwidth_out); | 3226 | n->primary_address.bandwidth_out); |
3223 | 3227 | ||
3224 | GST_ats_add_address (n->primary_address.address, n->primary_address.session); | 3228 | GST_ats_add_address (n->primary_address.address, |
3229 | n->primary_address.session, | ||
3230 | NULL, 0); | ||
3225 | set_address (&n->primary_address, | 3231 | set_address (&n->primary_address, |
3226 | n->primary_address.address, | 3232 | n->primary_address.address, |
3227 | n->primary_address.session, | 3233 | n->primary_address.session, |