gnunet-svn
[Top][All Lists]
Advanced

[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,




reply via email to

[Prev in Thread] Current Thread [Next in Thread]