From 0115376751f596cfe1865df854a28b797afb6395 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Wed, 26 Oct 2011 21:08:12 +0000 Subject: [PATCH] integrate gnunet-transport-list-connections with gnunet-transport --- doc/man/gnunet-transport.1 | 3 + src/transport/Makefile.am | 10 -- .../gnunet-transport-list-connections.c | 123 ------------------ src/transport/gnunet-transport.c | 53 +++++++- 4 files changed, 50 insertions(+), 139 deletions(-) delete mode 100644 src/transport/gnunet-transport-list-connections.c diff --git a/doc/man/gnunet-transport.1 b/doc/man/gnunet-transport.1 index 7443219a3..39e6f6c0b 100644 --- a/doc/man/gnunet-transport.1 +++ b/doc/man/gnunet-transport.1 @@ -23,6 +23,9 @@ peer to connect to (and to use for sending if used in conjunction with \-s) \fB\-h\fR, \fB\-\-help\fR print help page .TP +\fB\-i\fR, \fB\-\-information\fR +print information about our current connections (once) +.TP \fB\-L \fILOGLEVEL\fR, \fB\-\-loglevel=LOGLEVEL\fR Change the loglevel. Possible values for LOGLEVEL are ERROR, WARNING, INFO and DEBUG. .TP diff --git a/src/transport/Makefile.am b/src/transport/Makefile.am index 142d4de25..aa387ff2c 100644 --- a/src/transport/Makefile.am +++ b/src/transport/Makefile.am @@ -91,7 +91,6 @@ bin_PROGRAMS = \ gnunet-transport \ $(WLAN_BIN) \ gnunet-service-transport \ - gnunet-transport-list-connections \ gnunet-transport-certificate-creation #bin_SCRIPTS = \ @@ -121,15 +120,6 @@ gnunet_transport_wlan_helper_dummy_SOURCES = \ gnunet_transport_wlan_helper_dummy_LDADD = \ $(top_builddir)/src/util/libgnunetutil.la -gnunet_transport_list_connections_SOURCES = \ - gnunet-transport-list-connections.c -gnunet_transport_list_connections_LDADD = \ - $(top_builddir)/src/transport/libgnunettransport.la \ - $(top_builddir)/src/util/libgnunetutil.la \ - $(GN_LIBINTL) -gnunet_transport_list_connections_DEPENDENCIES = \ - libgnunettransport.la - gnunet_transport_SOURCES = \ gnunet-transport.c gnunet_transport_LDADD = \ diff --git a/src/transport/gnunet-transport-list-connections.c b/src/transport/gnunet-transport-list-connections.c deleted file mode 100644 index 64b67dcd4..000000000 --- a/src/transport/gnunet-transport-list-connections.c +++ /dev/null @@ -1,123 +0,0 @@ -/* - 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) : "", - (transport != NULL) ? transport : "", ((addr != NULL) && - (addrlen > 0) && - (transport != - NULL)) ? - "how do i resolve the name without transport service?" : - ""); -} - - -/** - * 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 */ diff --git a/src/transport/gnunet-transport.c b/src/transport/gnunet-transport.c index bc78e3d04..68f508f5b 100644 --- a/src/transport/gnunet-transport.c +++ b/src/transport/gnunet-transport.c @@ -22,6 +22,7 @@ * @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. @@ -52,6 +53,16 @@ static int benchmark_send; */ static int benchmark_receive; +/** + * Option -l. + */ +static int benchmark_receive; + +/** + * Option -i. + */ +static int iterate_connections; + /** * Global return value (0 success). */ @@ -113,7 +124,7 @@ do_disconnect (void *cls, 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, @@ -122,7 +133,7 @@ do_disconnect (void *cls, 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, @@ -161,7 +172,7 @@ transmit_data (void *cls, size_t size, 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)); @@ -187,7 +198,7 @@ notify_connect (void *cls, * ats, uint32_t ats_count) { if (verbosity > 0) - fprintf (stderr, + fprintf (stdout, _("Connected to %s\n"), GNUNET_i2s (peer)); if (0 != memcmp (&pid, @@ -228,7 +239,7 @@ notify_disconnect (void *cls, GNUNET_PeerIdentity * peer) { if (verbosity > 0) - fprintf (stderr, + fprintf (stdout, _("Disconnected from %s\n"), GNUNET_i2s (peer)); if ( (0 == memcmp (&pid, @@ -268,7 +279,7 @@ notify_receive (void *cls, 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)); @@ -278,6 +289,28 @@ notify_receive (void *cls, } +/** + * 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) : "", + (transport != NULL) ? transport : "", + ((addr != NULL) && (addrlen > 0) && (transport != NULL)) ? + "how do i resolve the name without transport service?" : + ""); +} + + /** * Main function that will be run by the scheduler. * @@ -328,6 +361,11 @@ run (void *cls, char *const *args, const char *cfgfile, &do_disconnect, NULL); } + if (iterate_connections) + { + GNUNET_TRANSPORT_address_iterate (cfg, GNUNET_TIME_UNIT_MINUTES, + &process_address, NULL); + } } @@ -341,6 +379,9 @@ main (int argc, char *const *argv) {'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}, -- 2.25.1