diff options
-rw-r--r-- | src/ats/ats.h | 9 | ||||
-rw-r--r-- | src/ats/ats_api_scheduling.c | 13 | ||||
-rw-r--r-- | src/ats/gnunet-service-ats_addresses.c | 69 | ||||
-rw-r--r-- | src/ats/gnunet-service-ats_addresses.h | 23 | ||||
-rw-r--r-- | src/ats/gnunet-service-ats_performance.c | 76 | ||||
-rw-r--r-- | src/ats/gnunet-service-ats_scheduling.c | 26 | ||||
-rw-r--r-- | src/ats/gnunet-service-ats_scheduling.h | 20 |
7 files changed, 140 insertions, 96 deletions
diff --git a/src/ats/ats.h b/src/ats/ats.h index 4f8ab1b81..48c8a35d5 100644 --- a/src/ats/ats.h +++ b/src/ats/ats.h | |||
@@ -79,12 +79,15 @@ struct AddressUpdateMessage | |||
79 | 79 | ||
80 | struct GNUNET_PeerIdentity peer; | 80 | struct GNUNET_PeerIdentity peer; |
81 | 81 | ||
82 | |||
82 | uint16_t address_length GNUNET_PACKED; | 83 | uint16_t address_length GNUNET_PACKED; |
83 | 84 | ||
84 | uint16_t plugin_name_length GNUNET_PACKED; | 85 | uint16_t plugin_name_length GNUNET_PACKED; |
85 | 86 | ||
86 | uint32_t session_id GNUNET_PACKED; | 87 | uint32_t session_id GNUNET_PACKED; |
87 | 88 | ||
89 | uint32_t address_local_info GNUNET_PACKED; | ||
90 | |||
88 | /* followed by: | 91 | /* followed by: |
89 | * - struct GNUNET_ATS_Information [ats_count]; | 92 | * - struct GNUNET_ATS_Information [ats_count]; |
90 | * - char address[address_length] | 93 | * - char address[address_length] |
@@ -107,6 +110,8 @@ struct AddressUseMessage | |||
107 | 110 | ||
108 | uint32_t session_id GNUNET_PACKED; | 111 | uint32_t session_id GNUNET_PACKED; |
109 | 112 | ||
113 | uint32_t address_local_info GNUNET_PACKED; | ||
114 | |||
110 | /* followed by: | 115 | /* followed by: |
111 | * - char address[address_length] | 116 | * - char address[address_length] |
112 | * - char plugin_name[plugin_name_length] (including '\0'-termination). | 117 | * - char plugin_name[plugin_name_length] (including '\0'-termination). |
@@ -129,6 +134,8 @@ struct AddressDestroyedMessage | |||
129 | 134 | ||
130 | uint32_t session_id GNUNET_PACKED; | 135 | uint32_t session_id GNUNET_PACKED; |
131 | 136 | ||
137 | uint32_t address_local_info GNUNET_PACKED; | ||
138 | |||
132 | /* followed by: | 139 | /* followed by: |
133 | * - char address[address_length] | 140 | * - char address[address_length] |
134 | * - char plugin_name[plugin_name_length] (including '\0'-termination). | 141 | * - char plugin_name[plugin_name_length] (including '\0'-termination). |
@@ -151,6 +158,8 @@ struct AddressSuggestionMessage | |||
151 | 158 | ||
152 | uint32_t session_id GNUNET_PACKED; | 159 | uint32_t session_id GNUNET_PACKED; |
153 | 160 | ||
161 | uint32_t address_local_info GNUNET_PACKED; | ||
162 | |||
154 | struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out; | 163 | struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out; |
155 | 164 | ||
156 | struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in; | 165 | struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in; |
diff --git a/src/ats/ats_api_scheduling.c b/src/ats/ats_api_scheduling.c index d23de8940..b9574ff5c 100644 --- a/src/ats/ats_api_scheduling.c +++ b/src/ats/ats_api_scheduling.c | |||
@@ -643,6 +643,7 @@ process_ats_message (void *cls, const struct GNUNET_MessageHeader *msg) | |||
643 | address.address = plugin_address; | 643 | address.address = plugin_address; |
644 | address.address_length = plugin_address_length; | 644 | address.address_length = plugin_address_length; |
645 | address.transport_name = plugin_name; | 645 | address.transport_name = plugin_name; |
646 | address.local_info = ntohl(m->address_local_info); | ||
646 | 647 | ||
647 | if ((s == NULL) && (0 == address.address_length)) | 648 | if ((s == NULL) && (0 == address.address_length)) |
648 | { | 649 | { |
@@ -1200,11 +1201,9 @@ GNUNET_ATS_address_add (struct GNUNET_ATS_SchedulingHandle *sh, | |||
1200 | return GNUNET_SYSERR; | 1201 | return GNUNET_SYSERR; |
1201 | } | 1202 | } |
1202 | 1203 | ||
1203 | namelen = | 1204 | namelen = (address->transport_name == NULL) ? 0 : strlen (address->transport_name) + 1; |
1204 | (address->transport_name == | 1205 | |
1205 | NULL) ? 0 : strlen (address->transport_name) + 1; | 1206 | msize = sizeof (struct AddressUpdateMessage) + address->address_length + |
1206 | msize = | ||
1207 | sizeof (struct AddressUpdateMessage) + address->address_length + | ||
1208 | ats_count * sizeof (struct GNUNET_ATS_Information) + namelen; | 1207 | ats_count * sizeof (struct GNUNET_ATS_Information) + namelen; |
1209 | if ((msize >= GNUNET_SERVER_MAX_MESSAGE_SIZE) || | 1208 | if ((msize >= GNUNET_SERVER_MAX_MESSAGE_SIZE) || |
1210 | (address->address_length >= GNUNET_SERVER_MAX_MESSAGE_SIZE) || | 1209 | (address->address_length >= GNUNET_SERVER_MAX_MESSAGE_SIZE) || |
@@ -1236,6 +1235,7 @@ GNUNET_ATS_address_add (struct GNUNET_ATS_SchedulingHandle *sh, | |||
1236 | m->ats_count = htonl (ats_count); | 1235 | m->ats_count = htonl (ats_count); |
1237 | m->peer = address->peer; | 1236 | m->peer = address->peer; |
1238 | m->address_length = htons (address->address_length); | 1237 | m->address_length = htons (address->address_length); |
1238 | m->address_local_info = htonl ((uint32_t) address->local_info); | ||
1239 | m->plugin_name_length = htons (namelen); | 1239 | m->plugin_name_length = htons (namelen); |
1240 | m->session_id = htonl (s); | 1240 | m->session_id = htonl (s); |
1241 | 1241 | ||
@@ -1330,6 +1330,7 @@ GNUNET_ATS_address_update (struct GNUNET_ATS_SchedulingHandle *sh, | |||
1330 | m->ats_count = htonl (ats_count); | 1330 | m->ats_count = htonl (ats_count); |
1331 | m->peer = address->peer; | 1331 | m->peer = address->peer; |
1332 | m->address_length = htons (address->address_length); | 1332 | m->address_length = htons (address->address_length); |
1333 | m->address_local_info = htonl ((uint32_t) address->local_info); | ||
1333 | m->plugin_name_length = htons (namelen); | 1334 | m->plugin_name_length = htons (namelen); |
1334 | 1335 | ||
1335 | m->session_id = htonl (s); | 1336 | m->session_id = htonl (s); |
@@ -1413,6 +1414,7 @@ GNUNET_ATS_address_in_use (struct GNUNET_ATS_SchedulingHandle *sh, | |||
1413 | m->peer = address->peer; | 1414 | m->peer = address->peer; |
1414 | m->in_use = htons (in_use); | 1415 | m->in_use = htons (in_use); |
1415 | m->address_length = htons (address->address_length); | 1416 | m->address_length = htons (address->address_length); |
1417 | m->address_local_info = htonl ((uint32_t) address->local_info); | ||
1416 | m->plugin_name_length = htons (namelen); | 1418 | m->plugin_name_length = htons (namelen); |
1417 | 1419 | ||
1418 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 1420 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
@@ -1488,6 +1490,7 @@ GNUNET_ATS_address_destroyed (struct GNUNET_ATS_SchedulingHandle *sh, | |||
1488 | m->reserved = htonl (0); | 1490 | m->reserved = htonl (0); |
1489 | m->peer = address->peer; | 1491 | m->peer = address->peer; |
1490 | m->address_length = htons (address->address_length); | 1492 | m->address_length = htons (address->address_length); |
1493 | m->address_local_info = htonl ((uint32_t) address->local_info); | ||
1491 | m->plugin_name_length = htons (namelen); | 1494 | m->plugin_name_length = htons (namelen); |
1492 | 1495 | ||
1493 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 1496 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
diff --git a/src/ats/gnunet-service-ats_addresses.c b/src/ats/gnunet-service-ats_addresses.c index a82b21355..13bd656d4 100644 --- a/src/ats/gnunet-service-ats_addresses.c +++ b/src/ats/gnunet-service-ats_addresses.c | |||
@@ -476,8 +476,12 @@ free_address (struct ATS_Address *addr) | |||
476 | * @return the ATS_Address | 476 | * @return the ATS_Address |
477 | */ | 477 | */ |
478 | static struct ATS_Address * | 478 | static struct ATS_Address * |
479 | create_address (const struct GNUNET_PeerIdentity *peer, const char *plugin_name, | 479 | create_address (const struct GNUNET_PeerIdentity *peer, |
480 | const void *plugin_addr, size_t plugin_addr_len, uint32_t session_id) | 480 | const char *plugin_name, |
481 | const void *plugin_addr, | ||
482 | size_t plugin_addr_len, | ||
483 | uint32_t local_address_info, | ||
484 | uint32_t session_id) | ||
481 | { | 485 | { |
482 | struct ATS_Address *aa = NULL; | 486 | struct ATS_Address *aa = NULL; |
483 | int c1; | 487 | int c1; |
@@ -490,6 +494,7 @@ create_address (const struct GNUNET_PeerIdentity *peer, const char *plugin_name, | |||
490 | memcpy (&aa[1], plugin_addr, plugin_addr_len); | 494 | memcpy (&aa[1], plugin_addr, plugin_addr_len); |
491 | aa->plugin = GNUNET_strdup (plugin_name); | 495 | aa->plugin = GNUNET_strdup (plugin_name); |
492 | aa->session_id = session_id; | 496 | aa->session_id = session_id; |
497 | aa->local_address_info = local_address_info; | ||
493 | aa->active = GNUNET_NO; | 498 | aa->active = GNUNET_NO; |
494 | aa->used = GNUNET_NO; | 499 | aa->used = GNUNET_NO; |
495 | aa->solver_information = NULL; | 500 | aa->solver_information = NULL; |
@@ -642,14 +647,18 @@ find_equivalent_address (struct GAS_Addresses_Handle *handle, | |||
642 | 647 | ||
643 | static struct ATS_Address * | 648 | static struct ATS_Address * |
644 | find_exact_address (struct GAS_Addresses_Handle *handle, | 649 | find_exact_address (struct GAS_Addresses_Handle *handle, |
645 | const struct GNUNET_PeerIdentity *peer, const char *plugin_name, | 650 | const struct GNUNET_PeerIdentity *peer, |
646 | const void *plugin_addr, size_t plugin_addr_len, uint32_t session_id) | 651 | const char *plugin_name, |
652 | const void *plugin_addr, | ||
653 | size_t plugin_addr_len, | ||
654 | uint32_t local_address_info, | ||
655 | uint32_t session_id) | ||
647 | { | 656 | { |
648 | struct ATS_Address *aa; | 657 | struct ATS_Address *aa; |
649 | struct ATS_Address *ea; | 658 | struct ATS_Address *ea; |
650 | 659 | ||
651 | aa = create_address (peer, plugin_name, plugin_addr, plugin_addr_len, | 660 | aa = create_address (peer, plugin_name, plugin_addr, plugin_addr_len, |
652 | session_id); | 661 | local_address_info, session_id); |
653 | 662 | ||
654 | /* Get existing address or address with session == 0 */ | 663 | /* Get existing address or address with session == 0 */ |
655 | ea = find_equivalent_address (handle, peer, aa); | 664 | ea = find_equivalent_address (handle, peer, aa); |
@@ -727,9 +736,14 @@ get_performance_info (struct ATS_Address *address, uint32_t type) | |||
727 | */ | 736 | */ |
728 | void | 737 | void |
729 | GAS_addresses_add (struct GAS_Addresses_Handle *handle, | 738 | GAS_addresses_add (struct GAS_Addresses_Handle *handle, |
730 | const struct GNUNET_PeerIdentity *peer, const char *plugin_name, | 739 | const struct GNUNET_PeerIdentity *peer, |
731 | const void *plugin_addr, size_t plugin_addr_len, uint32_t session_id, | 740 | const char *plugin_name, |
732 | const struct GNUNET_ATS_Information *atsi, uint32_t atsi_count) | 741 | const void *plugin_addr, |
742 | size_t plugin_addr_len, | ||
743 | uint32_t local_address_info, | ||
744 | uint32_t session_id, | ||
745 | const struct GNUNET_ATS_Information *atsi, | ||
746 | uint32_t atsi_count) | ||
733 | { | 747 | { |
734 | struct ATS_Address *new_address; | 748 | struct ATS_Address *new_address; |
735 | struct ATS_Address *existing_address; | 749 | struct ATS_Address *existing_address; |
@@ -748,7 +762,7 @@ GAS_addresses_add (struct GAS_Addresses_Handle *handle, | |||
748 | GNUNET_assert(NULL != handle->addresses); | 762 | GNUNET_assert(NULL != handle->addresses); |
749 | 763 | ||
750 | new_address = create_address (peer, plugin_name, plugin_addr, plugin_addr_len, | 764 | new_address = create_address (peer, plugin_name, plugin_addr, plugin_addr_len, |
751 | session_id); | 765 | local_address_info, session_id); |
752 | atsi_delta = NULL; | 766 | atsi_delta = NULL; |
753 | disassemble_ats_information (new_address, atsi, atsi_count, &atsi_delta, | 767 | disassemble_ats_information (new_address, atsi, atsi_count, &atsi_delta, |
754 | &atsi_delta_count); | 768 | &atsi_delta_count); |
@@ -891,9 +905,14 @@ GAS_addresses_add (struct GAS_Addresses_Handle *handle, | |||
891 | */ | 905 | */ |
892 | void | 906 | void |
893 | GAS_addresses_update (struct GAS_Addresses_Handle *handle, | 907 | GAS_addresses_update (struct GAS_Addresses_Handle *handle, |
894 | const struct GNUNET_PeerIdentity *peer, const char *plugin_name, | 908 | const struct GNUNET_PeerIdentity *peer, |
895 | const void *plugin_addr, size_t plugin_addr_len, uint32_t session_id, | 909 | const char *plugin_name, |
896 | const struct GNUNET_ATS_Information *atsi, uint32_t atsi_count) | 910 | const void *plugin_addr, |
911 | size_t plugin_addr_len, | ||
912 | uint32_t local_address_info, | ||
913 | uint32_t session_id, | ||
914 | const struct GNUNET_ATS_Information *atsi, | ||
915 | uint32_t atsi_count) | ||
897 | { | 916 | { |
898 | struct ATS_Address *aa; | 917 | struct ATS_Address *aa; |
899 | struct GNUNET_ATS_Information *atsi_delta; | 918 | struct GNUNET_ATS_Information *atsi_delta; |
@@ -908,7 +927,7 @@ GAS_addresses_update (struct GAS_Addresses_Handle *handle, | |||
908 | 927 | ||
909 | /* Get existing address */ | 928 | /* Get existing address */ |
910 | aa = find_exact_address (handle, peer, plugin_name, plugin_addr, | 929 | aa = find_exact_address (handle, peer, plugin_name, plugin_addr, |
911 | plugin_addr_len, session_id); | 930 | plugin_addr_len, local_address_info, session_id); |
912 | if (aa == NULL ) | 931 | if (aa == NULL ) |
913 | return; | 932 | return; |
914 | if (NULL == aa->solver_information) | 933 | if (NULL == aa->solver_information) |
@@ -1080,8 +1099,12 @@ destroy_by_session_id (void *cls, | |||
1080 | */ | 1099 | */ |
1081 | void | 1100 | void |
1082 | GAS_addresses_destroy (struct GAS_Addresses_Handle *handle, | 1101 | GAS_addresses_destroy (struct GAS_Addresses_Handle *handle, |
1083 | const struct GNUNET_PeerIdentity *peer, const char *plugin_name, | 1102 | const struct GNUNET_PeerIdentity *peer, |
1084 | const void *plugin_addr, size_t plugin_addr_len, uint32_t session_id) | 1103 | const char *plugin_name, |
1104 | const void *plugin_addr, | ||
1105 | size_t plugin_addr_len, | ||
1106 | uint32_t local_address_info, | ||
1107 | uint32_t session_id) | ||
1085 | { | 1108 | { |
1086 | struct ATS_Address *ea; | 1109 | struct ATS_Address *ea; |
1087 | struct DestroyContext dc; | 1110 | struct DestroyContext dc; |
@@ -1090,7 +1113,7 @@ GAS_addresses_destroy (struct GAS_Addresses_Handle *handle, | |||
1090 | 1113 | ||
1091 | /* Get existing address */ | 1114 | /* Get existing address */ |
1092 | ea = find_exact_address (handle, peer, plugin_name, plugin_addr, | 1115 | ea = find_exact_address (handle, peer, plugin_name, plugin_addr, |
1093 | plugin_addr_len, session_id); | 1116 | plugin_addr_len, local_address_info, session_id); |
1094 | if (ea == NULL ) | 1117 | if (ea == NULL ) |
1095 | { | 1118 | { |
1096 | GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, | 1119 | GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, |
@@ -1106,7 +1129,7 @@ GAS_addresses_destroy (struct GAS_Addresses_Handle *handle, | |||
1106 | GNUNET_break(0 < strlen (plugin_name)); | 1129 | GNUNET_break(0 < strlen (plugin_name)); |
1107 | dc.handle = handle; | 1130 | dc.handle = handle; |
1108 | dc.aa = create_address (peer, plugin_name, plugin_addr, plugin_addr_len, | 1131 | dc.aa = create_address (peer, plugin_name, plugin_addr, plugin_addr_len, |
1109 | session_id); | 1132 | local_address_info, session_id); |
1110 | 1133 | ||
1111 | GNUNET_CONTAINER_multipeermap_get_multiple (handle->addresses, | 1134 | GNUNET_CONTAINER_multipeermap_get_multiple (handle->addresses, |
1112 | peer, | 1135 | peer, |
@@ -1138,7 +1161,9 @@ GAS_addresses_destroy (struct GAS_Addresses_Handle *handle, | |||
1138 | int | 1161 | int |
1139 | GAS_addresses_in_use (struct GAS_Addresses_Handle *handle, | 1162 | GAS_addresses_in_use (struct GAS_Addresses_Handle *handle, |
1140 | const struct GNUNET_PeerIdentity *peer, const char *plugin_name, | 1163 | const struct GNUNET_PeerIdentity *peer, const char *plugin_name, |
1141 | const void *plugin_addr, size_t plugin_addr_len, uint32_t session_id, | 1164 | const void *plugin_addr, size_t plugin_addr_len, |
1165 | uint32_t local_address_info, | ||
1166 | uint32_t session_id, | ||
1142 | int in_use) | 1167 | int in_use) |
1143 | { | 1168 | { |
1144 | struct ATS_Address *ea; | 1169 | struct ATS_Address *ea; |
@@ -1149,7 +1174,7 @@ GAS_addresses_in_use (struct GAS_Addresses_Handle *handle, | |||
1149 | return GNUNET_SYSERR; | 1174 | return GNUNET_SYSERR; |
1150 | 1175 | ||
1151 | ea = find_exact_address (handle, peer, plugin_name, plugin_addr, | 1176 | ea = find_exact_address (handle, peer, plugin_name, plugin_addr, |
1152 | plugin_addr_len, session_id); | 1177 | plugin_addr_len, local_address_info, session_id); |
1153 | if (NULL == ea) | 1178 | if (NULL == ea) |
1154 | { | 1179 | { |
1155 | GNUNET_log(GNUNET_ERROR_TYPE_WARNING, | 1180 | GNUNET_log(GNUNET_ERROR_TYPE_WARNING, |
@@ -1261,7 +1286,8 @@ GAS_addresses_request_address (struct GAS_Addresses_Handle *handle, | |||
1261 | aa, GNUNET_i2s (peer)); | 1286 | aa, GNUNET_i2s (peer)); |
1262 | 1287 | ||
1263 | GAS_scheduling_transmit_address_suggestion (peer, aa->plugin, aa->addr, | 1288 | GAS_scheduling_transmit_address_suggestion (peer, aa->plugin, aa->addr, |
1264 | aa->addr_len, aa->session_id, aa->atsi, aa->atsi_count, | 1289 | aa->addr_len, aa->local_address_info, aa->session_id, |
1290 | aa->atsi, aa->atsi_count, | ||
1265 | aa->assigned_bw_out, aa->assigned_bw_in); | 1291 | aa->assigned_bw_out, aa->assigned_bw_in); |
1266 | 1292 | ||
1267 | aa->block_interval = GNUNET_TIME_relative_add (aa->block_interval, | 1293 | aa->block_interval = GNUNET_TIME_relative_add (aa->block_interval, |
@@ -2073,7 +2099,8 @@ bandwidth_changed_cb (void *cls, struct ATS_Address *address) | |||
2073 | 2099 | ||
2074 | /* *Notify scheduling clients about suggestion */ | 2100 | /* *Notify scheduling clients about suggestion */ |
2075 | GAS_scheduling_transmit_address_suggestion (&address->peer, address->plugin, | 2101 | GAS_scheduling_transmit_address_suggestion (&address->peer, address->plugin, |
2076 | address->addr, address->addr_len, address->session_id, address->atsi, | 2102 | address->addr, address->addr_len, address->local_address_info, |
2103 | address->session_id, address->atsi, | ||
2077 | address->atsi_count, address->assigned_bw_out, address->assigned_bw_in); | 2104 | address->atsi_count, address->assigned_bw_out, address->assigned_bw_in); |
2078 | } | 2105 | } |
2079 | 2106 | ||
diff --git a/src/ats/gnunet-service-ats_addresses.h b/src/ats/gnunet-service-ats_addresses.h index 8b7a58d52..a793d35d8 100644 --- a/src/ats/gnunet-service-ats_addresses.h +++ b/src/ats/gnunet-service-ats_addresses.h | |||
@@ -312,6 +312,8 @@ struct ATS_Address | |||
312 | */ | 312 | */ |
313 | uint32_t session_id; | 313 | uint32_t session_id; |
314 | 314 | ||
315 | uint32_t local_address_info; | ||
316 | |||
315 | /** | 317 | /** |
316 | * Address | 318 | * Address |
317 | */ | 319 | */ |
@@ -427,9 +429,14 @@ GAS_addresses_done (struct GAS_Addresses_Handle *handle); | |||
427 | */ | 429 | */ |
428 | void | 430 | void |
429 | GAS_addresses_add (struct GAS_Addresses_Handle *handle, | 431 | GAS_addresses_add (struct GAS_Addresses_Handle *handle, |
430 | const struct GNUNET_PeerIdentity *peer, const char *plugin_name, | 432 | const struct GNUNET_PeerIdentity *peer, |
431 | const void *plugin_addr, size_t plugin_addr_len, uint32_t session_id, | 433 | const char *plugin_name, |
432 | const struct GNUNET_ATS_Information *atsi, uint32_t atsi_count); | 434 | const void *plugin_addr, |
435 | size_t plugin_addr_len, | ||
436 | uint32_t local_address_info, | ||
437 | uint32_t session_id, | ||
438 | const struct GNUNET_ATS_Information *atsi, | ||
439 | uint32_t atsi_count); | ||
433 | 440 | ||
434 | /** | 441 | /** |
435 | * Notification about active use of an address. | 442 | * Notification about active use of an address. |
@@ -453,7 +460,9 @@ GAS_addresses_add (struct GAS_Addresses_Handle *handle, | |||
453 | int | 460 | int |
454 | GAS_addresses_in_use (struct GAS_Addresses_Handle *handle, | 461 | GAS_addresses_in_use (struct GAS_Addresses_Handle *handle, |
455 | const struct GNUNET_PeerIdentity *peer, const char *plugin_name, | 462 | const struct GNUNET_PeerIdentity *peer, const char *plugin_name, |
456 | const void *plugin_addr, size_t plugin_addr_len, uint32_t session_id, | 463 | const void *plugin_addr, size_t plugin_addr_len, |
464 | uint32_t local_address_info, | ||
465 | uint32_t session_id, | ||
457 | int in_use); | 466 | int in_use); |
458 | 467 | ||
459 | /** | 468 | /** |
@@ -474,7 +483,8 @@ GAS_addresses_in_use (struct GAS_Addresses_Handle *handle, | |||
474 | void | 483 | void |
475 | GAS_addresses_update (struct GAS_Addresses_Handle *handle, | 484 | GAS_addresses_update (struct GAS_Addresses_Handle *handle, |
476 | const struct GNUNET_PeerIdentity *peer, const char *plugin_name, | 485 | const struct GNUNET_PeerIdentity *peer, const char *plugin_name, |
477 | const void *plugin_addr, size_t plugin_addr_len, uint32_t session_id, | 486 | const void *plugin_addr, size_t plugin_addr_len, |
487 | uint32_t local_address_info, uint32_t session_id, | ||
478 | const struct GNUNET_ATS_Information *atsi, uint32_t atsi_count); | 488 | const struct GNUNET_ATS_Information *atsi, uint32_t atsi_count); |
479 | 489 | ||
480 | /** | 490 | /** |
@@ -490,7 +500,8 @@ GAS_addresses_update (struct GAS_Addresses_Handle *handle, | |||
490 | void | 500 | void |
491 | GAS_addresses_destroy (struct GAS_Addresses_Handle *handle, | 501 | GAS_addresses_destroy (struct GAS_Addresses_Handle *handle, |
492 | const struct GNUNET_PeerIdentity *peer, const char *plugin_name, | 502 | const struct GNUNET_PeerIdentity *peer, const char *plugin_name, |
493 | const void *plugin_addr, size_t plugin_addr_len, uint32_t session_id); | 503 | const void *plugin_addr, size_t plugin_addr_len, |
504 | uint32_t local_address_info, uint32_t session_id); | ||
494 | 505 | ||
495 | /** | 506 | /** |
496 | * Remove all addresses | 507 | * Remove all addresses |
diff --git a/src/ats/gnunet-service-ats_performance.c b/src/ats/gnunet-service-ats_performance.c index 7e9b4802e..5a1d8cc66 100644 --- a/src/ats/gnunet-service-ats_performance.c +++ b/src/ats/gnunet-service-ats_performance.c | |||
@@ -507,52 +507,42 @@ GAS_handle_request_address_list (void *cls, struct GNUNET_SERVER_Client *client, | |||
507 | 507 | ||
508 | void | 508 | void |
509 | GAS_handle_performance_update (struct GNUNET_PeerIdentity *peer, | 509 | GAS_handle_performance_update (struct GNUNET_PeerIdentity *peer, |
510 | const char *plugin_name, | 510 | const char *plugin_name, const void *plugin_addr, size_t plugin_addr_len, |
511 | const void *plugin_addr, | 511 | const int active, struct GNUNET_ATS_Information *ats, uint32_t ats_count, |
512 | size_t plugin_addr_len, | 512 | struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out, |
513 | const int active, | 513 | struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in) |
514 | struct GNUNET_ATS_Information *ats, | ||
515 | uint32_t ats_count, | ||
516 | struct GNUNET_BANDWIDTH_Value32NBO | ||
517 | bandwidth_out, | ||
518 | struct GNUNET_BANDWIDTH_Value32NBO | ||
519 | bandwidth_in) | ||
520 | { | 514 | { |
521 | /* Notify here */ | 515 | /* Notify here */ |
522 | GAS_performance_notify_all_clients (peer, | 516 | GAS_performance_notify_all_clients (peer, plugin_name, plugin_addr, |
523 | plugin_name, | 517 | plugin_addr_len, active, ats, ats_count, bandwidth_out, bandwidth_in); |
524 | plugin_addr, plugin_addr_len, | ||
525 | active, | ||
526 | ats, ats_count, | ||
527 | bandwidth_out, bandwidth_in); | ||
528 | 518 | ||
529 | #if 0 | 519 | #if 0 |
530 | struct PerformanceClient *cur; | 520 | struct PerformanceClient *cur; |
531 | struct PerformanceMonitorClient *curm; | 521 | struct PerformanceMonitorClient *curm; |
532 | struct MonitorResponseMessage *mrm; | 522 | struct MonitorResponseMessage *mrm; |
533 | size_t msglen; | 523 | size_t msglen; |
534 | 524 | ||
535 | msglen = sizeof (struct MonitorResponseMessage) + | 525 | msglen = sizeof (struct MonitorResponseMessage) + |
536 | ats_count * sizeof (struct GNUNET_ATS_Information); | 526 | ats_count * sizeof (struct GNUNET_ATS_Information); |
537 | mrm = GNUNET_malloc (msglen); | 527 | mrm = GNUNET_malloc (msglen); |
538 | 528 | ||
539 | mrm->header.type = htons (GNUNET_MESSAGE_TYPE_ATS_MONITOR_RESPONSE); | 529 | mrm->header.type = htons (GNUNET_MESSAGE_TYPE_ATS_MONITOR_RESPONSE); |
540 | mrm->header.size = htons (msglen); | 530 | mrm->header.size = htons (msglen); |
541 | mrm->ats_count = htonl (ats_count); | 531 | mrm->ats_count = htonl (ats_count); |
542 | mrm->peer = *peer; | 532 | mrm->peer = *peer; |
543 | memcpy (&mrm[1], ats, ats_count * sizeof (struct GNUNET_ATS_Information)); | 533 | memcpy (&mrm[1], ats, ats_count * sizeof (struct GNUNET_ATS_Information)); |
544 | 534 | ||
545 | for (cur = pc_head; NULL != cur; cur = cur->next) | 535 | for (cur = pc_head; NULL != cur; cur = cur->next) |
546 | for (curm = cur->pm_head; NULL != curm; curm = curm->next) | 536 | for (curm = cur->pm_head; NULL != curm; curm = curm->next) |
547 | { | 537 | { |
548 | /* Notify client about update */ | 538 | /* Notify client about update */ |
549 | mrm->id = htonl (curm->id); | 539 | mrm->id = htonl (curm->id); |
550 | GNUNET_SERVER_notification_context_unicast (nc, | 540 | GNUNET_SERVER_notification_context_unicast (nc, |
551 | cur->client, | 541 | cur->client, |
552 | (struct GNUNET_MessageHeader *) mrm, | 542 | (struct GNUNET_MessageHeader *) mrm, |
553 | GNUNET_YES); | 543 | GNUNET_YES); |
554 | } | 544 | } |
555 | GNUNET_free (mrm); | 545 | GNUNET_free (mrm); |
556 | #endif | 546 | #endif |
557 | } | 547 | } |
558 | 548 | ||
diff --git a/src/ats/gnunet-service-ats_scheduling.c b/src/ats/gnunet-service-ats_scheduling.c index 48fe536c1..2b77e0e5d 100644 --- a/src/ats/gnunet-service-ats_scheduling.c +++ b/src/ats/gnunet-service-ats_scheduling.c | |||
@@ -100,16 +100,16 @@ GAS_scheduling_remove_client (struct GNUNET_SERVER_Client *client) | |||
100 | */ | 100 | */ |
101 | void | 101 | void |
102 | GAS_scheduling_transmit_address_suggestion (const struct GNUNET_PeerIdentity | 102 | GAS_scheduling_transmit_address_suggestion (const struct GNUNET_PeerIdentity |
103 | *peer, const char *plugin_name, | 103 | *peer, |
104 | const void *plugin_addr, | 104 | const char *plugin_name, |
105 | size_t plugin_addr_len, | 105 | const void *plugin_addr, |
106 | uint32_t session_id, | 106 | size_t plugin_addr_len, |
107 | const struct GNUNET_ATS_Information | 107 | uint32_t local_address_info, |
108 | *atsi, uint32_t atsi_count, | 108 | uint32_t session_id, |
109 | struct GNUNET_BANDWIDTH_Value32NBO | 109 | const struct GNUNET_ATS_Information *atsi, |
110 | bandwidth_out, | 110 | uint32_t atsi_count, |
111 | struct GNUNET_BANDWIDTH_Value32NBO | 111 | struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out, |
112 | bandwidth_in) | 112 | struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in) |
113 | { | 113 | { |
114 | struct AddressSuggestionMessage *msg; | 114 | struct AddressSuggestionMessage *msg; |
115 | size_t plugin_name_length = strlen (plugin_name) + 1; | 115 | size_t plugin_name_length = strlen (plugin_name) + 1; |
@@ -136,6 +136,7 @@ GAS_scheduling_transmit_address_suggestion (const struct GNUNET_PeerIdentity | |||
136 | msg->peer = *peer; | 136 | msg->peer = *peer; |
137 | msg->address_length = htons (plugin_addr_len); | 137 | msg->address_length = htons (plugin_addr_len); |
138 | msg->plugin_name_length = htons (plugin_name_length); | 138 | msg->plugin_name_length = htons (plugin_name_length); |
139 | msg->address_local_info = htonl (local_address_info); | ||
139 | msg->session_id = htonl (session_id); | 140 | msg->session_id = htonl (session_id); |
140 | msg->bandwidth_out = bandwidth_out; | 141 | msg->bandwidth_out = bandwidth_out; |
141 | msg->bandwidth_in = bandwidth_in; | 142 | msg->bandwidth_in = bandwidth_in; |
@@ -278,7 +279,7 @@ GAS_handle_address_add (void *cls, struct GNUNET_SERVER_Client *client, | |||
278 | GNUNET_STATISTICS_update (GSA_stats, "# address updates received", 1, | 279 | GNUNET_STATISTICS_update (GSA_stats, "# address updates received", 1, |
279 | GNUNET_NO); | 280 | GNUNET_NO); |
280 | GAS_addresses_add (address_handle, &m->peer, plugin_name, address, address_length, | 281 | GAS_addresses_add (address_handle, &m->peer, plugin_name, address, address_length, |
281 | ntohl (m->session_id), atsi, ats_count); | 282 | ntohl(m->address_local_info), ntohl (m->session_id), atsi, ats_count); |
282 | GNUNET_SERVER_receive_done (client, GNUNET_OK); | 283 | GNUNET_SERVER_receive_done (client, GNUNET_OK); |
283 | } | 284 | } |
284 | 285 | ||
@@ -337,6 +338,7 @@ GAS_handle_address_update (void *cls, struct GNUNET_SERVER_Client *client, | |||
337 | GNUNET_STATISTICS_update (GSA_stats, "# address updates received", 1, | 338 | GNUNET_STATISTICS_update (GSA_stats, "# address updates received", 1, |
338 | GNUNET_NO); | 339 | GNUNET_NO); |
339 | GAS_addresses_update (address_handle, &m->peer, plugin_name, address, address_length, | 340 | GAS_addresses_update (address_handle, &m->peer, plugin_name, address, address_length, |
341 | ntohl (m->address_local_info), | ||
340 | ntohl (m->session_id), atsi, ats_count); | 342 | ntohl (m->session_id), atsi, ats_count); |
341 | GNUNET_SERVER_receive_done (client, GNUNET_OK); | 343 | GNUNET_SERVER_receive_done (client, GNUNET_OK); |
342 | } | 344 | } |
@@ -397,6 +399,7 @@ GAS_handle_address_in_use (void *cls, struct GNUNET_SERVER_Client *client, | |||
397 | plugin_name, | 399 | plugin_name, |
398 | address, | 400 | address, |
399 | address_length, | 401 | address_length, |
402 | ntohl (m->address_local_info), | ||
400 | ntohl (m->session_id), | 403 | ntohl (m->session_id), |
401 | in_use); | 404 | in_use); |
402 | 405 | ||
@@ -465,6 +468,7 @@ GAS_handle_address_destroyed (void *cls, struct GNUNET_SERVER_Client *client, | |||
465 | GNUNET_STATISTICS_update (GSA_stats, "# addresses destroyed", 1, GNUNET_NO); | 468 | GNUNET_STATISTICS_update (GSA_stats, "# addresses destroyed", 1, GNUNET_NO); |
466 | GAS_addresses_destroy (address_handle, &m->peer, plugin_name, | 469 | GAS_addresses_destroy (address_handle, &m->peer, plugin_name, |
467 | address, address_length, | 470 | address, address_length, |
471 | ntohl (m->address_local_info), | ||
468 | ntohl (m->session_id)); | 472 | ntohl (m->session_id)); |
469 | if (0 != ntohl (m->session_id)) | 473 | if (0 != ntohl (m->session_id)) |
470 | { | 474 | { |
diff --git a/src/ats/gnunet-service-ats_scheduling.h b/src/ats/gnunet-service-ats_scheduling.h index d7b5e9cde..7733cdf88 100644 --- a/src/ats/gnunet-service-ats_scheduling.h +++ b/src/ats/gnunet-service-ats_scheduling.h | |||
@@ -79,16 +79,16 @@ GAS_handle_reset_backoff (void *cls, | |||
79 | */ | 79 | */ |
80 | void | 80 | void |
81 | GAS_scheduling_transmit_address_suggestion (const struct GNUNET_PeerIdentity | 81 | GAS_scheduling_transmit_address_suggestion (const struct GNUNET_PeerIdentity |
82 | *peer, const char *plugin_name, | 82 | *peer, |
83 | const void *plugin_addr, | 83 | const char *plugin_name, |
84 | size_t plugin_addr_len, | 84 | const void *plugin_addr, |
85 | uint32_t session_id, | 85 | size_t plugin_addr_len, |
86 | const struct GNUNET_ATS_Information | 86 | uint32_t local_address_info, |
87 | *atsi, uint32_t atsi_count, | 87 | uint32_t session_id, |
88 | struct GNUNET_BANDWIDTH_Value32NBO | 88 | const struct GNUNET_ATS_Information *atsi, |
89 | bandwidth_out, | 89 | uint32_t atsi_count, |
90 | struct GNUNET_BANDWIDTH_Value32NBO | 90 | struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out, |
91 | bandwidth_in); | 91 | struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in); |
92 | 92 | ||
93 | 93 | ||
94 | /** | 94 | /** |