GNUnet  last
Statistics service

Track statistics or provide access to statistics. More...

Collaboration diagram for Statistics service:

Macros

#define GNUNET_STATISTICS_VERSION   0x00000000
 Version of the statistics API. More...
 

Typedefs

typedef int(* GNUNET_STATISTICS_Iterator) (void *cls, const char *subsystem, const char *name, uint64_t value, int is_persistent)
 Callback function to process statistic values. More...
 
typedef void(* GNUNET_STATISTICS_Callback) (void *cls, int success)
 Continuation called by GNUNET_STATISTICS_get() functions. More...
 

Functions

struct GNUNET_STATISTICS_HandleGNUNET_STATISTICS_create (const char *subsystem, const struct GNUNET_CONFIGURATION_Handle *cfg)
 Get handle for the statistics service. More...
 
void GNUNET_STATISTICS_destroy (struct GNUNET_STATISTICS_Handle *h, int sync_first)
 Destroy a handle (free all state associated with it). More...
 
int GNUNET_STATISTICS_watch (struct GNUNET_STATISTICS_Handle *handle, const char *subsystem, const char *name, GNUNET_STATISTICS_Iterator proc, void *proc_cls)
 Watch statistics from the peer (be notified whenever they change). More...
 
int GNUNET_STATISTICS_watch_cancel (struct GNUNET_STATISTICS_Handle *handle, const char *subsystem, const char *name, GNUNET_STATISTICS_Iterator proc, void *proc_cls)
 Stop watching statistics from the peer. More...
 
struct GNUNET_STATISTICS_GetHandleGNUNET_STATISTICS_get (struct GNUNET_STATISTICS_Handle *handle, const char *subsystem, const char *name, GNUNET_STATISTICS_Callback cont, GNUNET_STATISTICS_Iterator proc, void *cls)
 Get statistic from the peer. More...
 
void GNUNET_STATISTICS_get_cancel (struct GNUNET_STATISTICS_GetHandle *gh)
 Cancel a GNUNET_STATISTICS_get request. More...
 
void GNUNET_STATISTICS_set (struct GNUNET_STATISTICS_Handle *handle, const char *name, uint64_t value, int make_persistent)
 Set statistic value for the peer. More...
 
void GNUNET_STATISTICS_update (struct GNUNET_STATISTICS_Handle *handle, const char *name, int64_t delta, int make_persistent)
 Set statistic value for the peer. More...
 

Detailed Description

Track statistics or provide access to statistics.

Create, modify and access statistics about the operation of GNUnet.

All statistical values must be of type unsigned long long.

See also
Documentation

Macro Definition Documentation

◆ GNUNET_STATISTICS_VERSION

#define GNUNET_STATISTICS_VERSION   0x00000000

Version of the statistics API.

Definition at line 59 of file gnunet_statistics_service.h.

Typedef Documentation

◆ GNUNET_STATISTICS_Iterator

typedef int(* GNUNET_STATISTICS_Iterator) (void *cls, const char *subsystem, const char *name, uint64_t value, int is_persistent)

Callback function to process statistic values.

Parameters
clsclosure
subsystemname of subsystem that created the statistic
namethe name of the datum
valuethe current value
is_persistentGNUNET_YES if the value is persistent, GNUNET_NO if not
Returns
GNUNET_OK to continue, GNUNET_SYSERR to abort iteration

Definition at line 76 of file gnunet_statistics_service.h.

◆ GNUNET_STATISTICS_Callback

typedef void(* GNUNET_STATISTICS_Callback) (void *cls, int success)

Continuation called by GNUNET_STATISTICS_get() functions.

Parameters
clsclosure
successGNUNET_OK if statistics were successfully obtained, GNUNET_SYSERR if not.

Definition at line 151 of file gnunet_statistics_service.h.

Function Documentation

◆ GNUNET_STATISTICS_create()

struct GNUNET_STATISTICS_Handle* GNUNET_STATISTICS_create ( const char *  subsystem,
const struct GNUNET_CONFIGURATION_Handle cfg 
)

Get handle for the statistics service.

Parameters
subsystemname of subsystem using the service
cfgservices configuration in use
Returns
handle to use

Definition at line 889 of file statistics_api.c.

891 {
892  struct GNUNET_STATISTICS_Handle *h;
893 
894  if (GNUNET_YES ==
896  "statistics",
897  "DISABLE"))
898  return NULL;
900  h->cfg = cfg;
901  h->subsystem = GNUNET_strdup (subsystem);
902  h->backoff = GNUNET_TIME_UNIT_MILLISECONDS;
903  return h;
904 }
static struct GNUNET_ARM_Handle * h
Connection with ARM.
Definition: gnunet-arm.c:99
static struct GNUNET_CONFIGURATION_Handle * cfg
Our configuration.
Definition: gnunet-arm.c:109
static char * subsystem
Set to subsystem that we're going to get stats for (or NULL for all).
enum GNUNET_GenericReturnValue GNUNET_CONFIGURATION_get_value_yesno(const struct GNUNET_CONFIGURATION_Handle *cfg, const char *section, const char *option)
Get a configuration value that should be in a set of "YES" or "NO".
@ GNUNET_YES
#define GNUNET_strdup(a)
Wrapper around GNUNET_xstrdup_.
#define GNUNET_new(type)
Allocate a struct or union of the given type.
#define GNUNET_TIME_UNIT_MILLISECONDS
One millisecond.
const struct GNUNET_CONFIGURATION_Handle * cfg
The configuration that we are using.
Definition: arm_api.c:112
Handle for the service.

References cfg, GNUNET_ARM_Handle::cfg, GNUNET_CONFIGURATION_get_value_yesno(), GNUNET_new, GNUNET_strdup, GNUNET_TIME_UNIT_MILLISECONDS, GNUNET_YES, h, and subsystem.

Referenced by GNUNET_DATACACHE_create(), GNUNET_DATASTORE_connect(), init_socket(), main_task(), RECLAIM_TICKETS_init(), run(), stat_connect_adapter(), and stats_ca().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GNUNET_STATISTICS_destroy()

void GNUNET_STATISTICS_destroy ( struct GNUNET_STATISTICS_Handle h,
int  sync_first 
)

Destroy a handle (free all state associated with it).

Parameters
hstatistics handle to destroy
sync_firstset to GNUNET_YES if pending SET requests should be completed

Definition at line 916 of file statistics_api.c.

918 {
919  struct GNUNET_STATISTICS_GetHandle *pos;
921 
922  if (NULL == h)
923  return;
924  GNUNET_assert (GNUNET_NO == h->do_destroy); /* Don't call twice. */
925  if ((sync_first) &&
926  (NULL != h->mq) &&
927  (0 != GNUNET_MQ_get_length (h->mq)))
928  {
929  if ((NULL != h->current) &&
930  (ACTION_GET == h->current->type))
931  h->current->aborted = GNUNET_YES;
932  next = h->action_head;
933  while (NULL != (pos = next))
934  {
935  next = pos->next;
936  if ((ACTION_GET == pos->type) ||
937  (ACTION_WATCH == pos->type))
938  {
939  GNUNET_CONTAINER_DLL_remove (h->action_head,
940  h->action_tail,
941  pos);
942  free_action_item (pos);
943  }
944  }
945  h->do_destroy = GNUNET_YES;
946  schedule_action (h);
947  GNUNET_assert (NULL == h->destroy_task);
948  h->destroy_task
950  5),
951  &do_destroy,
952  h);
954  "Deferring destruction\n");
955  return; /* do not finish destruction just yet */
956  }
957  /* do clean up all */
959  "Cleaning all up\n");
960  while (NULL != (pos = h->action_head))
961  {
962  GNUNET_CONTAINER_DLL_remove (h->action_head,
963  h->action_tail,
964  pos);
965  free_action_item (pos);
966  }
967  do_disconnect (h);
968  if (NULL != h->backoff_task)
969  {
970  GNUNET_SCHEDULER_cancel (h->backoff_task);
971  h->backoff_task = NULL;
972  }
973  if (NULL != h->destroy_task)
974  {
975  GNUNET_break (0);
976  GNUNET_SCHEDULER_cancel (h->destroy_task);
977  h->destroy_task = NULL;
978  }
979  for (unsigned int i = 0; i < h->watches_size; i++)
980  {
981  if (NULL == h->watches[i])
982  continue;
983  GNUNET_free (h->watches[i]->subsystem);
984  GNUNET_free (h->watches[i]->name);
985  GNUNET_free (h->watches[i]);
986  }
987  GNUNET_array_grow (h->watches,
988  h->watches_size,
989  0);
990  GNUNET_free (h->subsystem);
991  GNUNET_free (h);
992 }
#define GNUNET_CONTAINER_DLL_remove(head, tail, element)
Remove an element from a DLL.
#define GNUNET_log(kind,...)
@ GNUNET_NO
#define GNUNET_assert(cond)
Use this for fatal errors that cannot be handled.
#define GNUNET_break(cond)
Use this for internal assertion violations that are not fatal (can be handled) but should not occur.
@ GNUNET_ERROR_TYPE_DEBUG
#define GNUNET_array_grow(arr, size, tsize)
Grow a well-typed (!) array.
#define GNUNET_free(ptr)
Wrapper around free.
unsigned int GNUNET_MQ_get_length(struct GNUNET_MQ_Handle *mq)
Obtain the current length of the message queue.
Definition: mq.c:293
void * GNUNET_SCHEDULER_cancel(struct GNUNET_SCHEDULER_Task *task)
Cancel the task with the specified identifier.
Definition: scheduler.c:975
struct GNUNET_SCHEDULER_Task * GNUNET_SCHEDULER_add_delayed(struct GNUNET_TIME_Relative delay, GNUNET_SCHEDULER_TaskCallback task, void *task_cls)
Schedule a new task to be run with a specified delay.
Definition: scheduler.c:1272
struct GNUNET_TIME_Relative GNUNET_TIME_relative_multiply(struct GNUNET_TIME_Relative rel, unsigned long long factor)
Multiply relative time by a given factor.
Definition: time.c:484
@ ACTION_GET
Get a value.
@ ACTION_WATCH
Watch a value.
static void free_action_item(struct GNUNET_STATISTICS_GetHandle *gh)
Free memory associated with the given action item.
static void schedule_action(void *cls)
Schedule the next action to be performed.
static void do_destroy(void *cls)
Task used to destroy the statistics handle.
static void do_disconnect(struct GNUNET_STATISTICS_Handle *h)
Disconnect from the statistics service.
struct GNUNET_MQ_Handle * mq
Our connection to the ARM service.
Definition: arm_api.c:107
Linked list of things we still need to do.
enum ActionType type
Is this a ACTION_GET, ACTION_SET, ACTION_UPDATE or ACTION_WATCH?
struct GNUNET_STATISTICS_GetHandle * next
This is a doubly linked list.

References ACTION_GET, ACTION_WATCH, do_destroy(), do_disconnect(), free_action_item(), GNUNET_array_grow, GNUNET_assert, GNUNET_break, GNUNET_CONTAINER_DLL_remove, GNUNET_ERROR_TYPE_DEBUG, GNUNET_free, GNUNET_log, GNUNET_MQ_get_length(), GNUNET_NO, GNUNET_SCHEDULER_add_delayed(), GNUNET_SCHEDULER_cancel(), GNUNET_TIME_relative_multiply(), GNUNET_YES, h, GNUNET_ARM_Handle::mq, GNUNET_STATISTICS_GetHandle::next, schedule_action(), and GNUNET_STATISTICS_GetHandle::type.

Referenced by clean_node(), cleaning_task(), cleanup(), cleanup_task(), do_destroy(), do_shutdown(), GNUNET_DATACACHE_destroy(), GNUNET_DATASTORE_disconnect(), handle_shutdown(), main_task(), mq_error_handler(), process_stat_done(), RECLAIM_TICKETS_deinit(), run(), shutdown_rest(), shutdown_task(), stat_disconnect_adapter(), and stats_da().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GNUNET_STATISTICS_watch()

int GNUNET_STATISTICS_watch ( struct GNUNET_STATISTICS_Handle handle,
const char *  subsystem,
const char *  name,
GNUNET_STATISTICS_Iterator  proc,
void *  proc_cls 
)

Watch statistics from the peer (be notified whenever they change).

Parameters
handleidentification of the statistics service
subsystemlimit to the specified subsystem, never NULL
namename of the statistic value, never NULL
procfunction to call on each value
proc_clsclosure for proc
Returns
GNUNET_OK on success, GNUNET_SYSERR on error

Definition at line 1136 of file statistics_api.c.

1141 {
1142  struct GNUNET_STATISTICS_WatchEntry *w;
1143 
1144  if (NULL == handle)
1145  return GNUNET_SYSERR;
1148  w->name = GNUNET_strdup (name);
1149  w->proc = proc;
1150  w->proc_cls = proc_cls;
1151  GNUNET_array_append (handle->watches,
1152  handle->watches_size,
1153  w);
1155  w);
1156  return GNUNET_OK;
1157 }
static char * name
Name (label) of the records to list.
static struct GNUNET_VPN_Handle * handle
Handle to vpn service.
Definition: gnunet-vpn.c:35
@ GNUNET_OK
@ GNUNET_SYSERR
#define GNUNET_array_append(arr, len, element)
Append an element to an array (growing the array by one).
static void schedule_watch_request(struct GNUNET_STATISTICS_Handle *h, struct GNUNET_STATISTICS_WatchEntry *watch)
Transmit request to service that we want to watch the development of a particular value.
Entry kept for each value we are watching.
void * proc_cls
Closure for proc.
char * name
What value is this action about? (never NULL)
GNUNET_STATISTICS_Iterator proc
Function to call.
char * subsystem
What subsystem is this action about? (never NULL)

References GNUNET_array_append, GNUNET_new, GNUNET_OK, GNUNET_strdup, GNUNET_SYSERR, handle, name, GNUNET_STATISTICS_WatchEntry::name, GNUNET_STATISTICS_WatchEntry::proc, GNUNET_STATISTICS_WatchEntry::proc_cls, schedule_watch_request(), subsystem, and GNUNET_STATISTICS_WatchEntry::subsystem.

Referenced by main_task(), and stat_comp_cb().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GNUNET_STATISTICS_watch_cancel()

int GNUNET_STATISTICS_watch_cancel ( struct GNUNET_STATISTICS_Handle handle,
const char *  subsystem,
const char *  name,
GNUNET_STATISTICS_Iterator  proc,
void *  proc_cls 
)

Stop watching statistics from the peer.

Parameters
handleidentification of the statistics service
subsystemlimit to the specified subsystem, never NULL
namename of the statistic value, never NULL
procfunction to call on each value
proc_clsclosure for proc
Returns
GNUNET_OK on success, GNUNET_SYSERR on error (no such watch)

Definition at line 1171 of file statistics_api.c.

1176 {
1177  struct GNUNET_STATISTICS_WatchEntry *w;
1178 
1179  if (NULL == handle)
1180  return GNUNET_SYSERR;
1181  for (unsigned int i = 0; i < handle->watches_size; i++)
1182  {
1183  w = handle->watches[i];
1184  if (NULL == w)
1185  continue;
1186  if ((w->proc == proc) &&
1187  (w->proc_cls == proc_cls) &&
1188  (0 == strcmp (w->name,
1189  name)) &&
1190  (0 == strcmp (w->subsystem,
1191  subsystem)))
1192  {
1193  GNUNET_free (w->name);
1194  GNUNET_free (w->subsystem);
1195  GNUNET_free (w);
1196  handle->watches[i] = NULL;
1197  return GNUNET_OK;
1198  }
1199  }
1200  return GNUNET_SYSERR;
1201 }

References GNUNET_free, GNUNET_OK, GNUNET_SYSERR, handle, name, GNUNET_STATISTICS_WatchEntry::name, GNUNET_STATISTICS_WatchEntry::proc, GNUNET_STATISTICS_WatchEntry::proc_cls, subsystem, and GNUNET_STATISTICS_WatchEntry::subsystem.

Referenced by clean_node(), and stat_disconnect_adapter().

Here is the caller graph for this function:

◆ GNUNET_STATISTICS_get()

struct GNUNET_STATISTICS_GetHandle* GNUNET_STATISTICS_get ( struct GNUNET_STATISTICS_Handle handle,
const char *  subsystem,
const char *  name,
GNUNET_STATISTICS_Callback  cont,
GNUNET_STATISTICS_Iterator  proc,
void *  cls 
)

Get statistic from the peer.

Parameters
handleidentification of the statistics service
subsystemlimit to the specified subsystem, NULL for all subsystems
namename of the statistic value, NULL for all values
contcontinuation to call when done (can be NULL) This callback CANNOT destroy the statistics handle in the same call.
procfunction to call on each value
clsclosure for proc and cont
Returns
NULL on error

Definition at line 1065 of file statistics_api.c.

1071 {
1072  size_t slen1;
1073  size_t slen2;
1075 
1076  if (NULL == handle)
1077  return NULL;
1078  GNUNET_assert (NULL != proc);
1079  GNUNET_assert (GNUNET_NO == handle->do_destroy);
1080  if (NULL == subsystem)
1081  subsystem = "";
1082  if (NULL == name)
1083  name = "";
1084  slen1 = strlen (subsystem) + 1;
1085  slen2 = strlen (name) + 1;
1086  GNUNET_assert (slen1 + slen2 + sizeof(struct GNUNET_MessageHeader) <
1089  ai->sh = handle;
1090  ai->subsystem = GNUNET_strdup (subsystem);
1091  ai->name = GNUNET_strdup (name);
1092  ai->cont = cont;
1093  ai->proc = proc;
1094  ai->cls = cls;
1095  ai->type = ACTION_GET;
1096  ai->msize = slen1 + slen2 + sizeof(struct GNUNET_MessageHeader);
1098  handle->action_tail,
1099  ai);
1101  return ai;
1102 }
static struct GNUNET_TRANSPORT_AddressIdentifier * ai
Handle to the operation that publishes our address.
#define GNUNET_MAX_MESSAGE_SIZE
Largest supported message (to be precise, one byte more than the largest possible message,...
#define GNUNET_CONTAINER_DLL_insert_tail(head, tail, element)
Insert an element at the tail of a DLL.
Header for all communications.
GNUNET_STATISTICS_Callback cont
Continuation to call once action is complete.
GNUNET_STATISTICS_Iterator proc
Function to call (for GET actions only).
void * cls
Closure for proc and cont.

References ACTION_GET, ai, GNUNET_STATISTICS_GetHandle::cls, GNUNET_STATISTICS_GetHandle::cont, GNUNET_assert, GNUNET_CONTAINER_DLL_insert_tail, GNUNET_MAX_MESSAGE_SIZE, GNUNET_new, GNUNET_NO, GNUNET_strdup, handle, name, GNUNET_STATISTICS_GetHandle::proc, schedule_action(), and subsystem.

Referenced by check_all_done(), GNUNET_HOSTLIST_client_start(), main_task(), post_profiler(), run(), and stats_connect_cb().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GNUNET_STATISTICS_get_cancel()

void GNUNET_STATISTICS_get_cancel ( struct GNUNET_STATISTICS_GetHandle gh)

Cancel a GNUNET_STATISTICS_get request.

Must be called before the 'cont' function is called.

Parameters
ghhandle of the request to cancel

Definition at line 1106 of file statistics_api.c.

1107 {
1108  if (NULL == gh)
1109  return;
1110  gh->cont = NULL;
1111  if (gh->sh->current == gh)
1112  {
1113  gh->aborted = GNUNET_YES;
1114  return;
1115  }
1117  gh->sh->action_tail,
1118  gh);
1119  GNUNET_free (gh->name);
1120  GNUNET_free (gh->subsystem);
1121  GNUNET_free (gh);
1122 }
char * name
What value is this action about? (can be NULL)
int aborted
Has the current iteration been aborted; for GET actions.
struct GNUNET_STATISTICS_Handle * sh
Main statistics handle.
char * subsystem
What subsystem is this action about? (can be NULL)
struct GNUNET_STATISTICS_GetHandle * current
Action we are currently busy with (action request has been transmitted, we're now receiving the respo...
struct GNUNET_STATISTICS_GetHandle * action_head
Head of the linked list of pending actions (first action to be performed).
struct GNUNET_STATISTICS_GetHandle * action_tail
Tail of the linked list of actions (for fast append).

References GNUNET_STATISTICS_GetHandle::aborted, GNUNET_STATISTICS_Handle::action_head, GNUNET_STATISTICS_Handle::action_tail, GNUNET_STATISTICS_GetHandle::cont, GNUNET_STATISTICS_Handle::current, GNUNET_CONTAINER_DLL_remove, GNUNET_free, GNUNET_YES, GNUNET_STATISTICS_GetHandle::name, GNUNET_STATISTICS_GetHandle::sh, and GNUNET_STATISTICS_GetHandle::subsystem.

Referenced by clean_node(), clean_peer(), cleaning_task(), GNUNET_HOSTLIST_client_stop(), stat_timeout(), and stat_timeout_task().

Here is the caller graph for this function:

◆ GNUNET_STATISTICS_set()

void GNUNET_STATISTICS_set ( struct GNUNET_STATISTICS_Handle handle,
const char *  name,
uint64_t  value,
int  make_persistent 
)

Set statistic value for the peer.

Will always use our subsystem (the argument used when handle was created).

Parameters
handleidentification of the statistics service
namename of the statistic value
valuenew value to set
make_persistentshould the value be kept across restarts?

Definition at line 1307 of file statistics_api.c.

1311 {
1312  if (NULL == handle)
1313  return;
1314  GNUNET_assert (GNUNET_NO == handle->do_destroy);
1316  name,
1317  make_persistent,
1318  value,
1319  ACTION_SET);
1320 }
static char * value
Value of the record to add/remove.
@ ACTION_SET
Set a value.
static void add_setter_action(struct GNUNET_STATISTICS_Handle *h, const char *name, int make_persistent, uint64_t value, enum ActionType type)
Queue a request to change a statistic.

References ACTION_SET, add_setter_action(), GNUNET_assert, GNUNET_NO, handle, name, and value.

Referenced by adapt_sizes(), add_valid_peer(), boot_queue(), calculate_put_interval(), check_iteration_start(), check_zone_namestore_next(), client_disconnect_cb(), commit_set(), connect_notify(), create_peer_ctx(), destroy_peer(), destroy_route(), dir_ready_cb(), discard_buffer(), disconnect_notify(), do_round(), finish_response(), GSC_SESSIONS_create(), GSC_SESSIONS_end(), GSF_peer_connect_handler(), GSF_peer_disconnect_handler(), GSF_plan_notify_peer_disconnect_(), GSF_plan_notify_request_done_(), handle_connection_create(), handle_p2p_estimate(), handle_put(), handle_release_reserve(), handle_reserve(), insert_hostlist(), insert_in_sampler(), insert_in_view(), iterate_zones(), kce_generate(), load_hostlist_file(), main_task(), mq_init(), new_sub(), peer_destroy(), plan(), process_result(), process_stdin(), queue_destroy(), receiver_destroy(), route_message(), run(), save_hostlist_file(), schedule_peer_transmission(), secret_destroy(), sender_destroy(), setup_estimate_message(), setup_queue(), setup_sender(), store_completed_cb(), sync_stats(), task_check(), try_transmission(), update_memory_statistics(), update_velocity(), and zone_iteration_finished().

Here is the call graph for this function:

◆ GNUNET_STATISTICS_update()

void GNUNET_STATISTICS_update ( struct GNUNET_STATISTICS_Handle handle,
const char *  name,
int64_t  delta,
int  make_persistent 
)

Set statistic value for the peer.

Will always use our subsystem (the argument used when handle was created).

Parameters
handleidentification of the statistics service
namename of the statistic value
deltachange in value (added to existing value)
make_persistentshould the value be kept across restarts?

Definition at line 1324 of file statistics_api.c.

1328 {
1329  if (NULL == handle)
1330  return;
1331  if (0 == delta)
1332  return;
1333  GNUNET_assert (GNUNET_NO == handle->do_destroy);
1335  name,
1336  make_persistent,
1337  (uint64_t) delta,
1338  ACTION_UPDATE);
1339 }
static struct GNUNET_TIME_Relative delta
Definition: speedup.c:36
@ ACTION_UPDATE
Update a value.

References ACTION_UPDATE, add_setter_action(), delta, GNUNET_assert, GNUNET_NO, handle, and name.

Referenced by access_handler_callback(), add_revocation(), adv_transmit(), announce_id(), attempt_connect(), backtalker_monotime_cb(), bound_priority(), broadcast_my_type_map(), cadet_reply_proc(), callback_download(), check_dht_local_get_result_seen(), check_dht_p2p_hello(), check_dht_p2p_put(), check_monitor_start(), check_peer_online(), check_peer_pull_reply(), check_tcp_data(), clean_request(), client_connect_cb(), client_disconnect_cb(), client_request_destroy(), client_response_handler(), commit_set(), compute_rand_delay(), connect_cb(), consider_peer_for_forwarding(), consider_request_for_forwarding(), core_read_finished_cb(), create_channel_to_destination(), datacache_get_iterator(), decode_and_send(), decrypt_box(), deliver_message(), destroy_direction(), destroy_peer(), dht_get_string_accept_handler(), discard_all_from_rung_tail(), disconnect_cb(), dns_post_request_handler(), dns_pre_request_handler(), do_decrypt(), do_encrypt(), do_round(), do_send(), download_hostlist(), env_delete_notify(), expire_oldest_entry(), expired_processor(), fail_intersection_operation(), finish_handling_raw_message(), finish_request(), forward_reply(), free_channel_state(), free_destination_entry(), free_pending_request(), free_queue(), GCC_latency_observed(), GCCH_channel_incoming_new(), GCCH_channel_local_new(), GCCH_handle_channel_open_ack(), GCCH_handle_channel_plaintext_data(), GCCH_handle_channel_plaintext_data_ack(), GCD_search(), GCT_add_channel(), GCT_handle_encrypted(), GCT_handle_kx(), GCT_send(), GDS_am_closest_peer(), GDS_CLIENTS_handle_reply(), GDS_ROUTING_add(), GDS_u_connect(), GDS_u_disconnect(), GNUNET_DATACACHE_get(), GNUNET_DATACACHE_get_closest(), GNUNET_DATASTORE_get_for_replication(), GNUNET_DATASTORE_get_key(), GNUNET_DATASTORE_get_zero_anonymity(), GNUNET_DATASTORE_put(), GNUNET_DATASTORE_release_reserve(), GNUNET_DATASTORE_remove(), GNUNET_DATASTORE_reserve(), GNUNET_FS_handle_on_demand_block(), got_peer(), GSC_CLIENTS_deliver_message(), GSC_SESSIONS_confirm_typemap(), GSC_TYPEMAP_get_from_message(), GSF_block_peer_migration_(), GSF_local_lookup_(), GSF_pending_request_create_(), GSF_plan_add_(), handle_backchannel_encapsulation(), handle_block_cache(), handle_client_accept(), handle_client_evaluate(), handle_client_recv_ok(), handle_client_redirect_to_ip(), handle_client_response(), handle_client_send(), handle_client_send_request(), handle_client_start_search(), handle_core_connect(), handle_core_disconnect(), handle_data(), handle_datastore_reply(), handle_dht_local_put(), handle_dht_p2p_get(), handle_dht_p2p_put(), handle_dht_reply(), handle_dns_response(), handle_dv_box(), handle_dv_learn(), handle_encrypted(), handle_ephemeral_key(), handle_find_my_hello(), handle_flow_control(), handle_get(), handle_get_key(), handle_get_replication(), handle_get_zero_anonymity(), handle_hello(), handle_icmp_back(), handle_icmp_remote(), handle_icmp_service(), handle_iteration_next(), handle_local_data(), handle_lookup(), handle_lookup_block(), handle_lookup_block_it(), handle_monitor_error(), handle_monitor_event(), handle_p2p_estimate(), handle_p2p_get(), handle_p2p_migration_stop(), handle_p2p_put(), handle_p2p_reply(), handle_peer_check(), handle_peer_pull_request(), handle_peer_push(), handle_ping(), handle_plaintext_keepalive(), handle_pong(), handle_queue_create_fail(), handle_queue_create_ok(), handle_reliability_ack(), handle_remove(), handle_reply(), handle_request(), handle_send_message_ack(), handle_status(), handle_tcp_back(), handle_tcp_data(), handle_tcp_remote(), handle_tcp_service(), handle_transport_notify_connect(), handle_transport_notify_disconnect(), handle_udp_back(), handle_udp_remote(), handle_udp_service(), handle_union_p2p_demand(), handle_union_p2p_elements(), handle_union_p2p_full_element(), handle_union_p2p_strata_estimator(), handle_validation_response(), handler_connect(), handler_disconnect(), icmp_from_helper(), initiate_put_from_pipe_trigger(), insert_in_sampler(), iterate_zones(), learn_dv_path(), lookup_authz_cb(), make_queue_entry(), merge_pr(), message_token(), mq_notify_sent_cb(), new_channel(), new_service_channel(), next_phase(), no_more_local_results(), ns_lookup_result_cb(), pass_plaintext_to_core(), peerstore_store_validation_cb(), process_dns_result(), process_helper_messages(), process_local_reply(), process_parallel_lookup_result(), process_record(), process_result(), progress_cb(), publish_zone_dht_start(), put_continuation(), put_migration_continuation(), quota_processor(), reannounce_regex(), receive_complete_cb(), refresh_block(), regex_edge_iterator(), regex_iterator(), regex_next_edge(), regex_result_iterator(), remove_continuation(), request_done(), route_message(), route_packet(), schedule_current_round(), schedule_next_hello(), schedule_peer_transmission(), schedule_transmit_on_queue(), secret_destroy(), select_peer(), select_write_cb(), send_bloomfilter(), send_client_done(), send_client_done_and_destroy(), send_client_removed_element(), send_find_peer_message(), send_ibf(), send_icmp_packet_via_tun(), send_keep_alive(), send_keepalive(), send_kx(), send_kx_auth(), send_lookup_response(), send_lookup_response_with_filter(), send_packet_to_cadet_channel(), send_ping(), send_pull_reply(), send_pull_request(), send_push(), send_store_response(), send_tcp_packet_via_tun(), send_to_channel(), send_udp_packet_via_tun(), setup_shared_secret_ephemeral(), sock_read(), start_local_query(), suggest_to_connect(), test_exist_cb(), test_put_load_too_high(), timeout_request(), tokenized_cb(), transmit_item(), transmit_request(), transmit_task_cb(), transmit_typemap_task(), try_decrypt(), try_reconnect(), union_accept(), union_evaluate(), update_ax_by_kx(), update_hostlist(), update_network_size_estimate(), and vpn_allocation_callback().

Here is the call graph for this function: