summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/man/gnunet-transport.13
-rw-r--r--src/transport/Makefile.am10
-rw-r--r--src/transport/gnunet-transport-list-connections.c123
-rw-r--r--src/transport/gnunet-transport.c53
4 files changed, 50 insertions, 139 deletions
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) : "<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 */
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.
@@ -53,6 +54,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).
*/
static int ret;
@@ -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));
@@ -279,6 +290,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) : "<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
@@ -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},