-fix (C) notices
[oweals/gnunet.git] / src / cadet / cadet_common.c
index 28c5743deca42f02209f0fb044d693e5edcda947..08e95bbdba9c5ad488f65d36e26dabc59b22fcdd 100644 (file)
@@ -1,6 +1,6 @@
 /*
      This file is part of GNUnet.
-     (C) 2012 Christian Grothoff (and other contributing authors)
+     Copyright (C) 2012 GNUnet e.V.
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -14,8 +14,8 @@
 
      You should have received a copy of the GNU General Public License
      along with GNUnet; see the file COPYING.  If not, write to the
-     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-     Boston, MA 02111-1307, USA.
+     Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+     Boston, MA 02110-1301, USA.
 */
 
 /**
@@ -47,7 +47,7 @@ GC_f2s (int fwd)
   else
   {
     /* Not an error, can happen with CONNECTION_BROKEN messages. */
-    return "";
+    return "\???";
   }
 }
 
@@ -99,13 +99,45 @@ GC_h2s (const struct GNUNET_CADET_Hash *id)
 }
 
 
+/**
+ * Allocate a string with a hexdump of any binary data.
+ *
+ * @param bin Arbitrary binary data.
+ * @param len Length of @a bin in bytes.
+ * @param output Where to write the output (if *output be NULL it's allocated).
+ *
+ * @return The size of the output.
+ */
+size_t
+GC_bin2s (void *bin, unsigned int len, char **output)
+{
+  char *data = bin;
+  char *buf;
+  unsigned int s_len;
+  unsigned int i;
+
+  s_len = 2 * len + 1;
+  if (NULL == *output)
+    *output = GNUNET_malloc (s_len);
+  buf = *output;
+
+  for (i = 0; i < len; i++)
+  {
+    SPRINTF (&buf[2 * i], "%2X", data[i]);
+  }
+  buf[s_len - 1] = '\0';
+
+  return s_len;
+}
+
+
 #if !defined(GNUNET_CULL_LOGGING)
 const char *
 GC_m2s (uint16_t m)
 {
-  static char buf[2][32];
+  static char buf[2][16];
   static int idx;
-  const char *t;
+  const char *s;
 
   idx = (idx + 1) % 2;
   switch (m)
@@ -114,237 +146,253 @@ GC_m2s (uint16_t m)
      * Used to mark the "payload" of a non-payload message.
      */
     case 0:
-      return "";
+      s = "retransmit";
+      break;
 
       /**
        * Request the creation of a path
        */
     case GNUNET_MESSAGE_TYPE_CADET_CONNECTION_CREATE:
-      t = "CONNECTION_CREATE";
+      s = "CONN_CREAT";
       break;
 
       /**
        * Request the modification of an existing path
        */
     case GNUNET_MESSAGE_TYPE_CADET_CONNECTION_ACK:
-      t = "CONNECTION_ACK";
+      s = "CONN_ACK";
       break;
 
       /**
        * Notify that a connection of a path is no longer valid
        */
     case GNUNET_MESSAGE_TYPE_CADET_CONNECTION_BROKEN:
-      t = "CONNECTION_BROKEN";
+      s = "CONN_BRKN";
       break;
 
       /**
        * At some point, the route will spontaneously change
        */
     case GNUNET_MESSAGE_TYPE_CADET_PATH_CHANGED:
-      t = "PATH_CHANGED";
+      s = "PATH_CHNGD";
       break;
 
       /**
        * Transport payload data.
        */
     case GNUNET_MESSAGE_TYPE_CADET_DATA:
-      t = "DATA";
+      s = "DATA";
       break;
 
     /**
      * Confirm receipt of payload data.
      */
     case GNUNET_MESSAGE_TYPE_CADET_DATA_ACK:
-      t = "DATA_ACK";
+      s = "DATA_ACK";
       break;
 
       /**
        * Key exchange encapsulation.
        */
     case GNUNET_MESSAGE_TYPE_CADET_KX:
-      t = "KX";
+      s = "KX";
       break;
 
       /**
-       * New ephemeral key.
+       * Axolotl key exchange message.
        */
-    case GNUNET_MESSAGE_TYPE_CADET_KX_EPHEMERAL:
-      t = "KX_EPHEMERAL";
+    case GNUNET_MESSAGE_TYPE_CADET_AX_KX:
+      s = "AX_KX";
       break;
 
       /**
-       * Challenge to test peer's session key.
+       * New ephemeral key.
        */
-    case GNUNET_MESSAGE_TYPE_CADET_KX_PING:
-      t = "KX_PING";
+    case GNUNET_MESSAGE_TYPE_CADET_KX_EPHEMERAL:
+      s = "KX_EPHM";
       break;
 
       /**
        * Answer to session key challenge.
        */
     case GNUNET_MESSAGE_TYPE_CADET_KX_PONG:
-      t = "KX_PONG";
+      s = "KX_PONG";
       break;
 
       /**
        * Request the destuction of a path
        */
     case GNUNET_MESSAGE_TYPE_CADET_CONNECTION_DESTROY:
-      t = "CONNECTION_DESTROY";
+      s = "CONN_DSTRY";
       break;
 
       /**
        * ACK for a data packet.
        */
     case GNUNET_MESSAGE_TYPE_CADET_ACK:
-      t = "ACK";
+      s = "ACK";
       break;
 
       /**
        * POLL for ACK.
        */
     case GNUNET_MESSAGE_TYPE_CADET_POLL:
-      t = "POLL";
+      s = "POLL";
       break;
 
       /**
        * Announce origin is still alive.
        */
     case GNUNET_MESSAGE_TYPE_CADET_KEEPALIVE:
-      t = "KEEPALIVE";
+      s = "KEEPALIVE";
       break;
 
     /**
        * Connect to the cadet service, specifying subscriptions
        */
     case GNUNET_MESSAGE_TYPE_CADET_LOCAL_CONNECT:
-      t = "LOCAL_CONNECT";
+      s = "LOC_CONNCT";
       break;
 
       /**
        * Ask the cadet service to create a new tunnel
        */
     case GNUNET_MESSAGE_TYPE_CADET_CHANNEL_CREATE:
-      t = "CHANNEL_CREATE";
+      s = "CHAN_CREAT";
       break;
 
       /**
        * Ask the cadet service to destroy a tunnel
        */
     case GNUNET_MESSAGE_TYPE_CADET_CHANNEL_DESTROY:
-      t = "CHANNEL_DESTROY";
+      s = "CHAN_DSTRY";
       break;
 
       /**
        * Confirm the creation of a channel.
        */
     case GNUNET_MESSAGE_TYPE_CADET_CHANNEL_ACK:
-      t = "CHANNEL_ACK";
+      s = "CHAN_ACK";
       break;
 
       /**
        * Confirm the creation of a channel.
        */
     case GNUNET_MESSAGE_TYPE_CADET_CHANNEL_NACK:
-      t = "CHANNEL_NACK";
+      s = "CHAN_NACK";
       break;
 
       /**
-       * Encrypted payload.
+       * OTR encrypted payload.
        */
     case GNUNET_MESSAGE_TYPE_CADET_ENCRYPTED:
-      t = "ENCRYPTED";
+      s = "OTR";
+      break;
+
+      /**
+       * Axolotl encrypted payload.
+       */
+    case GNUNET_MESSAGE_TYPE_CADET_AX:
+      s = "AX";
       break;
 
       /**
        * Local payload traffic
        */
     case GNUNET_MESSAGE_TYPE_CADET_LOCAL_DATA:
-      t = "LOCAL_DATA";
+      s = "LOC_DATA";
       break;
 
       /**
        * Local ACK for data.
        */
     case GNUNET_MESSAGE_TYPE_CADET_LOCAL_ACK:
-      t = "LOCAL_ACK";
+      s = "LOC_ACK";
       break;
 
       /**
        * Local monitoring of channels.
        */
     case GNUNET_MESSAGE_TYPE_CADET_LOCAL_INFO_CHANNELS:
-      t = "LOCAL_INFO_CHANNELS";
+      s = "INFO_CHANS";
       break;
 
       /**
        * Local monitoring of a channel.
        */
     case GNUNET_MESSAGE_TYPE_CADET_LOCAL_INFO_CHANNEL:
-      t = "LOCAL_INFO_CHANNEL";
+      s = "INFO_CHAN";
       break;
 
       /**
        * Local monitoring of service.
        */
     case GNUNET_MESSAGE_TYPE_CADET_LOCAL_INFO_TUNNELS:
-      t = "LOCAL_INFO_TUNNELS";
+      s = "INFO_TUNS";
       break;
 
       /**
        * Local monitoring of service.
        */
     case GNUNET_MESSAGE_TYPE_CADET_LOCAL_INFO_TUNNEL:
-      t = "LOCAL_INFO_TUNNEL";
+      s = "INFO_TUN";
       break;
 
       /**
        * Local information about all connections of service.
        */
     case GNUNET_MESSAGE_TYPE_CADET_LOCAL_INFO_CONNECTIONS:
-      t = "LOCAL_INFO_CONNECTIONS";
+      s = "INFO_CONNS";
       break;
 
       /**
        * Local information of service about a specific connection.
        */
     case GNUNET_MESSAGE_TYPE_CADET_LOCAL_INFO_CONNECTION:
-      t = "LOCAL_INFO_CONNECTION";
+      s = "INFO_CONN";
       break;
 
       /**
        * Local information about all peers known to the service.
        */
     case GNUNET_MESSAGE_TYPE_CADET_LOCAL_INFO_PEERS:
-      t = "LOCAL_INFO_PEERS";
+      s = "INFO_PEERS";
       break;
 
       /**
        * Local information of service about a specific peer.
        */
     case GNUNET_MESSAGE_TYPE_CADET_LOCAL_INFO_PEER:
-      t = "LOCAL_INFO_PEER";
+      s = "INFO_PEER";
       break;
 
       /**
        * Traffic (net-cat style) used by the Command Line Interface.
        */
     case GNUNET_MESSAGE_TYPE_CADET_CLI:
-      t = "CLI";
+      s = "CLI";
       break;
 
       /**
        * Debug request.
        */
     case GNUNET_MESSAGE_TYPE_CADET_LOCAL_INFO_DUMP:
-      t = "INFO_DUMP";
+      s = "INFO_DUMP";
+      break;
+
+      /**
+       * Used to mark the "payload" of a non-payload message.
+       */
+    case UINT16_MAX:
+      s = "      N/A";
       break;
 
+
     default:
-      SPRINTF(buf[idx], "%u (UNKNOWN TYPE)", m);
+      SPRINTF (buf[idx], "{UNK: %5u}", m);
       return buf[idx];
   }
-  SPRINTF(buf[idx], "{%18s}", t);
+  SPRINTF (buf[idx], "{%10s}", s);
   return buf[idx];
 }
 #else