GNUnet  0.10.x
Data Structures | Macros | Functions | Variables
gnunet-peerinfo.c File Reference

Print information about other known peers. More...

#include "platform.h"
#include "gnunet_util_lib.h"
#include "gnunet_hello_lib.h"
#include "gnunet_transport_service.h"
#include "gnunet_transport_hello_service.h"
#include "gnunet_peerinfo_service.h"
#include "gnunet-peerinfo_plugins.h"
Include dependency graph for gnunet-peerinfo.c:

Go to the source code of this file.

Data Structures

struct  AddressRecord
 Record we keep for each printable address. More...
 
struct  PrintContext
 Structure we use to collect printable address information. More...
 

Macros

#define TIMEOUT   GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 5)
 How long until we time out during address lookup? More...
 

Functions

static void state_machine (void *cls)
 Main state machine that goes over all options and runs the next requested function. More...
 
static void dump_pc (struct PrintContext *pc)
 Print the collected address information to the console and free pc. More...
 
static void process_resolved_address (void *cls, const char *address, int res)
 Function to call with a human-readable format of an address. More...
 
static int count_address (void *cls, const struct GNUNET_HELLO_Address *address, struct GNUNET_TIME_Absolute expiration)
 Iterator callback to go over all addresses and count them. More...
 
static int print_address (void *cls, const struct GNUNET_HELLO_Address *address, struct GNUNET_TIME_Absolute expiration)
 Iterator callback to go over all addresses. More...
 
static void print_peer_info (void *cls, const struct GNUNET_PeerIdentity *peer, const struct GNUNET_HELLO_Message *hello, const char *err_msg)
 Print information about the peer. More...
 
static int count_addr (void *cls, const struct GNUNET_HELLO_Address *address, struct GNUNET_TIME_Absolute expiration)
 Count the number of addresses in the HELLO. More...
 
static void dump_my_hello ()
 Write HELLO of my peer to a file. More...
 
static void print_my_uri (void *cls, const struct GNUNET_PeerIdentity *peer, const struct GNUNET_HELLO_Message *hello, const char *err_msg)
 Print URI of the peer. More...
 
static void add_continuation (void *cls)
 Continuation called from GNUNET_PEERINFO_add_peer() More...
 
static int parse_hello_uri (const char *put_uri)
 Parse the PUT URI given at the command line and add it to our peerinfo database. More...
 
static void shutdown_task (void *cls)
 Main state machine that goes over all options and runs the next requested function. More...
 
static void hello_callback (void *cls, const struct GNUNET_MessageHeader *hello)
 Function called with our peer's HELLO message. More...
 
static void run (void *cls, char *const *args, const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *c)
 Main function that will be run by the scheduler. More...
 
int main (int argc, char *const *argv)
 The main function to obtain peer information. More...
 

Variables

static int no_resolve
 Option '-n'. More...
 
static int be_quiet
 Option '-q'. More...
 
static int include_friend_only
 Option '-f'. More...
 
static int get_self
 Option '-s'. More...
 
static int get_uri
 Option. More...
 
static int default_operation
 Option. More...
 
static int get_info
 Option '-i'. More...
 
static char * put_uri
 Option. More...
 
static char * dump_hello
 Option -d. More...
 
static struct GNUNET_PEERINFO_Handlepeerinfo
 Handle to peerinfo service. More...
 
static const struct GNUNET_CONFIGURATION_Handlecfg
 Configuration handle. More...
 
static struct GNUNET_SCHEDULER_Tasktt
 Main state machine task (if active). More...
 
static struct GNUNET_TRANSPORT_HelloGetHandlegh
 Pending GNUNET_TRANSPORT_hello_get() operation. More...
 
static struct GNUNET_PEERINFO_IteratorContextpic
 Current iterator context (if active, otherwise NULL). More...
 
static struct GNUNET_PeerIdentity my_peer_identity
 My peer identity. More...
 
static struct PrintContextpc_head
 Head of list of print contexts. More...
 
static struct PrintContextpc_tail
 Tail of list of print contexts. More...
 
static struct GNUNET_MQ_Envelopeac
 Handle to current GNUNET_PEERINFO_add_peer() operation. More...
 
static struct GNUNET_HELLO_Messagemy_hello
 Hello of this peer (if initialized). More...
 

Detailed Description

Print information about other known peers.

Author
Christian Grothoff
Matthias Wachs

Definition in file gnunet-peerinfo.c.

Macro Definition Documentation

◆ TIMEOUT

How long until we time out during address lookup?

Definition at line 38 of file gnunet-peerinfo.c.

Referenced by print_address().

Function Documentation

◆ state_machine()

static void state_machine ( void *  cls)
static

Main state machine that goes over all options and runs the next requested function.

Parameters
clsunused

Definition at line 724 of file gnunet-peerinfo.c.

References _, be_quiet, default_operation, get_info, get_self, get_uri, GNUNET_free, GNUNET_i2s_full(), GNUNET_NO, GNUNET_PEERINFO_iterate(), GNUNET_SCHEDULER_add_now(), GNUNET_SCHEDULER_shutdown(), GNUNET_SYSERR, GNUNET_YES, GPI_plugins_load(), include_friend_only, my_peer_identity, parse_hello_uri(), print_my_uri(), print_peer_info(), and put_uri.

Referenced by add_continuation(), dump_pc(), hello_callback(), parse_hello_uri(), print_my_uri(), print_peer_info(), and run().

725 {
726  tt = NULL;
727 
728  if (NULL != put_uri)
729  {
732  {
733  fprintf(stderr, _("Invalid URI `%s'\n"), put_uri);
735  }
737  put_uri = NULL;
738  }
739  else if (GNUNET_YES == get_info)
740  {
745  NULL,
747  NULL);
748  }
749  else if (GNUNET_YES == get_self)
750  {
752  if (be_quiet)
753  printf("%s\n", GNUNET_i2s_full(&my_peer_identity));
754  else
755  printf(_("I am peer `%s'.\n"), GNUNET_i2s_full(&my_peer_identity));
757  }
758  else if (GNUNET_YES == get_uri)
759  {
764  &print_my_uri,
765  NULL);
766  get_uri = GNUNET_NO;
767  }
768  else if (GNUNET_YES == default_operation)
769  {
770  /* default operation list all */
774  }
775  else
776  {
778  }
780 }
static int default_operation
Option.
static int be_quiet
Option '-q'.
static void print_peer_info(void *cls, const struct GNUNET_PeerIdentity *peer, const struct GNUNET_HELLO_Message *hello, const char *err_msg)
Print information about the peer.
static void print_my_uri(void *cls, const struct GNUNET_PeerIdentity *peer, const struct GNUNET_HELLO_Message *hello, const char *err_msg)
Print URI of the peer.
static const struct GNUNET_CONFIGURATION_Handle * cfg
Configuration handle.
static struct GNUNET_SCHEDULER_Task * tt
Main state machine task (if active).
static int include_friend_only
Option '-f'.
#define GNUNET_NO
Definition: gnunet_common.h:78
const char * GNUNET_i2s_full(const struct GNUNET_PeerIdentity *pid)
Convert a peer identity to a string (for printing debug messages).
void GNUNET_SCHEDULER_shutdown(void)
Request the shutdown of a scheduler.
Definition: scheduler.c:517
static char * put_uri
Option.
#define _(String)
GNU gettext support macro.
Definition: platform.h:181
static int get_uri
Option.
struct GNUNET_PEERINFO_IteratorContext * GNUNET_PEERINFO_iterate(struct GNUNET_PEERINFO_Handle *h, int include_friend_only, const struct GNUNET_PeerIdentity *peer, GNUNET_PEERINFO_Processor callback, void *callback_cls)
Call a method for each known matching host.
Definition: peerinfo_api.c:486
static struct GNUNET_PEERINFO_Handle * peerinfo
Handle to peerinfo service.
static struct GNUNET_PEERINFO_IteratorContext * pic
Current iterator context (if active, otherwise NULL).
static void state_machine(void *cls)
Main state machine that goes over all options and runs the next requested function.
struct GNUNET_SCHEDULER_Task * GNUNET_SCHEDULER_add_now(GNUNET_SCHEDULER_TaskCallback task, void *task_cls)
Schedule a new task to be run as soon as possible.
Definition: scheduler.c:1264
static int parse_hello_uri(const char *put_uri)
Parse the PUT URI given at the command line and add it to our peerinfo database.
#define GNUNET_SYSERR
Definition: gnunet_common.h:76
static struct GNUNET_PeerIdentity my_peer_identity
My peer identity.
void GPI_plugins_load(const struct GNUNET_CONFIGURATION_Handle *cfg)
Load and initialize all plugins.
static int get_self
Option '-s'.
#define GNUNET_YES
Definition: gnunet_common.h:77
static int get_info
Option '-i'.
#define GNUNET_free(ptr)
Wrapper around free.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ dump_pc()

static void dump_pc ( struct PrintContext pc)
static

Print the collected address information to the console and free pc.

Parameters
pcprinting context

Definition at line 231 of file gnunet-peerinfo.c.

References _, PrintContext::address_list, AddressRecord::expiration, PrintContext::friend_only, GNUNET_CONTAINER_DLL_remove, GNUNET_free, GNUNET_free_non_null, GNUNET_i2s_full(), GNUNET_SCHEDULER_add_now(), GNUNET_STRINGS_absolute_time_to_string(), GNUNET_YES, PrintContext::num_addresses, PrintContext::peer, AddressRecord::result, and state_machine().

Referenced by print_peer_info(), and process_resolved_address().

232 {
233  unsigned int i;
234 
235  printf(_("%sPeer `%s'\n"),
236  (GNUNET_YES == pc->friend_only) ? "F2F: " : "",
237  GNUNET_i2s_full(&pc->peer));
238  for (i = 0; i < pc->num_addresses; i++)
239  {
240  if (NULL != pc->address_list[i].result)
241  {
242  printf(_("\tExpires: %s \t %s\n"),
244  pc->address_list[i].expiration),
245  pc->address_list[i].result);
247  }
248  }
249  printf("\n");
252  GNUNET_free(pc);
253  if ((NULL == pc_head) && (NULL == pic))
255 }
#define GNUNET_CONTAINER_DLL_remove(head, tail, element)
Remove an element from a DLL.
struct GNUNET_PeerIdentity peer
Identity of the peer.
static struct GNUNET_SCHEDULER_Task * tt
Main state machine task (if active).
const char * GNUNET_i2s_full(const struct GNUNET_PeerIdentity *pid)
Convert a peer identity to a string (for printing debug messages).
#define GNUNET_free_non_null(ptr)
Free the memory pointed to by ptr if ptr is not NULL.
#define _(String)
GNU gettext support macro.
Definition: platform.h:181
unsigned int num_addresses
Number of completed addresses in address_list.
static struct GNUNET_PEERINFO_IteratorContext * pic
Current iterator context (if active, otherwise NULL).
static void state_machine(void *cls)
Main state machine that goes over all options and runs the next requested function.
struct GNUNET_SCHEDULER_Task * GNUNET_SCHEDULER_add_now(GNUNET_SCHEDULER_TaskCallback task, void *task_cls)
Schedule a new task to be run as soon as possible.
Definition: scheduler.c:1264
static struct PrintContext * pc_head
Head of list of print contexts.
struct GNUNET_TIME_Absolute expiration
Address expiration time.
char * result
Printable address.
static struct PrintContext * pc_tail
Tail of list of print contexts.
#define GNUNET_YES
Definition: gnunet_common.h:77
int friend_only
Hello was friend only, GNUNET_YES or GNUNET_NO.
struct AddressRecord * address_list
List of printable addresses.
const char * GNUNET_STRINGS_absolute_time_to_string(struct GNUNET_TIME_Absolute t)
Like asctime, except for GNUnet time.
Definition: strings.c:741
#define GNUNET_free(ptr)
Wrapper around free.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ process_resolved_address()

static void process_resolved_address ( void *  cls,
const char *  address,
int  res 
)
static

Function to call with a human-readable format of an address.

Parameters
clsclosure
addressNULL on error, otherwise 0-terminated printable UTF-8 string
resresult of the address to string conversion: if GNUNET_OK: address was valid (conversion to string might still have failed) if GNUNET_SYSERR: address is invalid

Definition at line 272 of file gnunet-peerinfo.c.

References _, PrintContext::address_list_size, AddressRecord::atsc, dump_pc(), GNUNET_ERROR_TYPE_INFO, GNUNET_free, GNUNET_i2s(), GNUNET_log, GNUNET_strdup, GNUNET_SYSERR, PrintContext::num_addresses, AddressRecord::pc, PrintContext::peer, and AddressRecord::result.

Referenced by print_address().

273 {
274  struct AddressRecord *ar = cls;
275  struct PrintContext *pc = ar->pc;
276 
277  if (NULL != address)
278  {
279  if (0 != strlen(address))
280  {
281  if (NULL != ar->result)
282  GNUNET_free(ar->result);
284  }
285  return;
286  }
287  ar->atsc = NULL;
288  if (GNUNET_SYSERR == res)
290  _("Failure: Cannot convert address to string for peer `%s'\n"),
291  GNUNET_i2s(&ar->pc->peer));
292  pc->num_addresses++;
293  if (pc->num_addresses == pc->address_list_size)
294  dump_pc(pc);
295 }
struct GNUNET_PeerIdentity peer
Identity of the peer.
struct PrintContext * pc
Print context this address record belongs to.
Structure we use to collect printable address information.
#define GNUNET_strdup(a)
Wrapper around GNUNET_xstrdup_.
#define _(String)
GNU gettext support macro.
Definition: platform.h:181
unsigned int num_addresses
Number of completed addresses in address_list.
Record we keep for each printable address.
static int res
#define GNUNET_SYSERR
Definition: gnunet_common.h:76
struct GNUNET_TRANSPORT_AddressToStringContext * atsc
Current address-to-string context (if active, otherwise NULL).
char * result
Printable address.
static void dump_pc(struct PrintContext *pc)
Print the collected address information to the console and free pc.
static struct GNUNET_FS_PublishContext * pc
Handle to FS-publishing operation.
#define GNUNET_log(kind,...)
unsigned int address_list_size
Number of addresses allocated in address_list.
static char * address
GNS address for this phone.
const char * GNUNET_i2s(const struct GNUNET_PeerIdentity *pid)
Convert a peer identity to a string (for printing debug messages).
#define GNUNET_free(ptr)
Wrapper around free.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ count_address()

static int count_address ( void *  cls,
const struct GNUNET_HELLO_Address address,
struct GNUNET_TIME_Absolute  expiration 
)
static

Iterator callback to go over all addresses and count them.

Parameters
clsstruct PrintContext * with off to increment
addressthe address
expirationexpiration time
Returns
GNUNET_OK to keep the address and continue

Definition at line 307 of file gnunet-peerinfo.c.

References GNUNET_OK, PrintContext::off, and AddressRecord::pc.

Referenced by print_peer_info().

310 {
311  struct PrintContext *pc = cls;
312 
313  pc->off++;
314  return GNUNET_OK;
315 }
Structure we use to collect printable address information.
#define GNUNET_OK
Named constants for return values.
Definition: gnunet_common.h:75
static struct GNUNET_FS_PublishContext * pc
Handle to FS-publishing operation.
unsigned int off
Current offset in address_list (counted down).
Here is the caller graph for this function:

◆ print_address()

static int print_address ( void *  cls,
const struct GNUNET_HELLO_Address address,
struct GNUNET_TIME_Absolute  expiration 
)
static

Iterator callback to go over all addresses.

Parameters
clsclosure
addressthe address
expirationexpiration time
Returns
GNUNET_OK to keep the address and continue

Definition at line 327 of file gnunet-peerinfo.c.

References GNUNET_HELLO_Address::address_length, PrintContext::address_list, AddressRecord::atsc, AddressRecord::expiration, GNUNET_asprintf(), GNUNET_assert, GNUNET_OK, GNUNET_TRANSPORT_address_to_string(), GNUNET_HELLO_Address::local_info, no_resolve, PrintContext::off, AddressRecord::pc, process_resolved_address(), AddressRecord::result, TIMEOUT, and GNUNET_HELLO_Address::transport_name.

Referenced by print_peer_info().

330 {
331  struct PrintContext *pc = cls;
332  struct AddressRecord *ar;
333 
334  GNUNET_assert(0 < pc->off);
335  ar = &pc->address_list[--pc->off];
336  ar->pc = pc;
337  ar->expiration = expiration;
338  GNUNET_asprintf(&ar->result,
339  "%s:%u:%u",
340  address->transport_name,
341  address->address_length,
342  address->local_info);
344  address,
345  no_resolve,
346  TIMEOUT,
348  ar);
349  return GNUNET_OK;
350 }
size_t address_length
Number of bytes in address.
enum GNUNET_HELLO_AddressInfo local_info
Extended information about address.
static char * expiration
Credential TTL.
struct PrintContext * pc
Print context this address record belongs to.
Structure we use to collect printable address information.
#define GNUNET_assert(cond)
Use this for fatal errors that cannot be handled.
static const struct GNUNET_CONFIGURATION_Handle * cfg
Configuration handle.
#define GNUNET_OK
Named constants for return values.
Definition: gnunet_common.h:75
#define TIMEOUT
How long until we time out during address lookup?
int GNUNET_asprintf(char **buf, const char *format,...)
Like asprintf, just portable.
Record we keep for each printable address.
const char * transport_name
Name of the transport plugin enabling the communication using this address.
struct GNUNET_TIME_Absolute expiration
Address expiration time.
static int no_resolve
Option &#39;-n&#39;.
struct GNUNET_TRANSPORT_AddressToStringContext * GNUNET_TRANSPORT_address_to_string(const struct GNUNET_CONFIGURATION_Handle *cfg, const struct GNUNET_HELLO_Address *address, int numeric, struct GNUNET_TIME_Relative timeout, GNUNET_TRANSPORT_AddressToStringCallback aluc, void *aluc_cls)
Convert a binary address into a human readable address.
struct GNUNET_TRANSPORT_AddressToStringContext * atsc
Current address-to-string context (if active, otherwise NULL).
char * result
Printable address.
static struct GNUNET_FS_PublishContext * pc
Handle to FS-publishing operation.
unsigned int off
Current offset in address_list (counted down).
static void process_resolved_address(void *cls, const char *address, int res)
Function to call with a human-readable format of an address.
struct AddressRecord * address_list
List of printable addresses.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ print_peer_info()

static void print_peer_info ( void *  cls,
const struct GNUNET_PeerIdentity peer,
const struct GNUNET_HELLO_Message hello,
const char *  err_msg 
)
static

Print information about the peer.

Currently prints the struct GNUNET_PeerIdentity and the transport address.

Parameters
clsthe struct PrintContext *
peeridentity of the peer
helloaddresses of the peer
err_msgerror message

Definition at line 363 of file gnunet-peerinfo.c.

References _, PrintContext::address_list, PrintContext::address_list_size, be_quiet, count_address(), dump_pc(), PrintContext::friend_only, GNUNET_CONTAINER_DLL_insert, GNUNET_HELLO_is_friend_only(), GNUNET_HELLO_iterate_addresses(), GNUNET_i2s_full(), GNUNET_malloc, GNUNET_new, GNUNET_NO, GNUNET_SCHEDULER_add_now(), GNUNET_YES, PrintContext::off, AddressRecord::pc, PrintContext::peer, peer, print_address(), and state_machine().

Referenced by state_machine().

367 {
368  struct PrintContext *pc;
369  int friend_only;
370 
371  if (NULL == peer)
372  {
373  pic = NULL; /* end of iteration */
374  if (NULL != err_msg)
375  {
376  fprintf(stderr,
377  _("Error in communication with PEERINFO service: %s\n"),
378  err_msg);
379  }
380  if (NULL == pc_head)
382  return;
383  }
384  friend_only = GNUNET_NO;
385  if (NULL != hello)
386  friend_only = GNUNET_HELLO_is_friend_only(hello);
387  if ((GNUNET_YES == be_quiet) || (NULL == hello))
388  {
389  printf("%s%s\n",
390  (GNUNET_YES == friend_only) ? "F2F: " : "",
391  GNUNET_i2s_full(peer));
392  return;
393  }
394  pc = GNUNET_new(struct PrintContext);
396  pc->peer = *peer;
397  pc->friend_only = friend_only;
399  if (0 == pc->off)
400  {
401  dump_pc(pc);
402  return;
403  }
404  pc->address_list_size = pc->off;
405  pc->address_list = GNUNET_malloc(sizeof(struct AddressRecord) * pc->off);
407 }
static int be_quiet
Option &#39;-q&#39;.
struct GNUNET_PeerIdentity peer
Identity of the peer.
static int print_address(void *cls, const struct GNUNET_HELLO_Address *address, struct GNUNET_TIME_Absolute expiration)
Iterator callback to go over all addresses.
#define GNUNET_CONTAINER_DLL_insert(head, tail, element)
Insert an element at the head of a DLL.
Structure we use to collect printable address information.
static struct GNUNET_SCHEDULER_Task * tt
Main state machine task (if active).
#define GNUNET_NO
Definition: gnunet_common.h:78
const char * GNUNET_i2s_full(const struct GNUNET_PeerIdentity *pid)
Convert a peer identity to a string (for printing debug messages).
#define GNUNET_new(type)
Allocate a struct or union of the given type.
#define _(String)
GNU gettext support macro.
Definition: platform.h:181
static struct GNUNET_PEERINFO_IteratorContext * pic
Current iterator context (if active, otherwise NULL).
Record we keep for each printable address.
static void state_machine(void *cls)
Main state machine that goes over all options and runs the next requested function.
struct GNUNET_HELLO_Message * GNUNET_HELLO_iterate_addresses(const struct GNUNET_HELLO_Message *msg, int return_modified, GNUNET_HELLO_AddressIterator it, void *it_cls)
Iterate over all of the addresses in the HELLO.
Definition: hello.c:252
struct GNUNET_SCHEDULER_Task * GNUNET_SCHEDULER_add_now(GNUNET_SCHEDULER_TaskCallback task, void *task_cls)
Schedule a new task to be run as soon as possible.
Definition: scheduler.c:1264
static int count_address(void *cls, const struct GNUNET_HELLO_Address *address, struct GNUNET_TIME_Absolute expiration)
Iterator callback to go over all addresses and count them.
static struct PrintContext * pc_head
Head of list of print contexts.
struct GNUNET_TESTBED_Peer * peer
The peer associated with this model.
int GNUNET_HELLO_is_friend_only(const struct GNUNET_HELLO_Message *h)
Return HELLO type.
Definition: hello.c:87
static void dump_pc(struct PrintContext *pc)
Print the collected address information to the console and free pc.
static struct GNUNET_FS_PublishContext * pc
Handle to FS-publishing operation.
unsigned int off
Current offset in address_list (counted down).
static struct PrintContext * pc_tail
Tail of list of print contexts.
#define GNUNET_YES
Definition: gnunet_common.h:77
int friend_only
Hello was friend only, GNUNET_YES or GNUNET_NO.
struct AddressRecord * address_list
List of printable addresses.
unsigned int address_list_size
Number of addresses allocated in address_list.
#define GNUNET_malloc(size)
Wrapper around malloc.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ count_addr()

static int count_addr ( void *  cls,
const struct GNUNET_HELLO_Address address,
struct GNUNET_TIME_Absolute  expiration 
)
static

Count the number of addresses in the HELLO.

Parameters
clspointer to an int * used for the counter
addressan address to count
expiration(unused)
Returns
GNUNET_OK

Definition at line 420 of file gnunet-peerinfo.c.

References GNUNET_OK.

Referenced by dump_my_hello().

423 {
424  int *c = cls;
425 
426  (*c)++;
427  return GNUNET_OK;
428 }
#define GNUNET_OK
Named constants for return values.
Definition: gnunet_common.h:75
Here is the caller graph for this function:

◆ dump_my_hello()

static void dump_my_hello ( )
static

Write HELLO of my peer to a file.

Parameters
clsthe struct GetUriContext *
peeridentity of the peer (unused)
helloaddresses of the peer
err_msgerror message

Definition at line 440 of file gnunet-peerinfo.c.

References _, be_quiet, count_addr(), dump_hello, GNUNET_DISK_fn_write(), GNUNET_DISK_PERM_GROUP_READ, GNUNET_DISK_PERM_OTHER_READ, GNUNET_DISK_PERM_USER_READ, GNUNET_DISK_PERM_USER_WRITE, GNUNET_ERROR_TYPE_BULK, GNUNET_ERROR_TYPE_WARNING, GNUNET_free, GNUNET_HELLO_is_friend_only(), GNUNET_HELLO_iterate_addresses(), GNUNET_HELLO_size(), GNUNET_log_strerror_file, GNUNET_NO, GNUNET_SYSERR, GNUNET_YES, and size.

Referenced by hello_callback().

441 {
442  unsigned int size;
443  unsigned int c_addr;
444 
445  size = GNUNET_HELLO_size(my_hello);
446  if (0 == size)
447  {
448  fprintf(stderr, _("Failure: Received invalid %s\n"), "HELLO");
449  return;
450  }
452  my_hello,
453  size,
458  {
459  fprintf(stderr,
460  _("Failed to write HELLO with %u bytes to file `%s'\n"),
461  size,
462  dump_hello);
463  if (0 != unlink(dump_hello))
466  "unlink",
467  dump_hello);
468  }
469  c_addr = 0;
471 
472  if (!be_quiet)
473  {
474  fprintf(
475  stderr,
476  _("Wrote %s HELLO containing %u addresses with %u bytes to file `%s'\n"),
477  (GNUNET_YES == GNUNET_HELLO_is_friend_only(my_hello)) ? "friend-only"
478  : "public",
479  c_addr,
480  size,
481  dump_hello);
482  }
484  dump_hello = NULL;
485 }
static int be_quiet
Option &#39;-q&#39;.
#define GNUNET_NO
Definition: gnunet_common.h:78
static char * dump_hello
Option -d.
ssize_t GNUNET_DISK_fn_write(const char *fn, const void *buffer, size_t n, enum GNUNET_DISK_AccessPermissions mode)
Write a buffer to a file.
Definition: disk.c:877
#define _(String)
GNU gettext support macro.
Definition: platform.h:181
struct GNUNET_HELLO_Message * GNUNET_HELLO_iterate_addresses(const struct GNUNET_HELLO_Message *msg, int return_modified, GNUNET_HELLO_AddressIterator it, void *it_cls)
Iterate over all of the addresses in the HELLO.
Definition: hello.c:252
#define GNUNET_log_strerror_file(level, cmd, filename)
Log an error message at log-level &#39;level&#39; that indicates a failure of the command &#39;cmd&#39; with the mess...
static struct GNUNET_HELLO_Message * my_hello
Hello of this peer (if initialized).
#define GNUNET_SYSERR
Definition: gnunet_common.h:76
static unsigned int size
Size of the "table".
Definition: peer.c:66
int GNUNET_HELLO_is_friend_only(const struct GNUNET_HELLO_Message *h)
Return HELLO type.
Definition: hello.c:87
static int count_addr(void *cls, const struct GNUNET_HELLO_Address *address, struct GNUNET_TIME_Absolute expiration)
Count the number of addresses in the HELLO.
Everybody can read.
uint16_t GNUNET_HELLO_size(const struct GNUNET_HELLO_Message *hello)
Return the size of the given HELLO message.
Definition: hello.c:643
#define GNUNET_YES
Definition: gnunet_common.h:77
#define GNUNET_free(ptr)
Wrapper around free.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ print_my_uri()

static void print_my_uri ( void *  cls,
const struct GNUNET_PeerIdentity peer,
const struct GNUNET_HELLO_Message hello,
const char *  err_msg 
)
static

Print URI of the peer.

Parameters
clsthe struct GetUriContext *
peeridentity of the peer (unused)
helloaddresses of the peer
err_msgerror message

Definition at line 500 of file gnunet-peerinfo.c.

References _, GNUNET_free, GNUNET_HELLO_compose_uri(), GNUNET_SCHEDULER_add_now(), GPI_plugins_find(), state_machine(), and uri.

Referenced by state_machine().

504 {
505  char *uri;
506 
507  if (NULL == peer)
508  {
509  pic = NULL;
510  if (NULL != err_msg)
511  fprintf(stderr,
512  _("Error in communication with PEERINFO service: %s\n"),
513  err_msg);
515  return;
516  }
517 
518  if (NULL == hello)
519  return;
521  if (NULL != uri)
522  {
523  printf("%s\n", (const char *)uri);
524  GNUNET_free(uri);
525  }
526 }
char * GNUNET_HELLO_compose_uri(const struct GNUNET_HELLO_Message *hello, GNUNET_HELLO_TransportPluginsFind plugins_find)
Compose a hello URI string from a hello message.
Definition: hello.c:1020
static struct GNUNET_SCHEDULER_Task * tt
Main state machine task (if active).
#define _(String)
GNU gettext support macro.
Definition: platform.h:181
static struct GNUNET_FS_Uri * uri
Value of URI provided on command-line (when not publishing a file but just creating UBlocks to refer ...
static struct GNUNET_PEERINFO_IteratorContext * pic
Current iterator context (if active, otherwise NULL).
static void state_machine(void *cls)
Main state machine that goes over all options and runs the next requested function.
struct GNUNET_SCHEDULER_Task * GNUNET_SCHEDULER_add_now(GNUNET_SCHEDULER_TaskCallback task, void *task_cls)
Schedule a new task to be run as soon as possible.
Definition: scheduler.c:1264
struct GNUNET_TRANSPORT_PluginFunctions * GPI_plugins_find(const char *name)
Obtain the plugin API based on a plugin name.
#define GNUNET_free(ptr)
Wrapper around free.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ add_continuation()

static void add_continuation ( void *  cls)
static

Continuation called from GNUNET_PEERINFO_add_peer()

Parameters
clsclosure, NULL

Definition at line 538 of file gnunet-peerinfo.c.

References GNUNET_SCHEDULER_add_now(), and state_machine().

Referenced by parse_hello_uri().

539 {
540  ac = NULL;
542 }
static struct GNUNET_SCHEDULER_Task * tt
Main state machine task (if active).
static void state_machine(void *cls)
Main state machine that goes over all options and runs the next requested function.
struct GNUNET_SCHEDULER_Task * GNUNET_SCHEDULER_add_now(GNUNET_SCHEDULER_TaskCallback task, void *task_cls)
Schedule a new task to be run as soon as possible.
Definition: scheduler.c:1264
static struct GNUNET_MQ_Envelope * ac
Handle to current GNUNET_PEERINFO_add_peer() operation.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ parse_hello_uri()

static int parse_hello_uri ( const char *  put_uri)
static

Parse the PUT URI given at the command line and add it to our peerinfo database.

Parameters
put_uriURI string to parse
Returns
GNUNET_OK on success, GNUNET_SYSERR if the URI was invalid, GNUNET_NO on other errors

Definition at line 555 of file gnunet-peerinfo.c.

References add_continuation(), GNUNET_free, GNUNET_HELLO_parse_uri(), GNUNET_OK, GNUNET_PEERINFO_add_peer(), GNUNET_SCHEDULER_add_now(), GPI_plugins_find(), my_peer_identity, GNUNET_PeerIdentity::public_key, ret, and state_machine().

Referenced by state_machine().

556 {
557  struct GNUNET_HELLO_Message *hello = NULL;
558 
561  &hello,
563 
564  if (NULL != hello)
565  {
566  /* WARNING: this adds the address from URI WITHOUT verification! */
567  if (GNUNET_OK == ret)
569  else
571  GNUNET_free(hello);
572  }
573  return ret;
574 }
static void add_continuation(void *cls)
Continuation called from GNUNET_PEERINFO_add_peer()
A HELLO message is used to exchange information about transports with other peers.
static struct GNUNET_SCHEDULER_Task * tt
Main state machine task (if active).
#define GNUNET_OK
Named constants for return values.
Definition: gnunet_common.h:75
static int ret
Final status code.
Definition: gnunet-arm.c:89
static char * put_uri
Option.
static struct GNUNET_PEERINFO_Handle * peerinfo
Handle to peerinfo service.
static void state_machine(void *cls)
Main state machine that goes over all options and runs the next requested function.
int GNUNET_HELLO_parse_uri(const char *uri, struct GNUNET_CRYPTO_EddsaPublicKey *pubkey, struct GNUNET_HELLO_Message **hello, GNUNET_HELLO_TransportPluginsFind plugins_find)
Parse a hello URI string to a hello message.
Definition: hello.c:1205
struct GNUNET_SCHEDULER_Task * GNUNET_SCHEDULER_add_now(GNUNET_SCHEDULER_TaskCallback task, void *task_cls)
Schedule a new task to be run as soon as possible.
Definition: scheduler.c:1264
struct GNUNET_MQ_Envelope * GNUNET_PEERINFO_add_peer(struct GNUNET_PEERINFO_Handle *h, const struct GNUNET_HELLO_Message *hello, GNUNET_SCHEDULER_TaskCallback cont, void *cont_cls)
Add a host to the persistent list.
Definition: peerinfo_api.c:552
static struct GNUNET_MQ_Envelope * ac
Handle to current GNUNET_PEERINFO_add_peer() operation.
static struct GNUNET_PeerIdentity my_peer_identity
My peer identity.
struct GNUNET_TRANSPORT_PluginFunctions * GPI_plugins_find(const char *name)
Obtain the plugin API based on a plugin name.
#define GNUNET_free(ptr)
Wrapper around free.
struct GNUNET_CRYPTO_EddsaPublicKey public_key
Here is the call graph for this function:
Here is the caller graph for this function:

◆ shutdown_task()

static void shutdown_task ( void *  cls)
static

Main state machine that goes over all options and runs the next requested function.

Parameters
clsunused

Definition at line 587 of file gnunet-peerinfo.c.

References PrintContext::address_list, PrintContext::address_list_size, AddressRecord::atsc, GNUNET_CONTAINER_DLL_remove, GNUNET_free, GNUNET_free_non_null, GNUNET_MQ_send_cancel(), GNUNET_PEERINFO_disconnect(), GNUNET_PEERINFO_iterate_cancel(), GNUNET_SCHEDULER_cancel(), GNUNET_TRANSPORT_address_to_string_cancel(), GNUNET_TRANSPORT_hello_get_cancel(), GPI_plugins_unload(), AddressRecord::pc, and AddressRecord::result.

Referenced by run().

588 {
589  struct PrintContext *pc;
590  struct AddressRecord *ar;
591  unsigned int i;
592 
593  if (NULL != ac)
594  {
596  ac = NULL;
597  }
598  if (NULL != tt)
599  {
601  tt = NULL;
602  }
603  if (NULL != pic)
604  {
606  pic = NULL;
607  }
608  if (NULL != gh)
609  {
611  gh = NULL;
612  }
613  while (NULL != (pc = pc_head))
614  {
616  for (i = 0; i < pc->address_list_size; i++)
617  {
618  ar = &pc->address_list[i];
620  if (NULL != ar->atsc)
621  {
623  ar->atsc = NULL;
624  }
625  }
627  GNUNET_free(pc);
628  }
630  if (NULL != peerinfo)
631  {
633  peerinfo = NULL;
634  }
635  if (NULL != my_hello)
636  {
638  my_hello = NULL;
639  }
640 }
#define GNUNET_CONTAINER_DLL_remove(head, tail, element)
Remove an element from a DLL.
Structure we use to collect printable address information.
static struct GNUNET_SCHEDULER_Task * tt
Main state machine task (if active).
#define GNUNET_free_non_null(ptr)
Free the memory pointed to by ptr if ptr is not NULL.
static struct GNUNET_PEERINFO_Handle * peerinfo
Handle to peerinfo service.
static struct GNUNET_PEERINFO_IteratorContext * pic
Current iterator context (if active, otherwise NULL).
void GNUNET_PEERINFO_iterate_cancel(struct GNUNET_PEERINFO_IteratorContext *ic)
Cancel an iteration over peer information.
Definition: peerinfo_api.c:519
Record we keep for each printable address.
void GNUNET_TRANSPORT_address_to_string_cancel(struct GNUNET_TRANSPORT_AddressToStringContext *alc)
Cancel request for address conversion.
static struct PrintContext * pc_head
Head of list of print contexts.
void GPI_plugins_unload()
Unload all plugins.
static struct GNUNET_HELLO_Message * my_hello
Hello of this peer (if initialized).
static struct GNUNET_MQ_Envelope * ac
Handle to current GNUNET_PEERINFO_add_peer() operation.
struct GNUNET_TRANSPORT_AddressToStringContext * atsc
Current address-to-string context (if active, otherwise NULL).
char * result
Printable address.
static struct GNUNET_FS_PublishContext * pc
Handle to FS-publishing operation.
static struct PrintContext * pc_tail
Tail of list of print contexts.
static struct GNUNET_TRANSPORT_HelloGetHandle * gh
Pending GNUNET_TRANSPORT_hello_get() operation.
void GNUNET_PEERINFO_disconnect(struct GNUNET_PEERINFO_Handle *h)
Disconnect from the peerinfo service.
Definition: peerinfo_api.c:154
struct AddressRecord * address_list
List of printable addresses.
unsigned int address_list_size
Number of addresses allocated in address_list.
void GNUNET_MQ_send_cancel(struct GNUNET_MQ_Envelope *ev)
Cancel sending the message.
Definition: mq.c:913
void GNUNET_TRANSPORT_hello_get_cancel(struct GNUNET_TRANSPORT_HelloGetHandle *ghh)
Stop receiving updates about changes to our HELLO message.
#define GNUNET_free(ptr)
Wrapper around free.
void * GNUNET_SCHEDULER_cancel(struct GNUNET_SCHEDULER_Task *task)
Cancel the task with the specified identifier.
Definition: scheduler.c:956
Here is the call graph for this function:
Here is the caller graph for this function:

◆ hello_callback()

static void hello_callback ( void *  cls,
const struct GNUNET_MessageHeader hello 
)
static

Function called with our peer's HELLO message.

Used to obtain our peer's public key.

Parameters
clsNULL
hellothe HELLO message

Definition at line 651 of file gnunet-peerinfo.c.

References dump_hello, dump_my_hello(), GNUNET_assert, GNUNET_copy_message(), GNUNET_HELLO_get_id(), GNUNET_OK, GNUNET_SCHEDULER_add_now(), GNUNET_SCHEDULER_shutdown(), GNUNET_TRANSPORT_hello_get_cancel(), my_peer_identity, and state_machine().

Referenced by run().

652 {
653  if (NULL == hello)
654  {
655  fprintf(stderr, "Failed to get my own HELLO from this peer!\n");
657  return;
658  }
663  gh = NULL;
664  if (NULL != dump_hello)
665  dump_my_hello();
667 }
int GNUNET_HELLO_get_id(const struct GNUNET_HELLO_Message *hello, struct GNUNET_PeerIdentity *peer)
Get the peer identity from a HELLO message.
Definition: hello.c:662
A HELLO message is used to exchange information about transports with other peers.
#define GNUNET_assert(cond)
Use this for fatal errors that cannot be handled.
static struct GNUNET_SCHEDULER_Task * tt
Main state machine task (if active).
#define GNUNET_OK
Named constants for return values.
Definition: gnunet_common.h:75
void GNUNET_SCHEDULER_shutdown(void)
Request the shutdown of a scheduler.
Definition: scheduler.c:517
static char * dump_hello
Option -d.
static void state_machine(void *cls)
Main state machine that goes over all options and runs the next requested function.
struct GNUNET_SCHEDULER_Task * GNUNET_SCHEDULER_add_now(GNUNET_SCHEDULER_TaskCallback task, void *task_cls)
Schedule a new task to be run as soon as possible.
Definition: scheduler.c:1264
static struct GNUNET_HELLO_Message * my_hello
Hello of this peer (if initialized).
static struct GNUNET_PeerIdentity my_peer_identity
My peer identity.
static struct GNUNET_TRANSPORT_HelloGetHandle * gh
Pending GNUNET_TRANSPORT_hello_get() operation.
static void dump_my_hello()
Write HELLO of my peer to a file.
void GNUNET_TRANSPORT_hello_get_cancel(struct GNUNET_TRANSPORT_HelloGetHandle *ghh)
Stop receiving updates about changes to our HELLO message.
struct GNUNET_MessageHeader * GNUNET_copy_message(const struct GNUNET_MessageHeader *msg)
Create a copy of the given message.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ run()

static void run ( void *  cls,
char *const *  args,
const char *  cfgfile,
const struct GNUNET_CONFIGURATION_Handle c 
)
static

Main function that will be run by the scheduler.

Parameters
clsclosure
argsremaining command-line arguments
cfgfilename of the configuration file used (for saving, can be NULL!)
cconfiguration

Definition at line 679 of file gnunet-peerinfo.c.

References _, dump_hello, get_self, get_uri, GNUNET_PEERINFO_connect(), GNUNET_SCHEDULER_add_now(), GNUNET_SCHEDULER_add_shutdown(), GNUNET_strdup, GNUNET_TRANSPORT_AC_ANY, GNUNET_TRANSPORT_hello_get(), GNUNET_YES, hello_callback(), put_uri, shutdown_task(), and state_machine().

Referenced by main().

683 {
684  cfg = c;
685  if ((NULL != args[0]) && (NULL == put_uri) &&
686  (args[0] == strcasestr(args[0], "gnunet://hello/")))
687  {
688  put_uri = GNUNET_strdup(args[0]);
689  args++;
690  }
691  if (NULL != args[0])
692  {
693  fprintf(stderr, _("Invalid command line argument `%s'\n"), args[0]);
694  return;
695  }
696  if (NULL == (peerinfo = GNUNET_PEERINFO_connect(cfg)))
697  {
698  fprintf(stderr, "%s", "Could not access PEERINFO service. Exiting.\n");
699  return;
700  }
701  if ((GNUNET_YES == get_self) || (GNUNET_YES == get_uri) ||
702  (NULL != dump_hello))
703  {
707  NULL);
708  }
709  else
710  {
712  }
714 }
static void shutdown_task(void *cls)
Main state machine that goes over all options and runs the next requested function.
struct GNUNET_PEERINFO_Handle * GNUNET_PEERINFO_connect(const struct GNUNET_CONFIGURATION_Handle *cfg)
Connect to the peerinfo service.
Definition: peerinfo_api.c:128
struct GNUNET_SCHEDULER_Task * GNUNET_SCHEDULER_add_shutdown(GNUNET_SCHEDULER_TaskCallback task, void *task_cls)
Schedule a new task to be run on shutdown, that is when a CTRL-C signal is received, or when GNUNET_SCHEDULER_shutdown() is being invoked.
Definition: scheduler.c:1284
static const struct GNUNET_CONFIGURATION_Handle * cfg
Configuration handle.
static struct GNUNET_SCHEDULER_Task * tt
Main state machine task (if active).
#define GNUNET_strdup(a)
Wrapper around GNUNET_xstrdup_.
static char * put_uri
Option.
static char * dump_hello
Option -d.
#define _(String)
GNU gettext support macro.
Definition: platform.h:181
static int get_uri
Option.
static struct GNUNET_PEERINFO_Handle * peerinfo
Handle to peerinfo service.
static void state_machine(void *cls)
Main state machine that goes over all options and runs the next requested function.
struct GNUNET_SCHEDULER_Task * GNUNET_SCHEDULER_add_now(GNUNET_SCHEDULER_TaskCallback task, void *task_cls)
Schedule a new task to be run as soon as possible.
Definition: scheduler.c:1264
static void hello_callback(void *cls, const struct GNUNET_MessageHeader *hello)
Function called with our peer&#39;s HELLO message.
static int get_self
Option &#39;-s&#39;.
struct GNUNET_TRANSPORT_HelloGetHandle * GNUNET_TRANSPORT_hello_get(const struct GNUNET_CONFIGURATION_Handle *cfg, enum GNUNET_TRANSPORT_AddressClass ac, GNUNET_TRANSPORT_HelloUpdateCallback rec, void *rec_cls)
Obtain updates on changes to the HELLO message for this peer.
static struct GNUNET_TRANSPORT_HelloGetHandle * gh
Pending GNUNET_TRANSPORT_hello_get() operation.
#define GNUNET_YES
Definition: gnunet_common.h:77
Here is the call graph for this function:
Here is the caller graph for this function:

◆ main()

int main ( int  argc,
char *const *  argv 
)

The main function to obtain peer information.

Parameters
argcnumber of arguments from the command line
argvcommand line arguments
Returns
0 ok, 1 on error

Definition at line 791 of file gnunet-peerinfo.c.

References be_quiet, default_operation, dump_hello, get_info, get_self, get_uri, gettext_noop, GNUNET_free, GNUNET_GETOPT_OPTION_END, GNUNET_GETOPT_option_flag(), GNUNET_GETOPT_option_string(), GNUNET_OK, GNUNET_PROGRAM_run(), GNUNET_STRINGS_get_utf8_args(), GNUNET_YES, include_friend_only, no_resolve, put_uri, ret, and run().

792 {
795  "numeric",
796  gettext_noop("don't resolve host names"),
797  &no_resolve),
798 
800  "quiet",
801  gettext_noop(
802  "output only the identity strings"),
803  &be_quiet),
805  "friends",
806  gettext_noop(
807  "include friend-only information"),
809 
811  "self",
812  gettext_noop("output our own identity only"),
813  &get_self),
814 
816  "info",
817  gettext_noop("list all known peers"),
818  &get_info),
819 
821  "dump-hello",
822  NULL,
823  gettext_noop("dump hello to file"),
824  &dump_hello),
825 
827  "get-hello",
828  gettext_noop("also output HELLO uri(s)"),
829  &get_uri),
830 
832  "put-hello",
833  "HELLO",
834  gettext_noop(
835  "add given HELLO uri to the database"),
836  &put_uri),
837 
839  int ret;
840 
842  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args(argc, argv, &argc, &argv))
843  return 2;
844 
845  ret = (GNUNET_OK ==
846  GNUNET_PROGRAM_run(argc,
847  argv,
848  "gnunet-peerinfo",
849  gettext_noop("Print information about peers."),
850  options,
851  &run,
852  NULL))
853  ? 0
854  : 1;
855  GNUNET_free((void *)argv);
856  return ret;
857 }
static int default_operation
Option.
static int be_quiet
Option &#39;-q&#39;.
struct GNUNET_GETOPT_CommandLineOption options[]
Definition: 002.c:5
int GNUNET_STRINGS_get_utf8_args(int argc, char *const *argv, int *u8argc, char *const **u8argv)
Returns utf-8 encoded arguments.
Definition: strings.c:1439
static void run(void *cls, char *const *args, const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *c)
Main function that will be run by the scheduler.
static int include_friend_only
Option &#39;-f&#39;.
#define GNUNET_OK
Named constants for return values.
Definition: gnunet_common.h:75
Definition of a command line option.
static int ret
Final status code.
Definition: gnunet-arm.c:89
static char * put_uri
Option.
static char * dump_hello
Option -d.
struct GNUNET_GETOPT_CommandLineOption GNUNET_GETOPT_OPTION_END
Definition: 002.c:13
struct GNUNET_GETOPT_CommandLineOption GNUNET_GETOPT_option_string(char shortName, const char *name, const char *argumentHelp, const char *description, char **str)
Allow user to specify a string.
static int get_uri
Option.
static int no_resolve
Option &#39;-n&#39;.
static int get_self
Option &#39;-s&#39;.
struct GNUNET_GETOPT_CommandLineOption GNUNET_GETOPT_option_flag(char shortName, const char *name, const char *description, int *val)
Allow user to specify a flag (which internally means setting an integer to 1/GNUNET_YES/GNUNET_OK.
int GNUNET_PROGRAM_run(int argc, char *const *argv, const char *binaryName, const char *binaryHelp, const struct GNUNET_GETOPT_CommandLineOption *options, GNUNET_PROGRAM_Main task, void *task_cls)
Run a standard GNUnet command startup sequence (initialize loggers and configuration, parse options).
Definition: program.c:367
#define GNUNET_YES
Definition: gnunet_common.h:77
static int get_info
Option &#39;-i&#39;.
#define GNUNET_free(ptr)
Wrapper around free.
#define gettext_noop(String)
Definition: gettext.h:69
Here is the call graph for this function:

Variable Documentation

◆ no_resolve

int no_resolve
static

Option '-n'.

Definition at line 120 of file gnunet-peerinfo.c.

Referenced by main(), and print_address().

◆ be_quiet

int be_quiet
static

Option '-q'.

Definition at line 125 of file gnunet-peerinfo.c.

Referenced by dump_my_hello(), main(), print_peer_info(), and state_machine().

◆ include_friend_only

int include_friend_only
static

Option '-f'.

Definition at line 130 of file gnunet-peerinfo.c.

Referenced by main(), peerinfo_get(), and state_machine().

◆ get_self

int get_self
static

Option '-s'.

Definition at line 135 of file gnunet-peerinfo.c.

Referenced by main(), run(), and state_machine().

◆ get_uri

int get_uri
static

Option.

Definition at line 140 of file gnunet-peerinfo.c.

Referenced by main(), run(), and state_machine().

◆ default_operation

int default_operation
static

Option.

Definition at line 145 of file gnunet-peerinfo.c.

Referenced by main(), and state_machine().

◆ get_info

int get_info
static

Option '-i'.

Definition at line 150 of file gnunet-peerinfo.c.

Referenced by main(), and state_machine().

◆ put_uri

char* put_uri
static

Option.

Definition at line 155 of file gnunet-peerinfo.c.

Referenced by main(), run(), and state_machine().

◆ dump_hello

char* dump_hello
static

Option -d.

Definition at line 160 of file gnunet-peerinfo.c.

Referenced by dump_my_hello(), hello_callback(), main(), and run().

◆ peerinfo

struct GNUNET_PEERINFO_Handle* peerinfo
static

Handle to peerinfo service.

Definition at line 165 of file gnunet-peerinfo.c.

◆ cfg

const struct GNUNET_CONFIGURATION_Handle* cfg
static

Configuration handle.

Definition at line 170 of file gnunet-peerinfo.c.

◆ tt

struct GNUNET_SCHEDULER_Task* tt
static

Main state machine task (if active).

Definition at line 175 of file gnunet-peerinfo.c.

◆ gh

◆ pic

struct GNUNET_PEERINFO_IteratorContext* pic
static

Current iterator context (if active, otherwise NULL).

Definition at line 185 of file gnunet-peerinfo.c.

◆ my_peer_identity

struct GNUNET_PeerIdentity my_peer_identity
static

My peer identity.

Definition at line 190 of file gnunet-peerinfo.c.

Referenced by hello_callback(), parse_hello_uri(), and state_machine().

◆ pc_head

struct PrintContext* pc_head
static

Head of list of print contexts.

Definition at line 195 of file gnunet-peerinfo.c.

◆ pc_tail

struct PrintContext* pc_tail
static

Tail of list of print contexts.

Definition at line 200 of file gnunet-peerinfo.c.

◆ ac

struct GNUNET_MQ_Envelope* ac
static

◆ my_hello

struct GNUNET_HELLO_Message* my_hello
static

Hello of this peer (if initialized).

Definition at line 210 of file gnunet-peerinfo.c.