- typo
[oweals/gnunet.git] / src / integration-tests / connection_watchdog.c
index 73c86d8e4267c7b99395792007b4c5140d292c79..888f38ef575d2b925a47d5ac73706a24fdafd069 100644 (file)
  * @author Matthias Wachs
  */
 #include "platform.h"
-#include "gnunet_common.h"
+#include "gnunet_util_lib.h"
 #include "gnunet_constants.h"
 #include "gnunet_arm_service.h"
 #include "gnunet_core_service.h"
-#include "gnunet_util_lib.h"
 #include "gnunet_transport_service.h"
 #include "gnunet_statistics_service.h"
 
@@ -69,7 +68,7 @@ static uint64_t statistics_core_entries_session_map;
 
 static int stat_check_running;
 
-static struct GNUNET_CONTAINER_MultiHashMap *peers;
+static struct GNUNET_CONTAINER_MultiPeerMap *peers;
 
 struct PeerContainer
 {
@@ -118,9 +117,9 @@ static struct TransportPlugin *phead;
 static struct TransportPlugin *ptail;
 
 
-static int 
+static int
 map_check_it (void *cls,
-             const struct GNUNET_HashCode * key,
+             const struct GNUNET_PeerIdentity * key,
              void *value)
 {
   int *fail = cls;
@@ -139,13 +138,13 @@ map_check_it (void *cls,
 }
 
 
-static int 
+static int
 map_cleanup_it (void *cls,
-               const struct GNUNET_HashCode * key,
+               const struct GNUNET_PeerIdentity * key,
                void *value)
 {
   struct PeerContainer *pc = value;
-  GNUNET_assert (GNUNET_OK == GNUNET_CONTAINER_multihashmap_remove(peers, key, value));
+  GNUNET_assert (GNUNET_OK == GNUNET_CONTAINER_multipeermap_remove(peers, key, value));
   if (NULL != pc->th_ping)
   {
     GNUNET_TRANSPORT_notify_transmit_ready_cancel(pc->th_ping);
@@ -173,8 +172,8 @@ map_cleanup_it (void *cls,
 static void
 map_cleanup (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
-  GNUNET_CONTAINER_multihashmap_iterate (peers, &map_cleanup_it, NULL);
-  GNUNET_CONTAINER_multihashmap_destroy(peers);
+  GNUNET_CONTAINER_multipeermap_iterate (peers, &map_cleanup_it, NULL);
+  GNUNET_CONTAINER_multipeermap_destroy(peers);
 }
 
 static void
@@ -182,7 +181,7 @@ map_check (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
   int fail = 0;
   check_task = GNUNET_SCHEDULER_NO_TASK;
-  GNUNET_CONTAINER_multihashmap_iterate (peers, &map_check_it, &fail);
+  GNUNET_CONTAINER_multipeermap_iterate (peers, &map_check_it, &fail);
   if (0 > fail)
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
        "Inconsistent peers after connection consistency check: %u\n", fail);
@@ -206,25 +205,39 @@ static int
 check_lowlevel_connections (int port, int protocol)
 {
 #ifdef MINGW
-  /* not supported */
-  return count;
+  #define DEVNULL "NUL"
 #else
+  #define DEVNULL "/dev/null"
+#endif
+
   FILE *f;
   char * cmdline;
   char * proto;
   char line[1024];
   int count = -1;
 
-  switch (protocol) 
+  switch (protocol)
   {
     case tcp:
+#ifdef MINGW
+      proto = "-p TCP";
+#else
       proto = "-t";
+#endif
       break;
     case udp:
+#ifdef MINGW
+      proto = "-p UDP";
+#else
       proto = "-u";
+#endif
       break;
     case unixdomain:
+#ifdef MINGW
+      proto = "-p UNIX";
+#else
       proto = "-x";
+#endif
       break;
     default:
       proto = "";
@@ -234,8 +247,8 @@ check_lowlevel_connections (int port, int protocol)
   /* Use netstat to get a numeric list of all connections on port 'port' in state 'ESTABLISHED' */
   GNUNET_asprintf(&cmdline, "netstat -n %s | grep %u | grep ESTABLISHED", proto, port);
 
-  if (system ("netstat -n > /dev/null 2> /dev/null"))
-    if (system ("netstat -n > /dev/null 2> /dev/null") == 0)
+  if (system ("netstat -n > " DEVNULL " 2> " DEVNULL))
+    if (system ("netstat -n > " DEVNULL " 2> "DEVNULL) == 0)
       f = popen (cmdline, "r");
     else
       f = NULL;
@@ -263,7 +276,6 @@ check_lowlevel_connections (int port, int protocol)
   pclose (f);
   GNUNET_free (cmdline);
   return count;
-#endif
 }
 
 
@@ -280,7 +292,7 @@ find_plugin (char * name)
   return cur;
 }
 
-static int 
+static int
 stats_check_cb (void *cls, const char *subsystem,
                const char *name, uint64_t value,
                int is_persistent)
@@ -400,33 +412,33 @@ struct PONG
 GNUNET_NETWORK_STRUCT_END
 
 
-static size_t 
+static size_t
 send_transport_ping_cb (void *cls, size_t size, void *buf)
 {
   struct PeerContainer * pc = cls;
   struct PING ping;
   size_t mlen = sizeof (struct PING);
-  
+
   if (size < mlen)
     {
       GNUNET_break (0);
       return 0;
     }
-  
+
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
              "Sending transport ping to `%s'\n", GNUNET_i2s  (&pc->id));
   ping.header.size = htons (mlen);
   ping.header.type = htons (1234);
   ping.src = htons (0);
-  
+
   pc->th_ping = NULL;
-  
+
   memcpy (buf, &ping, mlen);
   return mlen;
 }
 
 
-static size_t 
+static size_t
 send_core_ping_cb (void *cls, size_t size, void *buf)
 {
   struct PeerContainer * pc = cls;
@@ -438,23 +450,23 @@ send_core_ping_cb (void *cls, size_t size, void *buf)
       GNUNET_break (0);
       return 0;
     }
-  
+
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
              "Sending core ping to `%s'\n", GNUNET_i2s  (&pc->id));
   ping.header.size = htons (mlen);
   ping.header.type = htons (1234);
   ping.src = htons (1);
-  
+
   pc->ch_ping = NULL;
-  
+
   memcpy (buf, &ping, mlen);
   return mlen;
 }
 
 
-static int 
+static int
 map_ping_it (void *cls,
-            const struct GNUNET_HashCode * key,
+            const struct GNUNET_PeerIdentity * key,
             void *value)
 {
   struct PeerContainer *pc = value;
@@ -492,7 +504,7 @@ stats_check (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
     statistics_task = GNUNET_SCHEDULER_add_delayed(STATS_DELAY, &stats_check, NULL);
   }
 
-  GNUNET_CONTAINER_multihashmap_iterate (peers, &map_ping_it, NULL);
+  GNUNET_CONTAINER_multipeermap_iterate (peers, &map_ping_it, NULL);
 
   stat_check_running = GNUNET_YES;
 
@@ -510,7 +522,7 @@ stats_check (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 }
 
 
-static size_t 
+static size_t
 send_transport_pong_cb (void *cls, size_t size, void *buf)
 {
  struct PeerContainer * pc = cls;
@@ -536,27 +548,27 @@ send_transport_pong_cb (void *cls, size_t size, void *buf)
 }
 
 
-static size_t 
+static size_t
 send_core_pong_cb (void *cls, size_t size, void *buf)
 {
   struct PeerContainer * pc = cls;
   struct PING ping;
   size_t mlen = sizeof (struct PING);
-  
+
   if (size < mlen)
     {
       GNUNET_break (0);
       return 0;
     }
-  
+
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
              "Sending core pong to `%s'\n", GNUNET_i2s  (&pc->id));
   ping.header.size = htons (mlen);
   ping.header.type = htons (4321);
   ping.src = htons (1);
-  
+
   pc->ch_pong = NULL;
-  
+
   memcpy (buf, &ping, mlen);
   return mlen;
 }
@@ -566,16 +578,16 @@ static void
 map_connect (const struct GNUNET_PeerIdentity *peer, void * source)
 {
   struct PeerContainer * pc;
-  if (GNUNET_NO == GNUNET_CONTAINER_multihashmap_contains(peers, &peer->hashPubKey))
+  if (GNUNET_NO == GNUNET_CONTAINER_multipeermap_contains(peers, peer))
   {
     pc = GNUNET_malloc (sizeof (struct PeerContainer));
     pc->id = *peer;
     pc->core_connected = GNUNET_NO;
     pc->transport_connected = GNUNET_NO;
-    GNUNET_assert (GNUNET_OK == GNUNET_CONTAINER_multihashmap_put(peers, &peer->hashPubKey, pc, GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
+    GNUNET_assert (GNUNET_OK == GNUNET_CONTAINER_multipeermap_put(peers, peer, pc, GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
   }
 
-  pc = GNUNET_CONTAINER_multihashmap_get(peers, &peer->hashPubKey);
+  pc = GNUNET_CONTAINER_multipeermap_get(peers, peer);
   GNUNET_assert (NULL != pc);
 
   if (source == th)
@@ -644,7 +656,7 @@ map_disconnect (const struct GNUNET_PeerIdentity * peer, void * source)
 {
 
   struct PeerContainer * pc;
-  if (GNUNET_NO == GNUNET_CONTAINER_multihashmap_contains(peers, &peer->hashPubKey))
+  if (GNUNET_NO == GNUNET_CONTAINER_multipeermap_contains(peers, peer))
   {
     if (source == th)
     {
@@ -663,7 +675,7 @@ map_disconnect (const struct GNUNET_PeerIdentity * peer, void * source)
     }
   }
 
-  pc = GNUNET_CONTAINER_multihashmap_get(peers, &peer->hashPubKey);
+  pc = GNUNET_CONTAINER_multipeermap_get(peers, peer);
   GNUNET_assert (NULL != pc);
 
   if (source == th)
@@ -724,7 +736,7 @@ map_disconnect (const struct GNUNET_PeerIdentity * peer, void * source)
   if ((GNUNET_NO == pc->core_connected) && (GNUNET_NO == pc->transport_connected))
   {
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Removing peer `%s'\n", GNUNET_i2s (&pc->id));
-    GNUNET_assert (GNUNET_OK == GNUNET_CONTAINER_multihashmap_remove (peers, &peer->hashPubKey, pc));
+    GNUNET_assert (GNUNET_OK == GNUNET_CONTAINER_multipeermap_remove (peers, peer, pc));
 
 
     GNUNET_free (pc);
@@ -756,7 +768,7 @@ cleanup_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 
   if (NULL != ch)
   {
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO, 
+    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
                "Disconnecting from core service\n");
     GNUNET_CORE_disconnect (ch);
     ch = NULL;
@@ -810,9 +822,9 @@ transport_notify_disconnect_cb (void *cls,
                                const struct GNUNET_PeerIdentity *peer)
 {
   GNUNET_assert (transport_connections > 0);
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, 
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
              "TRANSPORT disconnect for peer `%s' (%u total)\n",
-             GNUNET_i2s (peer), 
+             GNUNET_i2s (peer),
              transport_connections);
   map_disconnect (peer, th);
   transport_connections --;
@@ -829,7 +841,7 @@ transport_notify_receive_cb (void *cls,
 {
   struct PeerContainer *pc;
 
-  pc = GNUNET_CONTAINER_multihashmap_get (peers, &peer->hashPubKey);
+  pc = GNUNET_CONTAINER_multipeermap_get (peers, peer);
   if (NULL == pc)
   {
     GNUNET_break (0);
@@ -839,7 +851,7 @@ transport_notify_receive_cb (void *cls,
   if ((message->size == ntohs (sizeof (struct PING))) &&
       (message->type == ntohs (1234)))
   {
-    GNUNET_log (GNUNET_ERROR_TYPE_INFO, 
+    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
                "Received %s %s from peer `%s'\n",
                "TRANSPORT",
                "PING",
@@ -865,14 +877,14 @@ transport_notify_receive_cb (void *cls,
   }
 }
 
-static int 
+static int
 core_notify_receive_cb (void *cls,
                        const struct GNUNET_PeerIdentity * peer,
                        const struct GNUNET_MessageHeader * message)
 {
   struct PeerContainer *pc = NULL;
 
-  pc = GNUNET_CONTAINER_multihashmap_get(peers, &peer->hashPubKey);
+  pc = GNUNET_CONTAINER_multipeermap_get(peers, peer);
 
   if (NULL == pc)
   {
@@ -958,7 +970,7 @@ core_disconnect_cb (void *cls,
 
 
 static void
-core_init_cb (void *cls, 
+core_init_cb (void *cls,
              const struct GNUNET_PeerIdentity *my_identity)
 {
   my_peer_id = *my_identity;
@@ -1056,7 +1068,7 @@ run (void *cls, char *const *args, const char *cfgfile,
   init();
 
   stats = GNUNET_STATISTICS_create ("watchdog", cfg);
-  peers = GNUNET_CONTAINER_multihashmap_create (32, GNUNET_NO);
+  peers = GNUNET_CONTAINER_multipeermap_create (32, GNUNET_NO);
 
   th = GNUNET_TRANSPORT_connect(cfg, NULL, NULL,
                                 &transport_notify_receive_cb,