+++ /dev/null
-/*
- This file is part of GNUnet.
- (C) 2011 Christian Grothoff (and other contributing authors)
-
- GNUnet is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 3, or (at your
- option) any later version.
-
- GNUnet is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- 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.
-*/
-
-/**
- * @file transport/gnunet-transport-list-connections.c
- *
- * @brief Print all known address information about other peers.
- *
- * Lists all peers and connections that the transport service is
- * aware of. Pretty prints addresses, peer id's, and whether
- * or not the _address_ is connected. Note that these are not
- * core level connections, only transport level connections.
- *
- * @author Nathan Evans
- */
-#include "platform.h"
-#include "gnunet_crypto_lib.h"
-#include "gnunet_configuration_lib.h"
-#include "gnunet_getopt_lib.h"
-#include "gnunet_transport_service.h"
-#include "gnunet_program_lib.h"
-
-#define VERBOSE 0
-static int no_resolve;
-
-#if VERBOSE
-static unsigned int connection_count;
-#endif
-
-static const struct GNUNET_CONFIGURATION_Handle *cfg;
-
-/**
- * Function to call with a human-readable format of an address
- *
- * @param cls closure
- * @param address NULL on error, otherwise 0-terminated printable UTF-8 string
- */
-static void
-process_address (void *cls, const struct GNUNET_PeerIdentity *peer,
- const char *transport, const void *addr, size_t addrlen)
-{
-#if VERBOSE
- connection_count++;
-#endif
- if ((peer != NULL) || (transport != NULL) ||
- ((addr != NULL) && (addrlen > 0)))
- fprintf (stdout, "Peer `%s' plugin: `%s' address `%s'\n",
- (peer != NULL) ? GNUNET_i2s (peer) : "<unknown>",
- (transport != NULL) ? transport : "<unknown>", ((addr != NULL) &&
- (addrlen > 0) &&
- (transport !=
- NULL)) ?
- "how do i resolve the name without transport service?" :
- "<unknown>");
-}
-
-
-/**
- * Main function that will be run by the scheduler.
- *
- * @param cls closure
- * @param args remaining command-line arguments
- * @param cfgfile name of the configuration file used (for saving, can be NULL!)
- * @param c configuration
- */
-static void
-run (void *cls, char *const *args, const char *cfgfile,
- const struct GNUNET_CONFIGURATION_Handle *c)
-{
-
- cfg = c;
- if (args[0] != NULL)
- {
- fprintf (stderr, _("Invalid command line argument `%s'\n"), args[0]);
- return;
- }
-
- GNUNET_TRANSPORT_address_iterate (cfg, GNUNET_TIME_UNIT_MINUTES,
- &process_address, NULL);
-}
-
-
-/**
- * The main function to obtain peer information.
- *
- * @param argc number of arguments from the command line
- * @param argv command line arguments
- * @return 0 ok, 1 on error
- */
-int
-main (int argc, char *const *argv)
-{
- static const struct GNUNET_GETOPT_CommandLineOption options[] = {
- {'n', "numeric", NULL,
- gettext_noop ("don't resolve host names"),
- 0, &GNUNET_GETOPT_set_one, &no_resolve},
- GNUNET_GETOPT_OPTION_END
- };
- return (GNUNET_OK ==
- GNUNET_PROGRAM_run (argc, argv, "gnunet-list-connections",
- gettext_noop
- ("Print information about connected peers."),
- options, &run, NULL)) ? 0 : 1;
-}
-
-/* end of gnunet-transport-list-connections.c */
* @file src/transport/gnunet-transport.c
* @brief Tool to help configure, measure and control the transport subsystem.
* @author Christian Grothoff
+ * @author Nathan Evans
*
* This utility can be used to test if a transport mechanism for
* GNUnet is properly configured.
*/
static int benchmark_receive;
+/**
+ * Option -l.
+ */
+static int benchmark_receive;
+
+/**
+ * Option -i.
+ */
+static int iterate_connections;
+
/**
* Global return value (0 success).
*/
if (benchmark_receive)
{
duration = GNUNET_TIME_absolute_get_duration (start_time);
- fprintf (stderr,
+ fprintf (stdout,
_("Received %llu bytes/s (%llu bytes in %llu ms)\n"),
1000 * traffic_received / (1+duration.rel_value),
traffic_received,
if (benchmark_send)
{
duration = GNUNET_TIME_absolute_get_duration (start_time);
- fprintf (stderr,
+ fprintf (stdout,
_("Transmitted %llu bytes/s (%llu bytes in %llu ms)\n"),
1000 * traffic_sent / (1+duration.rel_value),
traffic_sent,
GNUNET_TIME_UNIT_FOREVER_REL,
&transmit_data, NULL);
if (verbosity > 0)
- fprintf (stderr,
+ fprintf (stdout,
_("Transmitting %u bytes to %s\n"),
(unsigned int) size,
GNUNET_i2s (&pid));
* ats, uint32_t ats_count)
{
if (verbosity > 0)
- fprintf (stderr,
+ fprintf (stdout,
_("Connected to %s\n"),
GNUNET_i2s (peer));
if (0 != memcmp (&pid,
GNUNET_PeerIdentity * peer)
{
if (verbosity > 0)
- fprintf (stderr,
+ fprintf (stdout,
_("Disconnected from %s\n"),
GNUNET_i2s (peer));
if ( (0 == memcmp (&pid,
if (! benchmark_receive)
return;
if (verbosity > 0)
- fprintf (stderr,
+ fprintf (stdout,
_("Received %u bytes from %s\n"),
(unsigned int) ntohs (message->size),
GNUNET_i2s (peer));
}
+/**
+ * Function to call with a human-readable format of an address
+ *
+ * @param cls closure
+ * @param address NULL on error, otherwise 0-terminated printable UTF-8 string
+ */
+static void
+process_address (void *cls, const struct GNUNET_PeerIdentity *peer,
+ const char *transport, const void *addr, size_t addrlen)
+{
+ if ((peer != NULL) || (transport != NULL) ||
+ ((addr != NULL) && (addrlen > 0)))
+ fprintf (stdout,
+ _("Peer `%s' plugin: `%s' address `%s'\n"),
+ (peer != NULL) ? GNUNET_i2s (peer) : "<unknown>",
+ (transport != NULL) ? transport : "<unknown>",
+ ((addr != NULL) && (addrlen > 0) && (transport != NULL)) ?
+ "how do i resolve the name without transport service?" :
+ "<unknown>");
+}
+
+
/**
* Main function that will be run by the scheduler.
*
&do_disconnect,
NULL);
}
+ if (iterate_connections)
+ {
+ GNUNET_TRANSPORT_address_iterate (cfg, GNUNET_TIME_UNIT_MINUTES,
+ &process_address, NULL);
+ }
}
{'C', "connect", "PEER",
gettext_noop ("try to connect to the given peer"),
1, &GNUNET_GETOPT_set_string, &cpid},
+ {'i', "information", NULL,
+ gettext_noop ("provide information about all current connections (once)"),
+ 0, &GNUNET_GETOPT_set_one, &iterate_connections},
{'s', "send", NULL,
gettext_noop ("send data for benchmarking to the other peer (until CTRL-C)"),
0, &GNUNET_GETOPT_set_one, &benchmark_send},