GNUnet  0.11.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 727 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().

728 {
729  tt = NULL;
730 
731  if (NULL != put_uri)
732  {
735  {
736  fprintf (stderr, _ ("Invalid URI `%s'\n"), put_uri);
738  }
740  put_uri = NULL;
741  }
742  else if (GNUNET_YES == get_info)
743  {
748  NULL,
750  NULL);
751  }
752  else if (GNUNET_YES == get_self)
753  {
755  if (be_quiet)
756  printf ("%s\n", GNUNET_i2s_full (&my_peer_identity));
757  else
758  printf (_ ("I am peer `%s'.\n"), GNUNET_i2s_full (&my_peer_identity));
760  }
761  else if (GNUNET_YES == get_uri)
762  {
767  &print_my_uri,
768  NULL);
769  get_uri = GNUNET_NO;
770  }
771  else if (GNUNET_YES == default_operation)
772  {
773  /* default operation list all */
777  }
778  else
779  {
781  }
783 }
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:526
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:487
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:1280
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 233 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().

234 {
235  unsigned int i;
236 
237  printf (_ ("%sPeer `%s'\n"),
238  (GNUNET_YES == pc->friend_only) ? "F2F: " : "",
239  GNUNET_i2s_full (&pc->peer));
240  for (i = 0; i < pc->num_addresses; i++)
241  {
242  if (NULL != pc->address_list[i].result)
243  {
244  printf (_ ("\tExpires: %s \t %s\n"),
246  pc->address_list[i].expiration),
247  pc->address_list[i].result);
249  }
250  }
251  printf ("\n");
254  GNUNET_free (pc);
255  if ((NULL == pc_head) && (NULL == pic))
257 }
#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:1280
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:742
#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 274 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().

275 {
276  struct AddressRecord *ar = cls;
277  struct PrintContext *pc = ar->pc;
278 
279  if (NULL != address)
280  {
281  if (0 != strlen (address))
282  {
283  if (NULL != ar->result)
284  GNUNET_free (ar->result);
285  ar->result = GNUNET_strdup (address);
286  }
287  return;
288  }
289  ar->atsc = NULL;
290  if (GNUNET_SYSERR == res)
292  _ ("Failure: Cannot convert address to string for peer `%s'\n"),
293  GNUNET_i2s (&ar->pc->peer));
294  pc->num_addresses++;
295  if (pc->num_addresses == pc->address_list_size)
296  dump_pc (pc);
297 }
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 309 of file gnunet-peerinfo.c.

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

Referenced by print_peer_info().

312 {
313  struct PrintContext *pc = cls;
314 
315  pc->off++;
316  return GNUNET_OK;
317 }
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 329 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().

332 {
333  struct PrintContext *pc = cls;
334  struct AddressRecord *ar;
335 
336  GNUNET_assert (0 < pc->off);
337  ar = &pc->address_list[--pc->off];
338  ar->pc = pc;
339  ar->expiration = expiration;
340  GNUNET_asprintf (&ar->result,
341  "%s:%u:%u",
342  address->transport_name,
343  address->address_length,
344  address->local_info);
346  address,
347  no_resolve,
348  TIMEOUT,
350  ar);
351  return GNUNET_OK;
352 }
size_t address_length
Number of bytes in address.
enum GNUNET_HELLO_AddressInfo local_info
Extended information about address.
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.
static char * expiration
Credential TTL.
Definition: gnunet-abd.c:96
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 365 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().

369 {
370  struct PrintContext *pc;
371  int friend_only;
372 
373  if (NULL == peer)
374  {
375  pic = NULL; /* end of iteration */
376  if (NULL != err_msg)
377  {
378  fprintf (stderr,
379  _ ("Error in communication with PEERINFO service: %s\n"),
380  err_msg);
381  }
382  if (NULL == pc_head)
384  return;
385  }
386  friend_only = GNUNET_NO;
387  if (NULL != hello)
388  friend_only = GNUNET_HELLO_is_friend_only (hello);
389  if ((GNUNET_YES == be_quiet) || (NULL == hello))
390  {
391  printf ("%s%s\n",
392  (GNUNET_YES == friend_only) ? "F2F: " : "",
393  GNUNET_i2s_full (peer));
394  return;
395  }
396  pc = GNUNET_new (struct PrintContext);
398  pc->peer = *peer;
399  pc->friend_only = friend_only;
401  if (0 == pc->off)
402  {
403  dump_pc (pc);
404  return;
405  }
406  pc->address_list_size = pc->off;
407  pc->address_list = GNUNET_malloc (sizeof(struct AddressRecord) * pc->off);
409 }
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:254
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:1280
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:89
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 423 of file gnunet-peerinfo.c.

References GNUNET_OK.

Referenced by dump_my_hello().

426 {
427  int *c = cls;
428 
429  (*c)++;
430  return GNUNET_OK;
431 }
#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 443 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().

444 {
445  unsigned int size;
446  unsigned int c_addr;
447 
448  size = GNUNET_HELLO_size (my_hello);
449  if (0 == size)
450  {
451  fprintf (stderr, _ ("Failure: Received invalid %s\n"), "HELLO");
452  return;
453  }
455  my_hello,
456  size,
461  {
462  fprintf (stderr,
463  _ ("Failed to write HELLO with %u bytes to file `%s'\n"),
464  size,
465  dump_hello);
466  if (0 != unlink (dump_hello))
469  "unlink",
470  dump_hello);
471  }
472  c_addr = 0;
474 
475  if (! be_quiet)
476  {
477  fprintf (
478  stderr,
479  _ ("Wrote %s HELLO containing %u addresses with %u bytes to file `%s'\n"),
480  (GNUNET_YES == GNUNET_HELLO_is_friend_only (my_hello)) ? "friend-only"
481  : "public",
482  c_addr,
483  size,
484  dump_hello);
485  }
487  dump_hello = NULL;
488 }
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:880
#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:254
#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:67
int GNUNET_HELLO_is_friend_only(const struct GNUNET_HELLO_Message *h)
Return HELLO type.
Definition: hello.c:89
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:652
#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 503 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().

507 {
508  char *uri;
509 
510  if (NULL == peer)
511  {
512  pic = NULL;
513  if (NULL != err_msg)
514  fprintf (stderr,
515  _ ("Error in communication with PEERINFO service: %s\n"),
516  err_msg);
518  return;
519  }
520 
521  if (NULL == hello)
522  return;
524  if (NULL != uri)
525  {
526  printf ("%s\n", (const char *) uri);
527  GNUNET_free (uri);
528  }
529 }
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:1029
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:1280
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 541 of file gnunet-peerinfo.c.

References GNUNET_SCHEDULER_add_now(), and state_machine().

Referenced by parse_hello_uri().

542 {
543  ac = NULL;
545 }
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:1280
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 558 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().

559 {
560  struct GNUNET_HELLO_Message *hello = NULL;
561 
564  &hello,
566 
567  if (NULL != hello)
568  {
569  /* WARNING: this adds the address from URI WITHOUT verification! */
570  if (GNUNET_OK == ret)
572  else
574  GNUNET_free (hello);
575  }
576  return ret;
577 }
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 int ret
Return value of the commandline.
Definition: gnunet-abd.c:81
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 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:1217
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:1280
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:553
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 590 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().

591 {
592  struct PrintContext *pc;
593  struct AddressRecord *ar;
594  unsigned int i;
595 
596  if (NULL != ac)
597  {
599  ac = NULL;
600  }
601  if (NULL != tt)
602  {
604  tt = NULL;
605  }
606  if (NULL != pic)
607  {
609  pic = NULL;
610  }
611  if (NULL != gh)
612  {
614  gh = NULL;
615  }
616  while (NULL != (pc = pc_head))
617  {
619  for (i = 0; i < pc->address_list_size; i++)
620  {
621  ar = &pc->address_list[i];
623  if (NULL != ar->atsc)
624  {
626  ar->atsc = NULL;
627  }
628  }
630  GNUNET_free (pc);
631  }
633  if (NULL != peerinfo)
634  {
636  peerinfo = NULL;
637  }
638  if (NULL != my_hello)
639  {
641  my_hello = NULL;
642  }
643 }
#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:520
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:156
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:916
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:966
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 654 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().

655 {
656  if (NULL == hello)
657  {
658  fprintf (stderr, "Failed to get my own HELLO from this peer!\n");
660  return;
661  }
666  gh = NULL;
667  if (NULL != dump_hello)
668  dump_my_hello ();
670 }
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:671
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:526
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:1280
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 682 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().

686 {
687  cfg = c;
688  if ((NULL != args[0]) && (NULL == put_uri) &&
689  (args[0] == strcasestr (args[0], "gnunet://hello/")))
690  {
691  put_uri = GNUNET_strdup (args[0]);
692  args++;
693  }
694  if (NULL != args[0])
695  {
696  fprintf (stderr, _ ("Invalid command line argument `%s'\n"), args[0]);
697  return;
698  }
699  if (NULL == (peerinfo = GNUNET_PEERINFO_connect (cfg)))
700  {
701  fprintf (stderr, "%s", "Could not access PEERINFO service. Exiting.\n");
702  return;
703  }
704  if ((GNUNET_YES == get_self) || (GNUNET_YES == get_uri) ||
705  (NULL != dump_hello))
706  {
710  NULL);
711  }
712  else
713  {
715  }
717 }
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:130
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:1300
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:1280
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 794 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().

795 {
798  "numeric",
799  gettext_noop ("don't resolve host names"),
800  &no_resolve),
801 
803  "quiet",
804  gettext_noop (
805  "output only the identity strings"),
806  &be_quiet),
808  "friends",
809  gettext_noop (
810  "include friend-only information"),
812 
814  "self",
815  gettext_noop ("output our own identity only"),
816  &get_self),
817 
819  "info",
820  gettext_noop ("list all known peers"),
821  &get_info),
822 
824  "dump-hello",
825  NULL,
826  gettext_noop ("dump hello to file"),
827  &dump_hello),
828 
830  "get-hello",
831  gettext_noop ("also output HELLO uri(s)"),
832  &get_uri),
833 
835  "put-hello",
836  "HELLO",
837  gettext_noop (
838  "add given HELLO uri to the database"),
839  &put_uri),
840 
842  int ret;
843 
845  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
846  return 2;
847 
848  ret = (GNUNET_OK ==
849  GNUNET_PROGRAM_run (argc,
850  argv,
851  "gnunet-peerinfo",
852  gettext_noop ("Print information about peers."),
853  options,
854  &run,
855  NULL))
856  ? 0
857  : 1;
858  GNUNET_free ((void *) argv);
859  return ret;
860 }
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:1438
static int ret
Return value of the commandline.
Definition: gnunet-abd.c:81
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 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 122 of file gnunet-peerinfo.c.

Referenced by main(), and print_address().

◆ be_quiet

int be_quiet
static

Option '-q'.

Definition at line 127 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 132 of file gnunet-peerinfo.c.

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

◆ get_self

int get_self
static

Option '-s'.

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

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

◆ get_uri

int get_uri
static

Option.

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

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

◆ default_operation

int default_operation
static

Option.

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

Referenced by main(), and state_machine().

◆ get_info

int get_info
static

Option '-i'.

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

Referenced by main(), and state_machine().

◆ put_uri

char* put_uri
static

Option.

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

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

◆ dump_hello

char* dump_hello
static

Option -d.

Definition at line 162 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 167 of file gnunet-peerinfo.c.

◆ cfg

const struct GNUNET_CONFIGURATION_Handle* cfg
static

Configuration handle.

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

◆ tt

struct GNUNET_SCHEDULER_Task* tt
static

Main state machine task (if active).

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

◆ gh

◆ pic

struct GNUNET_PEERINFO_IteratorContext* pic
static

Current iterator context (if active, otherwise NULL).

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

◆ my_peer_identity

struct GNUNET_PeerIdentity my_peer_identity
static

My peer identity.

Definition at line 192 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 197 of file gnunet-peerinfo.c.

◆ pc_tail

struct PrintContext* pc_tail
static

Tail of list of print contexts.

Definition at line 202 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 212 of file gnunet-peerinfo.c.