gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r21586 - gnunet/src/testing


From: gnunet
Subject: [GNUnet-SVN] r21586 - gnunet/src/testing
Date: Sat, 26 May 2012 17:14:54 +0200

Author: harsha
Date: 2012-05-26 17:14:54 +0200 (Sat, 26 May 2012)
New Revision: 21586

Modified:
   gnunet/src/testing/test_testing_new_portreservation.c
   gnunet/src/testing/testing_new.c
Log:
port reservation - release

Modified: gnunet/src/testing/test_testing_new_portreservation.c
===================================================================
--- gnunet/src/testing/test_testing_new_portreservation.c       2012-05-26 
14:04:59 UTC (rev 21585)
+++ gnunet/src/testing/test_testing_new_portreservation.c       2012-05-26 
15:14:54 UTC (rev 21586)
@@ -39,8 +39,10 @@
 run (void *cls, char *const *args, const char *cfgfile,
      const struct GNUNET_CONFIGURATION_Handle *cfg)
 {
-  uint16_t new_port1, new_port2;
   struct GNUNET_TESTING_System *system;
+  uint16_t new_port1;
+  uint16_t new_port2;
+  uint16_t old_port1;
 
   system = GNUNET_TESTING_system_create ("/tmp/gnunet-testing-new",
                                          "localhost");
@@ -54,6 +56,17 @@
                 "Reserved TCP port %u\n", new_port2);
   GNUNET_assert (0 != new_port2);
   GNUNET_assert (new_port1 != new_port2);
+  release_port (system, GNUNET_YES, new_port1);
+  old_port1 = new_port1;
+  new_port1 = 0;
+  new_port1 = reserve_port (system, GNUNET_YES);
+  LOG (GNUNET_ERROR_TYPE_DEBUG,
+       "Reserved TCP port %u\n", new_port1);
+  GNUNET_assert (0 != new_port1);
+  GNUNET_assert (old_port1 == new_port1);
+  release_port (system, GNUNET_YES, new_port1);
+  release_port (system, GNUNET_YES, new_port2);
+  release_port (system, GNUNET_YES, new_port2 + 1); /* OK to get error :) */
   GNUNET_TESTING_system_destroy (system, GNUNET_NO);
 }
 

Modified: gnunet/src/testing/testing_new.c
===================================================================
--- gnunet/src/testing/testing_new.c    2012-05-26 14:04:59 UTC (rev 21585)
+++ gnunet/src/testing/testing_new.c    2012-05-26 15:14:54 UTC (rev 21586)
@@ -34,6 +34,8 @@
 #include "gnunet_network_lib.h"
 #include "gnunet_testing_lib-new.h"
 
+#define LOG(kind,...)                                           \
+  GNUNET_log_from (kind, "testing-new-api", __VA_ARGS__)
 
 /**
  * Handle for a system on which GNUnet peers are executed;
@@ -137,17 +139,6 @@
 
 
 /**
- * The lowest port bucket for ports available for GNUnet testing
- */
-#define LOW_PORT_BUCKET (LOW_PORT / 32)
-
-/**
- * The highest port bucket for ports available for GNUNET_testing
- */
-#define HIGH_PORT_BUCKET (HIGH_PORT / 32)
-
-
-/**
  * Create a system handle.  There must only be one system
  * handle per operating system.
  *
@@ -226,7 +217,7 @@
   hint.ai_flags = AI_PASSIVE | AI_NUMERICSERV; /* Wild card address */
   port_buckets = (GNUNET_YES == is_tcp) ?
     system->reserved_tcp_ports : system->reserved_udp_ports;
-  for (index = LOW_PORT_BUCKET + 1; index < HIGH_PORT_BUCKET; index++)
+  for (index = (LOW_PORT / 32) + 1; index < (HIGH_PORT / 32); index++)
   {
     xor_image = (UINT32_MAX ^ port_buckets[index]);
     if (0 == xor_image)        /* Ports in the bucket are full */
@@ -279,7 +270,22 @@
              int is_tcp,
              uint16_t port)
 {
-  GNUNET_break (0);
+  uint32_t *port_buckets;
+  uint16_t bucket;
+  uint16_t pos;
+
+  GNUNET_assert (NULL != system);
+  port_buckets = (GNUNET_YES == is_tcp) ?
+    system->reserved_tcp_ports : system->reserved_udp_ports;
+  bucket = port / 32;
+  pos = port % 32;
+  LOG (GNUNET_ERROR_TYPE_DEBUG, "Releasing port %u\n", port);
+  if (0 == (port_buckets[bucket] & (1U << pos)))
+  {
+    GNUNET_break(0); /* Port was not reserved by us using reserve_port() */
+    return;
+  }
+  port_buckets[bucket] &= ~(1U << pos);
 }
 
 




reply via email to

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