static struct GNUNET_SCHEDULER_Handle *sched;
+static struct GNUNET_PEERINFO_Handle *peerinfo;
+
static const struct GNUNET_CONFIGURATION_Handle *cfg;
struct PrintContext
count_address (void *cls,
const char *tname,
struct GNUNET_TIME_Absolute expiration,
- const void *addr, size_t addrlen)
+ const void *addr, uint16_t addrlen)
{
struct PrintContext *pc = cls;
pc->off++;
print_address (void *cls,
const char *tname,
struct GNUNET_TIME_Absolute expiration,
- const void *addr, size_t addrlen)
+ const void *addr, uint16_t addrlen)
{
struct PrintContext *pc = cls;
GNUNET_TRANSPORT_address_lookup (sched,
struct PrintContext *pc;
if (peer == NULL)
- return;
+ {
+ GNUNET_PEERINFO_disconnect (peerinfo);
+ switch (trust)
+ {
+ case 0:
+ break;
+ case 1:
+ fprintf (stderr,
+ _("Timeout trying to interact with PEERINFO service\n"));
+ break;
+ case 2:
+ fprintf (stderr,
+ _("Error in communication with PEERINFO service\n"));
+ break;
+ default:
+ GNUNET_break (0);
+ break;
+ }
+ return;
+ }
if (be_quiet)
{
GNUNET_CRYPTO_hash_to_enc (&peer->hashPubKey, &enc);
struct GNUNET_PeerIdentity pid;
struct GNUNET_CRYPTO_HashAsciiEncoded enc;
char *fn;
+ int delta;
sched = s;
cfg = c;
+ delta = 0;
+ if ( (args[0] != NULL) &&
+ (args[1] != NULL) &&
+ (1 == sscanf(args[0], "%d", &delta)) &&
+ (GNUNET_OK ==
+ GNUNET_CRYPTO_hash_from_string (args[1],
+ &pid.hashPubKey)) )
+ {
+ peerinfo = GNUNET_PEERINFO_connect (sched, cfg);
+ GNUNET_PEERINFO_iterate (peerinfo,
+ &pid,
+ delta,
+ GNUNET_TIME_UNIT_SECONDS,
+ &print_peer_info, NULL);
+ return;
+ }
+ else if (args[0] != NULL)
+ {
+ fprintf (stderr,
+ _("Invalid command line argument `%s'\n"),
+ args[0]);
+ return;
+ }
if (get_self != GNUNET_YES)
{
- (void) GNUNET_PEERINFO_iterate (cfg,
- sched,
+ peerinfo = GNUNET_PEERINFO_connect (sched, cfg);
+ if (peerinfo == NULL)
+ {
+ fprintf (stderr,
+ _("Could not access PEERINFO service. Exiting.\n"));
+ return;
+ }
+ (void) GNUNET_PEERINFO_iterate (peerinfo,
NULL,
0,
GNUNET_TIME_relative_multiply