Add missing include
[oweals/gnunet.git] / src / transport / plugin_transport_udp.c
index bc64fd5d25b43004920515b6f3e951530168ccbb..043633ab1d1a2d71ca78074d3320ef5d946fb91a 100644 (file)
@@ -82,7 +82,7 @@ struct PrettyPrinterContext
    * DLL
    */
   struct PrettyPrinterContext *next;
-  
+
   /**
    * DLL
    */
@@ -502,7 +502,7 @@ schedule_select (struct Plugin *plugin)
     for (udpw = plugin->ipv4_queue_head; NULL != udpw; udpw = udpw->next)
       min_delay = GNUNET_TIME_relative_min (min_delay,
                                            GNUNET_TIME_absolute_get_remaining (udpw->session->flow_delay_from_other_peer));
-    
+
     if (plugin->select_task != GNUNET_SCHEDULER_NO_TASK)
       GNUNET_SCHEDULER_cancel(plugin->select_task);
 
@@ -514,7 +514,7 @@ schedule_select (struct Plugin *plugin)
                                   (0 == min_delay.rel_value_us) ? GNUNET_TIME_UNIT_FOREVER_REL : min_delay,
                                   plugin->rs_v4,
                                   (0 == min_delay.rel_value_us) ? plugin->ws_v4 : NULL,
-                                  &udp_plugin_select, plugin);  
+                                  &udp_plugin_select, plugin);
   }
   if ((GNUNET_YES == plugin->enable_ipv6) && (NULL != plugin->sockv6))
   {
@@ -522,7 +522,7 @@ schedule_select (struct Plugin *plugin)
     for (udpw = plugin->ipv6_queue_head; NULL != udpw; udpw = udpw->next)
       min_delay = GNUNET_TIME_relative_min (min_delay,
                                            GNUNET_TIME_absolute_get_remaining (udpw->session->flow_delay_from_other_peer));
-    
+
     if (GNUNET_SCHEDULER_NO_TASK != plugin->select_task_v6)
       GNUNET_SCHEDULER_cancel(plugin->select_task_v6);
     plugin->select_task_v6 =
@@ -578,18 +578,13 @@ udp_address_to_string (void *cls, const void *addr, size_t addrlen)
     memcpy (&a4, &t4->ipv4_addr, sizeof (a4));
     sb = &a4;
   }
-  else if (addrlen == 0)
-  {
-    GNUNET_snprintf (rbuf, sizeof (rbuf), "%s", TRANSPORT_SESSION_INBOUND_STRING);
-    return rbuf;
-  }
   else
   {
     return NULL;
   }
   inet_ntop (af, sb, buf, INET6_ADDRSTRLEN);
 
-  GNUNET_snprintf (rbuf, sizeof (rbuf), 
+  GNUNET_snprintf (rbuf, sizeof (rbuf),
                   (af == AF_INET6) ? "%s.%u.[%s]:%u" : "%s.%u.%s:%u",
                    PLUGIN_NAME, options, buf, port);
   return rbuf;
@@ -825,12 +820,6 @@ udp_plugin_address_pretty_printer (void *cls, const char *type,
     sb = &a4;
     sbs = sizeof (a4);
   }
-  else if (0 == addrlen)
-  {
-    asc (asc_cls, TRANSPORT_SESSION_INBOUND_STRING);
-    asc (asc_cls, NULL);
-    return;
-  }
   else
   {
     /* invalid address */
@@ -1150,11 +1139,11 @@ fragmented_message_done (struct UDP_FragmentationContext *fc, int result)
   struct UDP_MessageWrapper dummy;
   struct Session *s = fc->session;
 
-  LOG (GNUNET_ERROR_TYPE_DEBUG, 
+  LOG (GNUNET_ERROR_TYPE_DEBUG,
        "%p : Fragmented message removed with result %s\n",
        fc,
        (result == GNUNET_SYSERR) ? "FAIL" : "SUCCESS");
-  
+
   /* Call continuation for fragmented message */
   memset (&dummy, 0, sizeof (dummy));
   dummy.msg_type = MSG_FRAGMENTED_COMPLETE;
@@ -1271,12 +1260,12 @@ disconnect_session (struct Session *s)
   }
 
   GNUNET_assert (GNUNET_YES ==
-                 GNUNET_CONTAINER_multihashmap_remove (plugin->sessions,
-                                                       &s->target.hashPubKey,
+                 GNUNET_CONTAINER_multipeermap_remove (plugin->sessions,
+                                                       &s->target,
                                                        s));
   GNUNET_STATISTICS_set(plugin->env->stats,
                         "# UDP, sessions active",
-                        GNUNET_CONTAINER_multihashmap_size(plugin->sessions),
+                        GNUNET_CONTAINER_multipeermap_size(plugin->sessions),
                         GNUNET_NO);
   if (s->rc > 0)
     s->in_destroy = GNUNET_YES;
@@ -1293,7 +1282,7 @@ disconnect_session (struct Session *s)
  * @return GNUNET_OK (continue to iterate)
  */
 static int
-disconnect_and_free_it (void *cls, const struct GNUNET_HashCode * key, void *value)
+disconnect_and_free_it (void *cls, const struct GNUNET_PeerIdentity * key, void *value)
 {
   disconnect_session(value);
   return GNUNET_OK;
@@ -1317,7 +1306,8 @@ udp_disconnect (void *cls, const struct GNUNET_PeerIdentity *target)
   LOG (GNUNET_ERROR_TYPE_DEBUG,
        "Disconnecting from peer `%s'\n", GNUNET_i2s (target));
   /* Clean up sessions */
-  GNUNET_CONTAINER_multihashmap_get_multiple (plugin->sessions, &target->hashPubKey, &disconnect_and_free_it, plugin);
+  GNUNET_CONTAINER_multipeermap_get_multiple (plugin->sessions, target,
+                                             &disconnect_and_free_it, plugin);
 }
 
 
@@ -1375,7 +1365,7 @@ reschedule_session_timeout (struct Session *s)
                                                    s);
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "Timeout rescheduled for session %p set to %s\n",
-              s, 
+              s,
              GNUNET_STRINGS_relative_time_to_string (GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT,
                                                      GNUNET_YES));
 }
@@ -1466,7 +1456,7 @@ create_session (struct Plugin *plugin, const struct GNUNET_PeerIdentity *target,
 
 static int
 session_cmp_it (void *cls,
-               const struct GNUNET_HashCode * key,
+               const struct GNUNET_PeerIdentity * key,
                void *value)
 {
   struct SessionCompareContext * cctx = cls;
@@ -1477,7 +1467,7 @@ session_cmp_it (void *cls,
 
   LOG (GNUNET_ERROR_TYPE_DEBUG,
        "Comparing address %s <-> %s\n",
-       udp_address_to_string (NULL, (void *) address->address, 
+       udp_address_to_string (NULL, (void *) address->address,
                              address->address_length),
        GNUNET_a2s (s->sock_addr, s->addrlen));
   if (s->inbound != cctx->inbound)
@@ -1523,7 +1513,7 @@ session_cmp_it (void *cls,
  * @return the network type in HBO or GNUNET_SYSERR
  */
 static enum GNUNET_ATS_Network_Type
-udp_get_network (void *cls, 
+udp_get_network (void *cls,
                 struct Session *session)
 {
   return ntohl (session->ats.value);
@@ -1588,10 +1578,10 @@ udp_plugin_lookup_session (void *cls,
   cctx.res = NULL;
   cctx.inbound = inbound;
   LOG (GNUNET_ERROR_TYPE_DEBUG,
-       "Looking for existing session for peer `%s' `%s' \n", 
-       GNUNET_i2s (&address->peer), 
+       "Looking for existing session for peer `%s' `%s' \n",
+       GNUNET_i2s (&address->peer),
        udp_address_to_string(NULL, address->address, address->address_length));
-  GNUNET_CONTAINER_multihashmap_get_multiple(plugin->sessions, &address->peer.hashPubKey, session_cmp_it, &cctx);
+  GNUNET_CONTAINER_multipeermap_get_multiple(plugin->sessions, &address->peer, session_cmp_it, &cctx);
   if (cctx.res != NULL)
   {
     LOG (GNUNET_ERROR_TYPE_DEBUG, "Found existing session %p\n", cctx.res);
@@ -1623,13 +1613,13 @@ udp_plugin_create_session (void *cls,
        GNUNET_i2s(&address->peer),
        udp_address_to_string(NULL,address->address,address->address_length));
   GNUNET_assert (GNUNET_OK ==
-                 GNUNET_CONTAINER_multihashmap_put (plugin->sessions,
-                                                    &s->target.hashPubKey,
+                 GNUNET_CONTAINER_multipeermap_put (plugin->sessions,
+                                                    &s->target,
                                                     s,
                                                     GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE));
   GNUNET_STATISTICS_set(plugin->env->stats,
                         "# UDP, sessions active",
-                        GNUNET_CONTAINER_multihashmap_size(plugin->sessions),
+                        GNUNET_CONTAINER_multipeermap_size(plugin->sessions),
                         GNUNET_NO);
   return s;
 }
@@ -1665,7 +1655,7 @@ udp_plugin_get_session (void *cls,
 }
 
 
-static void 
+static void
 enqueue (struct Plugin *plugin, struct UDP_MessageWrapper * udpw)
 {
   if (plugin->bytes_in_buffer + udpw->msg_size > INT64_MAX)
@@ -1707,7 +1697,7 @@ send_next_fragment (void *cls,
 {
   struct UDP_MessageWrapper *udpw = cls;
 
-  GNUNET_FRAGMENT_context_transmission_done (udpw->frag_ctx->frag);  
+  GNUNET_FRAGMENT_context_transmission_done (udpw->frag_ctx->frag);
 }
 
 
@@ -1727,8 +1717,8 @@ enqueue_fragment (void *cls, const struct GNUNET_MessageHeader *msg)
   struct Plugin *plugin = frag_ctx->plugin;
   struct UDP_MessageWrapper * udpw;
   size_t msg_len = ntohs (msg->size);
-  LOG (GNUNET_ERROR_TYPE_DEBUG, 
+
+  LOG (GNUNET_ERROR_TYPE_DEBUG,
        "Enqueuing fragment with %u bytes\n", msg_len);
   frag_ctx->fragments_used ++;
   udpw = GNUNET_malloc (sizeof (struct UDP_MessageWrapper) + msg_len);
@@ -1800,7 +1790,7 @@ udp_plugin_send (void *cls,
     GNUNET_break (0);
     return GNUNET_SYSERR;
   }
-  if (GNUNET_YES != GNUNET_CONTAINER_multihashmap_contains_value(plugin->sessions, &s->target.hashPubKey, s))
+  if (GNUNET_YES != GNUNET_CONTAINER_multipeermap_contains_value(plugin->sessions, &s->target, s))
   {
     GNUNET_break (0);
     return GNUNET_SYSERR;
@@ -1861,11 +1851,11 @@ udp_plugin_send (void *cls,
     frag_ctx->frag = GNUNET_FRAGMENT_context_create (plugin->env->stats,
                                                     UDP_MTU,
                                                     &plugin->tracker,
-                                                    s->last_expected_msg_delay, 
-                                                    s->last_expected_ack_delay, 
+                                                    s->last_expected_msg_delay,
+                                                    s->last_expected_ack_delay,
                                                     &udp->header,
                                                     &enqueue_fragment,
-                                                    frag_ctx);    
+                                                    frag_ctx);
     s->frag_ctx = frag_ctx;
     GNUNET_STATISTICS_update (plugin->env->stats,
                               "# UDP, fragmented msgs, messages, pending",
@@ -2050,9 +2040,7 @@ process_udp_message (struct Plugin *plugin, const struct UDPMessage *msg,
   {
     s = udp_plugin_create_session (plugin, address, GNUNET_YES);
     plugin->env->session_start (NULL, &address->peer, PLUGIN_NAME,
-                  (GNUNET_YES == s->inbound) ? NULL : address->address,
-                  (GNUNET_YES == s->inbound) ? 0 : address->address_length,
-            s, NULL, 0);
+                  address->address, address->address_length, s, NULL, 0);
   }
   GNUNET_free (address);
 
@@ -2137,7 +2125,9 @@ struct LookupContext
 
 
 static int
-lookup_session_by_addr_it (void *cls, const struct GNUNET_HashCode * key, void *value)
+lookup_session_by_addr_it (void *cls,
+                          const struct GNUNET_PeerIdentity *key,
+                          void *value)
 {
   struct LookupContext *l_ctx = cls;
   struct Session * s = value;
@@ -2184,7 +2174,7 @@ ack_proc (void *cls, uint32_t id, const struct GNUNET_MessageHeader *msg)
   l_ctx.addrlen = rc->addr_len;
   l_ctx.res = NULL;
   l_ctx.must_have_frag_ctx = GNUNET_NO;
-  GNUNET_CONTAINER_multihashmap_iterate (rc->plugin->sessions,
+  GNUNET_CONTAINER_multipeermap_iterate (rc->plugin->sessions,
       &lookup_session_by_addr_it,
       &l_ctx);
   s = l_ctx.res;
@@ -2220,7 +2210,7 @@ ack_proc (void *cls, uint32_t id, const struct GNUNET_MessageHeader *msg)
 }
 
 
-static void 
+static void
 read_process_msg (struct Plugin *plugin,
                  const struct GNUNET_MessageHeader *msg,
                  const char *addr,
@@ -2236,7 +2226,7 @@ read_process_msg (struct Plugin *plugin,
 }
 
 
-static void 
+static void
 read_process_ack (struct Plugin *plugin,
                  const struct GNUNET_MessageHeader *msg,
                  char *addr,
@@ -2259,7 +2249,7 @@ read_process_ack (struct Plugin *plugin,
   l_ctx.addrlen = fromlen;
   l_ctx.res = NULL;
   l_ctx.must_have_frag_ctx = GNUNET_YES;
-  GNUNET_CONTAINER_multihashmap_iterate (plugin->sessions,
+  GNUNET_CONTAINER_multipeermap_iterate (plugin->sessions,
                                         &lookup_session_by_addr_it,
                                         &l_ctx);
   s = l_ctx.res;
@@ -2270,7 +2260,7 @@ read_process_ack (struct Plugin *plugin,
 
 
   flow_delay.rel_value_us = (uint64_t) ntohl (udp_ack->delay);
-  LOG (GNUNET_ERROR_TYPE_DEBUG, 
+  LOG (GNUNET_ERROR_TYPE_DEBUG,
        "We received a sending delay of %s\n",
        GNUNET_STRINGS_relative_time_to_string (flow_delay,
                                               GNUNET_YES));
@@ -2307,7 +2297,7 @@ read_process_ack (struct Plugin *plugin,
 }
 
 
-static void 
+static void
 read_process_fragment (struct Plugin *plugin,
                       const struct GNUNET_MessageHeader *msg,
                       char *addr,
@@ -2347,7 +2337,7 @@ read_process_fragment (struct Plugin *plugin,
         GNUNET_CONTAINER_heap_insert (plugin->defrag_ctxs, d_ctx,
                                       (GNUNET_CONTAINER_HeapCostType)
                                       now.abs_value_us);
-    LOG (GNUNET_ERROR_TYPE_DEBUG, 
+    LOG (GNUNET_ERROR_TYPE_DEBUG,
         "Created new defragmentation context for %u-byte fragment from `%s'\n",
         (unsigned int) ntohs (msg->size),
         GNUNET_a2s ((const struct sockaddr *) addr, fromlen));
@@ -2568,7 +2558,7 @@ remove_timeout_messages_and_select (struct UDP_MessageWrapper *head,
       if (GNUNET_TIME_UNIT_ZERO.rel_value_us == remaining.rel_value_us)
       {
         /* this message is not delayed */
-        LOG (GNUNET_ERROR_TYPE_DEBUG, 
+        LOG (GNUNET_ERROR_TYPE_DEBUG,
              "Message for peer `%s' (%u bytes) is not delayed \n",
              GNUNET_i2s(&udpw->session->target), udpw->payload_size);
         break; /* Found message to send, break */
@@ -2578,7 +2568,7 @@ remove_timeout_messages_and_select (struct UDP_MessageWrapper *head,
         /* Message is delayed, try next */
         LOG (GNUNET_ERROR_TYPE_DEBUG,
              "Message for peer `%s' (%u bytes) is delayed for %s\n",
-             GNUNET_i2s(&udpw->session->target), udpw->payload_size, 
+             GNUNET_i2s(&udpw->session->target), udpw->payload_size,
             GNUNET_STRINGS_relative_time_to_string (remaining,
                                                     GNUNET_YES));
         udpw = udpw->next;
@@ -2716,10 +2706,10 @@ udp_plugin_select (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
        (GNUNET_NETWORK_fdset_isset (tc->read_ready, plugin->sockv4)) )
     udp_select_read (plugin, plugin->sockv4);
   if ( (0 != (tc->reason & GNUNET_SCHEDULER_REASON_WRITE_READY)) &&
-       (NULL != plugin->sockv4) && 
+       (NULL != plugin->sockv4) &&
        (NULL != plugin->ipv4_queue_head) &&
        (GNUNET_NETWORK_fdset_isset (tc->write_ready, plugin->sockv4)) )
-    udp_select_send (plugin, plugin->sockv4);   
+    udp_select_send (plugin, plugin->sockv4);
   schedule_select (plugin);
 }
 
@@ -2746,7 +2736,7 @@ udp_plugin_select_v6 (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
     udp_select_read (plugin, plugin->sockv6);
   if ( (0 != (tc->reason & GNUNET_SCHEDULER_REASON_WRITE_READY)) &&
        (NULL != plugin->sockv6) && (plugin->ipv6_queue_head != NULL) &&
-       (GNUNET_NETWORK_fdset_isset (tc->write_ready, plugin->sockv6)) )    
+       (GNUNET_NETWORK_fdset_isset (tc->write_ready, plugin->sockv6)) )
     udp_select_send (plugin, plugin->sockv6);
   schedule_select (plugin);
 }
@@ -2757,7 +2747,7 @@ udp_plugin_select_v6 (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
  * @return number of sockets that were successfully bound
  */
 static int
-setup_sockets (struct Plugin *plugin, 
+setup_sockets (struct Plugin *plugin,
               const struct sockaddr_in6 *bind_v6,
               const struct sockaddr_in *bind_v4)
 {
@@ -2866,23 +2856,23 @@ setup_sockets (struct Plugin *plugin,
       serverAddrv4.sin_addr = bind_v4->sin_addr;
     else
       serverAddrv4.sin_addr.s_addr = INADDR_ANY;
-    
+
     if (0 == plugin->port)
       /* autodetect */
       serverAddrv4.sin_port = htons (GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_STRONG, 33537) + 32000);
     else
       serverAddrv4.sin_port = htons (plugin->port);
-    
-    
+
+
     addrlen = sizeof (struct sockaddr_in);
     serverAddr = (struct sockaddr *) &serverAddrv4;
-    
+
     tries = 0;
     while (tries < 10)
     {
       LOG (GNUNET_ERROR_TYPE_DEBUG, "Binding to IPv4 `%s'\n",
                        GNUNET_a2s (serverAddr, addrlen));
-      
+
       /* binding */
       if (GNUNET_OK == GNUNET_NETWORK_socket_bind (plugin->sockv4,
                                                    serverAddr, addrlen, 0))
@@ -2893,19 +2883,19 @@ setup_sockets (struct Plugin *plugin,
                tries = 10; /* fail */
                break; /* bind failed on specific port */
       }
-      
+
       /* autodetect */
       serverAddrv4.sin_port = htons (GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_STRONG, 33537) + 32000);
       tries ++;
     }
-    
+
     if (tries >= 10)
     {
       GNUNET_NETWORK_socket_close (plugin->sockv4);
       plugin->enable_ipv4 = GNUNET_NO;
       plugin->sockv4 = NULL;
     }
-    
+
     if (plugin->sockv4 != NULL)
     {
       LOG (GNUNET_ERROR_TYPE_DEBUG,
@@ -2915,13 +2905,13 @@ setup_sockets (struct Plugin *plugin,
       sockets_created++;
     }
     else
-    {            
+    {          
       LOG (GNUNET_ERROR_TYPE_ERROR,
                "Failed to bind UDP socket to %s: %s\n",
                GNUNET_a2s (serverAddr, addrlen), STRERROR (eno));
     }
   }
-  
+
   if (0 == sockets_created)
   {
                LOG (GNUNET_ERROR_TYPE_WARNING, _("Failed to open UDP sockets\n"));
@@ -3111,21 +3101,21 @@ libgnunet_plugin_transport_udp_init (void *cls)
   p->enable_ipv6 = enable_v6;
   p->enable_ipv4 = GNUNET_YES; /* default */
   p->env = env;
-  p->sessions = GNUNET_CONTAINER_multihashmap_create (10, GNUNET_NO);
+  p->sessions = GNUNET_CONTAINER_multipeermap_create (10, GNUNET_NO);
   p->defrag_ctxs = GNUNET_CONTAINER_heap_create (GNUNET_CONTAINER_HEAP_ORDER_MIN);
   p->mst = GNUNET_SERVER_mst_create (&process_inbound_tokenized_messages, p);
   GNUNET_BANDWIDTH_tracker_init (&p->tracker,
-                                 GNUNET_BANDWIDTH_value_init ((uint32_t)udp_max_bps), 30);
+      GNUNET_BANDWIDTH_value_init ((uint32_t) udp_max_bps), 30);
   plugin = p;
 
-  LOG (GNUNET_ERROR_TYPE_DEBUG, "Setting up sockets\n");
+  LOG(GNUNET_ERROR_TYPE_DEBUG, "Setting up sockets\n");
   res = setup_sockets (p, (GNUNET_YES == have_bind6) ? &serverAddrv6 : NULL,
-                                                                               (GNUNET_YES == have_bind4) ? &serverAddrv4 : NULL);
-  if ((res == 0) || ((p->sockv4 == NULL&& (p->sockv6 == NULL)))
+      (GNUNET_YES == have_bind4) ? &serverAddrv4 : NULL );
+  if ((res == 0) || ((p->sockv4 == NULL )&& (p->sockv6 == NULL)))
   {
     LOG (GNUNET_ERROR_TYPE_ERROR,
         _("Failed to create network sockets, plugin failed\n"));
-    GNUNET_CONTAINER_multihashmap_destroy (p->sessions);
+    GNUNET_CONTAINER_multipeermap_destroy (p->sessions);
     GNUNET_CONTAINER_heap_destroy (p->defrag_ctxs);
     GNUNET_SERVER_mst_destroy (p->mst);
     GNUNET_free (p);
@@ -3267,8 +3257,8 @@ libgnunet_plugin_transport_udp_done (void *cls)
   /* Clean up sessions */
   LOG (GNUNET_ERROR_TYPE_DEBUG,
        "Cleaning up sessions\n");
-  GNUNET_CONTAINER_multihashmap_iterate (plugin->sessions, &disconnect_and_free_it, plugin);
-  GNUNET_CONTAINER_multihashmap_destroy (plugin->sessions);
+  GNUNET_CONTAINER_multipeermap_iterate (plugin->sessions, &disconnect_and_free_it, plugin);
+  GNUNET_CONTAINER_multipeermap_destroy (plugin->sessions);
 
   next = ppc_dll_head;
   for (cur = next; NULL != cur; cur = next)