[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r18577 - gnunet/src/transport
From: |
gnunet |
Subject: |
[GNUnet-SVN] r18577 - gnunet/src/transport |
Date: |
Tue, 13 Dec 2011 17:20:08 +0100 |
Author: wachs
Date: 2011-12-13 17:20:08 +0100 (Tue, 13 Dec 2011)
New Revision: 18577
Modified:
gnunet/src/transport/gnunet-service-transport.c
gnunet/src/transport/gnunet-service-transport_plugins.c
gnunet/src/transport/plugin_transport_tcp.c
Log:
changes:
changed order of startup since ats is now required for plugins
transport provides ATS handles for plugins
network detection for tcp
Modified: gnunet/src/transport/gnunet-service-transport.c
===================================================================
--- gnunet/src/transport/gnunet-service-transport.c 2011-12-13 15:19:16 UTC
(rev 18576)
+++ gnunet/src/transport/gnunet-service-transport.c 2011-12-13 16:20:08 UTC
(rev 18577)
@@ -547,11 +547,11 @@
/* start subsystems */
GST_hello_start (&process_hello_update, NULL);
GST_blacklist_start (server);
+ GST_ats =
+ GNUNET_ATS_scheduling_init (GST_cfg, &ats_request_address_change, NULL);
GST_plugins_load (&plugin_env_receive_callback,
&plugin_env_address_change_notification,
&plugin_env_session_end);
- GST_ats =
- GNUNET_ATS_scheduling_init (GST_cfg, &ats_request_address_change, NULL);
GST_neighbours_start (NULL, &neighbours_connect_notification,
&neighbours_disconnect_notification);
GST_clients_start (server);
Modified: gnunet/src/transport/gnunet-service-transport_plugins.c
===================================================================
--- gnunet/src/transport/gnunet-service-transport_plugins.c 2011-12-13
15:19:16 UTC (rev 18576)
+++ gnunet/src/transport/gnunet-service-transport_plugins.c 2011-12-13
16:20:08 UTC (rev 18577)
@@ -132,6 +132,7 @@
plug->env.session_end = session_end_cb;
plug->env.max_connections = tneigh;
plug->env.stats = GST_stats;
+ plug->env.ats = GST_ats;
GNUNET_CONTAINER_DLL_insert (plugins_head, plugins_tail, plug);
}
GNUNET_free (plugs);
Modified: gnunet/src/transport/plugin_transport_tcp.c
===================================================================
--- gnunet/src/transport/plugin_transport_tcp.c 2011-12-13 15:19:16 UTC (rev
18576)
+++ gnunet/src/transport/plugin_transport_tcp.c 2011-12-13 16:20:08 UTC (rev
18577)
@@ -295,6 +295,10 @@
*/
int is_nat;
+ /**
+ * ATS network type in NBO
+ */
+ uint32_t ats_address_network_type;
};
@@ -1122,6 +1126,15 @@
session->connect_addr = GNUNET_malloc (addrlen);
memcpy (session->connect_addr, addr, addrlen);
session->connect_alen = addrlen;
+ if ((addrlen != 0) && (plugin->env->ats != NULL))
+ {
+ struct GNUNET_ATS_Information ats;
+ GNUNET_assert(plugin->env->ats != NULL);
+ ats = GNUNET_ATS_address_get_type(plugin->env->ats, sb ,sbs);
+ session->ats_address_network_type = ats.value;
+ }
+ else
+ GNUNET_break (0);
}
else /* session != NULL */
{
@@ -1605,6 +1618,7 @@
"Found address `%s' for incoming connection\n",
GNUNET_a2s (vaddr, alen));
#endif
+
if (alen == sizeof (struct sockaddr_in))
{
s4 = vaddr;
@@ -1624,6 +1638,15 @@
session->connect_alen = sizeof (struct IPv6TcpAddress);
}
+ if (plugin->env->ats != NULL)
+ {
+ struct GNUNET_ATS_Information ats;
+ GNUNET_assert(plugin->env->ats != NULL);
+ ats = GNUNET_ATS_address_get_type(plugin->env->ats, vaddr ,alen);
+ session->ats_address_network_type = ats.value;
+ }
+ else
+ GNUNET_break (0);
GNUNET_free (vaddr);
}
else
@@ -1731,10 +1754,14 @@
GNUNET_STATISTICS_update (plugin->env->stats,
gettext_noop ("# bytes received via TCP"),
ntohs (message->size), GNUNET_NO);
- struct GNUNET_ATS_Information distance;
+ struct GNUNET_ATS_Information distance[2];
- distance.type = htonl (GNUNET_ATS_QUALITY_NET_DISTANCE);
- distance.value = htonl (1);
+ distance[0].type = htonl (GNUNET_ATS_QUALITY_NET_DISTANCE);
+ distance[0].value = htonl (1);
+ distance[1].type = htonl (GNUNET_ATS_NETWORK_TYPE);
+ distance[1].value = session->ats_address_network_type;
+ GNUNET_break (ntohl(session->ats_address_network_type) !=
GNUNET_ATS_NET_UNSPECIFIED);
+
delay =
plugin->env->receive (plugin->env->cls, &session->target, message,
(const struct GNUNET_ATS_Information *) &distance,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r18577 - gnunet/src/transport,
gnunet <=