/*
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
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.
*/
/**
else
{
/* Not an error, can happen with CONNECTION_BROKEN messages. */
- return "";
+ return "\???";
}
}
}
+/**
+ * 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)
{
+ /**
+ * Used to mark the "payload" of a non-payload message.
+ */
+ case 0:
+ 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