diff options
author | Bertrand Marc <beberking@gmail.com> | 2012-06-06 20:47:48 +0200 |
---|---|---|
committer | Bertrand Marc <beberking@gmail.com> | 2012-06-06 20:47:48 +0200 |
commit | 740b30688bd745a527f96f9116c19acb3480971a (patch) | |
tree | 2709a3f4dba11c174aa9e1ba3612e30c578e76a9 /src/core/gnunet-core-list-connections.c | |
parent | 2b81464a43485fcc8ce079fafdee7b7a171835f4 (diff) |
Imported Upstream version 0.9.3upstream/0.9.3
Diffstat (limited to 'src/core/gnunet-core-list-connections.c')
-rw-r--r-- | src/core/gnunet-core-list-connections.c | 207 |
1 files changed, 0 insertions, 207 deletions
diff --git a/src/core/gnunet-core-list-connections.c b/src/core/gnunet-core-list-connections.c deleted file mode 100644 index fcd0765..0000000 --- a/src/core/gnunet-core-list-connections.c +++ /dev/null @@ -1,207 +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 core/gnunet-core-list-connections.c - * @brief Print information about other known _connected_ peers. - * @author Nathan Evans - */ -#include "platform.h" -#include "gnunet_crypto_lib.h" -#include "gnunet_configuration_lib.h" -#include "gnunet_getopt_lib.h" -#include "gnunet_peerinfo_service.h" -#include "gnunet_transport_service.h" -#include "gnunet_core_service.h" -#include "gnunet_program_lib.h" - -#define VERBOSE 0 -static int no_resolve; - -#if VERBOSE -static unsigned int peer_count; -#endif - -static const struct GNUNET_CONFIGURATION_Handle *cfg; - -struct AddressStringList -{ - /** - * Pointer to previous element. - */ - struct AddressStringList *prev; - - /** - * Pointer to next element. - */ - struct AddressStringList *next; - - /** - * Address as string. - */ - char *address_string; -}; - -struct PrintContext -{ - struct GNUNET_PeerIdentity peer; - struct AddressStringList *address_list_head; - struct AddressStringList *address_list_tail; -}; - - -static void -dump_pc (struct PrintContext *pc) -{ - struct GNUNET_CRYPTO_HashAsciiEncoded enc; - struct AddressStringList *address; - - GNUNET_CRYPTO_hash_to_enc (&pc->peer.hashPubKey, &enc); - printf (_("Peer `%s'\n"), (const char *) &enc); - while (NULL != (address = pc->address_list_head)) - { - printf ("\t%s\n", address->address_string); - GNUNET_free (address->address_string); - GNUNET_CONTAINER_DLL_remove (pc->address_list_head, pc->address_list_tail, - address); - GNUNET_free (address); - } - - printf ("\n"); - - GNUNET_free (pc); -} - - -/** - * Function to call with a human-readable format of an address - * - * @param cls closure - * @param peer peer this update is about - * @param address NULL on error, otherwise 0-terminated printable UTF-8 string - */ -static void -process_resolved_address (void *cls, const struct GNUNET_PeerIdentity *peer, - const struct GNUNET_HELLO_Address *address) -{ - struct PrintContext *pc = cls; - -// struct AddressStringList *new_address; - - if (address == NULL) - { - dump_pc (pc); - return; - } - - /* This does exactly the same as gnunet-transport -i ! */ - /* - * new_address = GNUNET_malloc (sizeof (struct AddressStringList)); - * #if VERBOSE - * FPRINTF (stderr, "Received address %s\n", address); - * #endif - * - * new_address->address_string = GNUNET_strdup ("FIXME"); - * GNUNET_CONTAINER_DLL_insert (pc->address_list_head, pc->address_list_tail, - * new_address); - */ -} - - -/** - * Callback for retrieving a list of connected peers. - */ -static void -connected_peer_callback (void *cls, const struct GNUNET_PeerIdentity *peer, - const struct GNUNET_ATS_Information *atsi, - unsigned int atsi_count) -{ - struct PrintContext *pc; - - if (peer != NULL) /* Not yet finished */ - { -#if VERBOSE - FPRINTF (stderr, "Learned about peer %s\n", GNUNET_i2s (peer)); - peer_count++; -#endif - pc = GNUNET_malloc (sizeof (struct PrintContext)); - pc->peer = *peer; - GNUNET_TRANSPORT_peer_get_active_addresses (cfg, peer, GNUNET_YES, - GNUNET_TIME_UNIT_MINUTES, - &process_resolved_address, pc); - } -#if VERBOSE - else - { - FPRINTF (stderr, "Counted %u total connected peers.\n", peer_count); - } -#endif -} - - -/** - * 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_CORE_iterate_peers (cfg, &connected_peer_callback, 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-core-list-connections.c */ |