gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r25001 - in gnunet/src: ats-tool include


From: gnunet
Subject: [GNUnet-SVN] r25001 - in gnunet/src: ats-tool include
Date: Fri, 16 Nov 2012 15:11:07 +0100

Author: wachs
Date: 2012-11-16 15:11:07 +0100 (Fri, 16 Nov 2012)
New Revision: 25001

Modified:
   gnunet/src/ats-tool/gnunet-ats.c
   gnunet/src/include/gnunet_ats_service.h
Log:
print ats properties

Modified: gnunet/src/ats-tool/gnunet-ats.c
===================================================================
--- gnunet/src/ats-tool/gnunet-ats.c    2012-11-16 13:55:04 UTC (rev 25000)
+++ gnunet/src/ats-tool/gnunet-ats.c    2012-11-16 14:11:07 UTC (rev 25001)
@@ -75,17 +75,49 @@
   struct PendingResolutions * pr = cls;
   char *ats_str;
   char *ats_tmp;
+  char *ats_prop_arr[GNUNET_ATS_PropertyCount] = GNUNET_ATS_PropertyStrings;
+  char *ats_net_arr[GNUNET_ATS_NetworkTypeCount] = 
GNUNET_ATS_NetworkTypeString;
+  char *ats_prop_value;
   unsigned int c;
+  uint32_t ats_type;
+  uint32_t ats_value;
+
   if (NULL != address)
   {
       ats_str = GNUNET_strdup("");
       for (c = 0; c <  pr->ats_count; c++)
       {
           ats_tmp = ats_str;
-          GNUNET_asprintf (&ats_str, "%s%u %u ", ats_tmp, 
ntohl(pr->ats[c].type), ntohl(pr->ats[c].value));
+
+          ats_type = ntohl(pr->ats[c].type);
+          ats_value = ntohl(pr->ats[c].value);
+
+          if (ats_type > GNUNET_ATS_PropertyCount)
+          {
+              GNUNET_break (0);
+              continue;
+          }
+
+          switch (ats_type) {
+            case GNUNET_ATS_NETWORK_TYPE:
+              if (ats_value > GNUNET_ATS_NetworkTypeCount)
+              {
+                  GNUNET_break (0);
+                  continue;
+              }
+              GNUNET_asprintf (&ats_prop_value, "%s", ats_net_arr[ats_value]);
+              break;
+            default:
+              GNUNET_asprintf (&ats_prop_value, "%u", ats_value);
+              break;
+          }
+
+          GNUNET_asprintf (&ats_str, "%s%s=%s, ", ats_tmp, 
ats_prop_arr[ats_type] , ats_prop_value);
           GNUNET_free (ats_tmp);
+          GNUNET_free (ats_prop_value);
       }
 
+
       fprintf (stderr, _("Peer `%s' plugin `%s', address `%s', bw out: %u 
Bytes/s, bw in %u Bytes/s, %s\n"),
         GNUNET_i2s (&pr->address->peer), pr->address->transport_name, address,
         ntohl (pr->bandwidth_out.value__), ntohl 
(pr->bandwidth_in.value__),ats_str);

Modified: gnunet/src/include/gnunet_ats_service.h
===================================================================
--- gnunet/src/include/gnunet_ats_service.h     2012-11-16 13:55:04 UTC (rev 
25000)
+++ gnunet/src/include/gnunet_ats_service.h     2012-11-16 14:11:07 UTC (rev 
25001)
@@ -30,7 +30,21 @@
 #include "gnunet_util_lib.h"
 #include "gnunet_hello_lib.h"
 
+/**
+ * Number of network types supported by ATS
+ */
+#define GNUNET_ATS_NetworkTypeCount 5
 
+/**
+ * ATS network types as array initializer
+ */
+#define GNUNET_ATS_NetworkType {GNUNET_ATS_NET_UNSPECIFIED, 
GNUNET_ATS_NET_LOOPBACK, GNUNET_ATS_NET_LAN, GNUNET_ATS_NET_WAN, 
GNUNET_ATS_NET_WLAN}
+
+/**
+ * ATS network types as string array initializer
+ */
+#define GNUNET_ATS_NetworkTypeString {"UNSPECIFIED", "LOOPBACK", "LAN", "WAN", 
"WLAN"}
+
 enum GNUNET_ATS_Network_Type
 {
   GNUNET_ATS_NET_UNSPECIFIED = 0,
@@ -40,7 +54,19 @@
   GNUNET_ATS_NET_WLAN = 4,
 };
 
+
+
 /**
+ * Number of property types supported by ATS
+ */
+#define GNUNET_ATS_PropertyCount 9
+
+/**
+ * ATS properties types as string array initializer
+ */
+#define GNUNET_ATS_PropertyStrings {"Terminator", "Utilization up", 
"Utilization down", "Network type", "Delay", "Distance", "Cost WAN", "Cost 
LAN", "Cost WLAN"}
+
+/**
  * Enum defining all known property types for ATS Enum values are used
  * in the GNUNET_ATS_Information struct as
  * (key,value)-pairs.
@@ -413,14 +439,10 @@
 #define GNUNET_ATS_QualityProperties {GNUNET_ATS_QUALITY_NET_DELAY, 
GNUNET_ATS_QUALITY_NET_DISTANCE}
 
 /**
- * Number of ATS quality properties
+ * ATS quality properties as string array initializer
  */
-#define GNUNET_ATS_NetworkTypeCount 5
+#define GNUNET_ATS_QualityPropertiesString {"Delay", "Distance"}
 
-/**
- * ATS quality properties as array initializer
- */
-#define GNUNET_ATS_NetworkType {GNUNET_ATS_NET_UNSPECIFIED, 
GNUNET_ATS_NET_LOOPBACK, GNUNET_ATS_NET_LAN, GNUNET_ATS_NET_WAN, 
GNUNET_ATS_NET_WLAN}
 
 GNUNET_NETWORK_STRUCT_BEGIN
 




reply via email to

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