code for maintaining the overlay topology More...
#include "platform.h"
#include "gnunet_util_lib.h"
#include "gnunet_hello_uri_lib.h"
#include "gnunet_constants.h"
#include "gnunet_core_service.h"
#include "gnunet_protocols.h"
#include "gnunet_peerstore_service.h"
#include "gnunet_statistics_service.h"
#include "gnunet_transport_application_service.h"
#include <assert.h>
Go to the source code of this file.
Data Structures | |
struct | Peer |
Record for neighbours and blacklisted peers. More... | |
struct | StoreHelloEntry |
Context for a add hello uri request. More... | |
struct | FindAdvHelloContext |
Closure for find_advertisable_hello(). More... | |
Macros | |
#define | HELLO_ADVERTISEMENT_MIN_FREQUENCY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 5) |
At what frequency do we sent HELLOs to a peer? More... | |
#define | HELLO_ADVERTISEMENT_MIN_REPEAT_FREQUENCY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_HOURS, 4) |
After what time period do we expire the HELLO Bloom filter? More... | |
Functions | |
static int | free_peer (void *cls, const struct GNUNET_PeerIdentity *pid, void *value) |
Free all resources associated with the given peer. More... | |
static void | attempt_connect (struct Peer *pos) |
Recalculate how much we want to be connected to the specified peer and let ATS know about the result. More... | |
static struct Peer * | make_peer (const struct GNUNET_PeerIdentity *peer, const struct GNUNET_MessageHeader *hello) |
Create a new entry in the peer list. More... | |
static void | setup_filter (struct Peer *peer) |
Setup bloom filter for the given peer entry. More... | |
static int | find_advertisable_hello (void *cls, const struct GNUNET_PeerIdentity *pid, void *value) |
Find a peer that would be reasonable for advertising. More... | |
static void | schedule_next_hello (void *cls) |
Calculate when we would like to send the next HELLO to this peer and ask for it. More... | |
static int | reschedule_hellos (void *cls, const struct GNUNET_PeerIdentity *pid, void *value) |
Cancel existing requests for sending HELLOs to this peer and recalculate when we should send HELLOs to it based on our current state (something changed!). More... | |
static void * | connect_notify (void *cls, const struct GNUNET_PeerIdentity *peer, struct GNUNET_MQ_Handle *mq) |
Method called whenever a peer connects. More... | |
static int | try_add_peers (void *cls, const struct GNUNET_PeerIdentity *pid, void *value) |
Try to add more peers to our connection set. More... | |
static void | add_peer_task (void *cls) |
Add peers and schedule connection attempt. More... | |
static void | disconnect_notify (void *cls, const struct GNUNET_PeerIdentity *peer, void *internal_cls) |
Method called whenever a peer disconnects. More... | |
static void | address_iterator (void *cls, const struct GNUNET_PeerIdentity *pid, const char *uri) |
Iterator called on each address. More... | |
static void | consider_for_advertising (const struct GNUNET_MessageHeader *hello) |
We've gotten a HELLO from another peer. More... | |
static void | error_cb (void *cls) |
static void | sync_cb (void *cls) |
static void | process_peer (void *cls, const struct GNUNET_PEERSTORE_Record *record, const char *err_msg) |
PEERSTORE calls this function to let us know about a possible peer that we might want to connect to. More... | |
static void | start_notify (void *cls) |
static void | core_init (void *cls, const struct GNUNET_PeerIdentity *my_id) |
Function called after GNUNET_CORE_connect has succeeded (or failed for good). More... | |
static int | check_hello (void *cls, const struct GNUNET_MessageHeader *msg) |
This function is called whenever an encrypted HELLO message is received. More... | |
static void | shc_cont (void *cls, int success) |
static void | handle_hello (void *cls, const struct GNUNET_MessageHeader *msg) |
This function is called whenever an encrypted HELLO message is received. More... | |
static void | cleaning_task (void *cls) |
Last task run during shutdown. More... | |
static void | run (void *cls, char *const *args, const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *c) |
Main function that will be run. More... | |
int | main (int argc, char *const *argv) |
The main function for the topology daemon. More... | |
Variables | |
struct GNUNET_SCHEDULER_Task * | peerstore_notify_task |
The task to delayed start the notification process initially. More... | |
static struct GNUNET_PEERSTORE_Monitor * | peerstore_notify |
Our peerstore notification context. More... | |
static const struct GNUNET_CONFIGURATION_Handle * | cfg |
Our configuration. More... | |
static struct GNUNET_CORE_Handle * | handle |
Handle to the CORE service. More... | |
static struct GNUNET_PEERSTORE_Handle * | ps |
Handle to the PEERSTORE service. More... | |
struct GNUNET_TRANSPORT_ApplicationHandle * | transport |
Handle to Transport service. More... | |
static struct GNUNET_PeerIdentity | my_identity |
Identity of this peer. More... | |
static struct GNUNET_CRYPTO_EddsaPrivateKey * | my_private_key |
Our private key. More... | |
static struct GNUNET_CONTAINER_MultiPeerMap * | peers |
All of our current neighbours and all peers for which we have HELLOs. More... | |
static struct GNUNET_STATISTICS_Handle * | stats |
Handle for reporting statistics. More... | |
static struct GNUNET_SCHEDULER_Task * | add_task |
Task scheduled to asynchronously reconsider adding/removing peer connectivity suggestions. More... | |
static unsigned int | connection_count |
Number of peers that we are currently connected to. More... | |
static unsigned int | target_connection_count |
Target number of connections. More... | |
static struct StoreHelloEntry * | she_head |
Head of the linkd list to store the store context for hellos. More... | |
static struct StoreHelloEntry * | she_tail |
Tail of the linkd list to store the store context for hellos. More... | |
code for maintaining the overlay topology
This daemon combines one Function:
Definition in file gnunet-daemon-topology.c.
#define HELLO_ADVERTISEMENT_MIN_FREQUENCY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 5) |
At what frequency do we sent HELLOs to a peer?
Definition at line 45 of file gnunet-daemon-topology.c.
#define HELLO_ADVERTISEMENT_MIN_REPEAT_FREQUENCY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_HOURS, 4) |
After what time period do we expire the HELLO Bloom filter?
Definition at line 51 of file gnunet-daemon-topology.c.
|
static |
Free all resources associated with the given peer.
cls | closure (not used) |
pid | identity of the peer |
value | peer to free |
Definition at line 221 of file gnunet-daemon-topology.c.
References Peer::ash, Peer::filter, GNUNET_break, GNUNET_CONTAINER_bloomfilter_free(), GNUNET_CONTAINER_multipeermap_remove(), GNUNET_free, GNUNET_OK, GNUNET_SCHEDULER_cancel(), GNUNET_TRANSPORT_application_suggest_cancel(), GNUNET_YES, Peer::hello, Peer::hello_delay_task, Peer::mq, peers, pid, and value.
Referenced by cleaning_task(), and process_peer().
|
static |
Recalculate how much we want to be connected to the specified peer and let ATS know about the result.
pos | peer to consider connecting to |
Definition at line 260 of file gnunet-daemon-topology.c.
References Peer::ash, connection_count, gettext_noop, GNUNET_ERROR_TYPE_DEBUG, GNUNET_i2s(), GNUNET_log, GNUNET_memcmp, GNUNET_MQ_PRIO_BEST_EFFORT, GNUNET_NO, GNUNET_STATISTICS_update(), GNUNET_TRANSPORT_application_suggest(), GNUNET_TRANSPORT_application_suggest_cancel(), Peer::mq, my_identity, Peer::pid, stats, Peer::strength, target_connection_count, transport, and GNUNET_BANDWIDTH_Value32NBO::value__.
Referenced by process_peer(), and try_add_peers().
|
static |
Create a new entry in the peer list.
peer | identity of the new entry |
hello | hello message, can be NULL |
Definition at line 307 of file gnunet-daemon-topology.c.
References GNUNET_break, GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY, GNUNET_CONTAINER_multipeermap_put(), GNUNET_malloc, GNUNET_memcpy, GNUNET_new, GNUNET_OK, Peer::hello, peers, ret, and GNUNET_MessageHeader::size.
Referenced by connect_notify(), consider_for_advertising(), and process_peer().
|
static |
Setup bloom filter for the given peer entry.
peer | entry to initialize |
Definition at line 335 of file gnunet-daemon-topology.c.
References Peer::filter, Peer::filter_expiration, GNUNET_CONTAINER_bloomfilter_add(), GNUNET_CONTAINER_bloomfilter_init(), GNUNET_CRYPTO_hash(), GNUNET_TIME_relative_to_absolute(), HELLO_ADVERTISEMENT_MIN_REPEAT_FREQUENCY, and Peer::pid.
Referenced by consider_for_advertising(), and find_advertisable_hello().
|
static |
Find a peer that would be reasonable for advertising.
cls | closure |
pid | identity of a peer |
value | 'struct Peer*' for the peer we are considering |
Definition at line 387 of file gnunet-daemon-topology.c.
References Peer::filter, Peer::filter_expiration, GNUNET_CONTAINER_bloomfilter_free(), GNUNET_CONTAINER_bloomfilter_test(), GNUNET_CRYPTO_hash(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_log, GNUNET_NO, GNUNET_TIME_absolute_get_remaining(), GNUNET_TIME_relative_min(), GNUNET_YES, Peer::hello, FindAdvHelloContext::max_size, FindAdvHelloContext::next_adv, FindAdvHelloContext::peer, Peer::pid, GNUNET_TIME_Relative::rel_value_us, FindAdvHelloContext::result, setup_filter(), GNUNET_MessageHeader::size, and value.
Referenced by schedule_next_hello().
|
static |
Calculate when we would like to send the next HELLO to this peer and ask for it.
cls | for which peer to schedule the HELLO |
Definition at line 436 of file gnunet-daemon-topology.c.
References env, Peer::filter, find_advertisable_hello(), gettext_noop, GNUNET_assert, GNUNET_CONTAINER_bloomfilter_add(), GNUNET_CONTAINER_multipeermap_iterate(), GNUNET_CRYPTO_hash(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_i2s(), GNUNET_log, GNUNET_MAX_MESSAGE_SIZE, GNUNET_MQ_msg_copy(), GNUNET_MQ_send(), GNUNET_NO, GNUNET_SCHEDULER_add_delayed(), GNUNET_STATISTICS_update(), GNUNET_TIME_absolute_get_remaining(), GNUNET_TIME_relative_to_absolute(), GNUNET_TIME_UNIT_FOREVER_REL, Peer::hello, HELLO_ADVERTISEMENT_MIN_FREQUENCY, Peer::hello_delay_task, FindAdvHelloContext::max_size, Peer::mq, FindAdvHelloContext::next_adv, Peer::next_hello_allowed, FindAdvHelloContext::peer, peers, Peer::pid, FindAdvHelloContext::result, schedule_next_hello(), GNUNET_MessageHeader::size, and stats.
Referenced by reschedule_hellos(), and schedule_next_hello().
|
static |
Cancel existing requests for sending HELLOs to this peer and recalculate when we should send HELLOs to it based on our current state (something changed!).
cls | closure struct Peer to skip, or NULL |
pid | identity of a peer |
value | struct Peer * for the peer |
Definition at line 498 of file gnunet-daemon-topology.c.
References GNUNET_ERROR_TYPE_DEBUG, GNUNET_i2s(), GNUNET_log, GNUNET_SCHEDULER_add_now(), GNUNET_SCHEDULER_cancel(), GNUNET_YES, Peer::hello_delay_task, Peer::mq, Peer::pid, schedule_next_hello(), and value.
Referenced by connect_notify(), and consider_for_advertising().
|
static |
Method called whenever a peer connects.
cls | closure |
peer | peer identity this notification is about |
mq | message queue for communicating with peer |
struct Peer
for peer Definition at line 532 of file gnunet-daemon-topology.c.
References connection_count, gettext_noop, GNUNET_assert, GNUNET_CONTAINER_multipeermap_get(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_i2s(), GNUNET_log, GNUNET_memcmp, GNUNET_MQ_PRIO_BEST_EFFORT, GNUNET_MQ_set_options(), GNUNET_NO, GNUNET_STATISTICS_set(), make_peer(), mq, Peer::mq, my_identity, peers, reschedule_hellos(), and stats.
Referenced by reconnect(), and run().
|
static |
Try to add more peers to our connection set.
cls | closure, not used |
pid | identity of a peer |
value | struct Peer * for the peer |
Definition at line 573 of file gnunet-daemon-topology.c.
References attempt_connect(), GNUNET_YES, and value.
Referenced by add_peer_task().
|
static |
Add peers and schedule connection attempt.
cls | unused, NULL |
Definition at line 588 of file gnunet-daemon-topology.c.
References add_task, GNUNET_CONTAINER_multipeermap_iterate(), peers, and try_add_peers().
Referenced by disconnect_notify().
|
static |
Method called whenever a peer disconnects.
cls | closure |
peer | peer identity this notification is about |
internal_cls | the struct Peer for this peer |
Definition at line 604 of file gnunet-daemon-topology.c.
References add_peer_task(), add_task, connection_count, gettext_noop, GNUNET_break, GNUNET_ERROR_TYPE_DEBUG, GNUNET_i2s(), GNUNET_log, GNUNET_NO, GNUNET_SCHEDULER_add_now(), GNUNET_SCHEDULER_cancel(), GNUNET_STATISTICS_set(), Peer::hello_delay_task, Peer::mq, stats, and target_connection_count.
Referenced by reconnect(), and run().
|
static |
Iterator called on each address.
cls | flag that we will set if we see any addresses |
address | the address of the peer |
Definition at line 646 of file gnunet-daemon-topology.c.
References pid.
Referenced by consider_for_advertising().
|
static |
We've gotten a HELLO from another peer.
Consider it for advertising.
hello | the HELLO we got |
Definition at line 665 of file gnunet-daemon-topology.c.
References address_iterator(), Peer::filter, GNUNET_CONTAINER_bloomfilter_free(), GNUNET_CONTAINER_multipeermap_get(), GNUNET_CONTAINER_multipeermap_iterate(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_free, GNUNET_HELLO_get_expiration_time_from_msg(), GNUNET_HELLO_parser_free(), GNUNET_HELLO_parser_from_msg(), GNUNET_HELLO_parser_iterate(), GNUNET_i2s(), GNUNET_log, GNUNET_malloc, GNUNET_memcpy, GNUNET_TIME_absolute_cmp, GNUNET_TIME_absolute_get(), Peer::hello, make_peer(), consensus-simulation::parser, peers, pid, reschedule_hellos(), setup_filter(), GNUNET_MessageHeader::size, and size.
Referenced by process_peer().
|
static |
Definition at line 745 of file gnunet-daemon-topology.c.
References _, GNUNET_ERROR_TYPE_DEBUG, and GNUNET_log.
Referenced by process_peer(), and start_notify().
|
static |
Definition at line 755 of file gnunet-daemon-topology.c.
References _, GNUNET_ERROR_TYPE_DEBUG, and GNUNET_log.
Referenced by process_peer(), and start_notify().
|
static |
PEERSTORE calls this function to let us know about a possible peer that we might want to connect to.
cls | closure (not used) |
peer | potential peer to connect to |
hello | HELLO for this peer (or NULL) |
err_msg | NULL if successful, otherwise contains error message |
Definition at line 773 of file gnunet-daemon-topology.c.
References _, attempt_connect(), cfg, consider_for_advertising(), error_cb(), Peer::filter, free_peer(), GNUNET_assert, GNUNET_CONTAINER_bloomfilter_free(), GNUNET_CONTAINER_multipeermap_get(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_free, GNUNET_log, GNUNET_PEERSTORE_HELLO_KEY, GNUNET_PEERSTORE_monitor_next(), GNUNET_PEERSTORE_monitor_start(), GNUNET_PEERSTORE_monitor_stop(), GNUNET_YES, Peer::hello, make_peer(), Peer::mq, peers, peerstore_notify, Peer::pid, process_peer(), record(), and sync_cb().
Referenced by process_peer(), and start_notify().
|
static |
Definition at line 831 of file gnunet-daemon-topology.c.
References cfg, error_cb(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_log, GNUNET_PEERSTORE_HELLO_KEY, GNUNET_PEERSTORE_monitor_start(), GNUNET_YES, peerstore_notify, process_peer(), and sync_cb().
Referenced by core_init().
|
static |
Function called after GNUNET_CORE_connect has succeeded (or failed for good).
cls | closure |
my_id | ID of this peer, NULL if we failed |
Definition at line 860 of file gnunet-daemon-topology.c.
References _, GNUNET_ERROR_TYPE_DEBUG, GNUNET_ERROR_TYPE_ERROR, GNUNET_i2s(), GNUNET_log, GNUNET_SCHEDULER_add_delayed(), GNUNET_SCHEDULER_shutdown(), GNUNET_TIME_UNIT_MINUTES, my_identity, peerstore_notify_task, and start_notify().
Referenced by run().
|
static |
This function is called whenever an encrypted HELLO message is received.
cls | closure with the peer identity of the sender |
message | the actual HELLO message |
Definition at line 889 of file gnunet-daemon-topology.c.
References GNUNET_break_op, GNUNET_HELLO_parser_from_msg(), GNUNET_HELLO_parser_get_id(), GNUNET_OK, GNUNET_SYSERR, msg, consensus-simulation::parser, and pid.
|
static |
Definition at line 904 of file gnunet-daemon-topology.c.
References GNUNET_CONTAINER_DLL_remove, GNUNET_ERROR_TYPE_DEBUG, GNUNET_free, GNUNET_log, GNUNET_YES, StoreHelloEntry::sc, she_head, and she_tail.
Referenced by handle_hello().
|
static |
This function is called whenever an encrypted HELLO message is received.
cls | closure with the peer identity of the sender |
message | the actual HELLO message |
Definition at line 928 of file gnunet-daemon-topology.c.
References gettext_noop, GNUNET_CONTAINER_DLL_insert, GNUNET_ERROR_TYPE_DEBUG, GNUNET_free, GNUNET_HELLO_parser_free(), GNUNET_HELLO_parser_from_msg(), GNUNET_i2s(), GNUNET_log, GNUNET_new, GNUNET_NO, GNUNET_PEERSTORE_hello_add(), GNUNET_STATISTICS_update(), msg, consensus-simulation::parser, ps, StoreHelloEntry::sc, shc_cont(), she_head, she_tail, and stats.
|
static |
Last task run during shutdown.
Disconnects us from the transport and core.
cls | unused, NULL |
Definition at line 961 of file gnunet-daemon-topology.c.
References add_task, free_peer(), GNUNET_CONTAINER_DLL_remove, GNUNET_CONTAINER_multipeermap_destroy(), GNUNET_CONTAINER_multipeermap_iterate(), GNUNET_CORE_disconnect(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_free, GNUNET_log, GNUNET_NO, GNUNET_PEERSTORE_disconnect(), GNUNET_PEERSTORE_hello_add_cancel(), GNUNET_PEERSTORE_monitor_stop(), GNUNET_SCHEDULER_cancel(), GNUNET_STATISTICS_destroy(), GNUNET_TRANSPORT_application_done(), handle, my_private_key, peers, peerstore_notify, peerstore_notify_task, ps, StoreHelloEntry::sc, she_head, she_tail, stats, and transport.
Referenced by run().
|
static |
Main function that will be run.
cls | closure |
args | remaining command-line arguments |
cfgfile | name of the configuration file used (for saving, can be NULL!) |
c | configuration |
Definition at line 1023 of file gnunet-daemon-topology.c.
References _, cfg, cleaning_task(), connect_notify(), core_init(), disconnect_notify(), GNUNET_CONFIGURATION_get_value_number(), GNUNET_CONTAINER_multipeermap_create(), GNUNET_CORE_connect(), GNUNET_CRYPTO_eddsa_key_create_from_configuration(), GNUNET_ERROR_TYPE_ERROR, GNUNET_log, GNUNET_MESSAGE_TYPE_HELLO_URI, GNUNET_MQ_handler_end, GNUNET_MQ_hd_var_size, GNUNET_NO, GNUNET_OK, GNUNET_PEERSTORE_connect(), GNUNET_SCHEDULER_add_shutdown(), GNUNET_SCHEDULER_shutdown(), GNUNET_STATISTICS_create(), GNUNET_TRANSPORT_application_init(), handle, handlers, consensus-simulation::int, my_private_key, peers, ps, stats, target_connection_count, and transport.
Referenced by main().
int main | ( | int | argc, |
char *const * | argv | ||
) |
The main function for the topology daemon.
argc | number of arguments from the command line |
argv | command line arguments |
Definition at line 1078 of file gnunet-daemon-topology.c.
References _, GNUNET_GETOPT_OPTION_END, GNUNET_OK, GNUNET_OS_project_data_gnunet(), GNUNET_PROGRAM_run(), options, ret, and run().
struct GNUNET_SCHEDULER_Task* peerstore_notify_task |
The task to delayed start the notification process initially.
We like to give transport some time to give us our hello to distribute it.
Definition at line 135 of file gnunet-daemon-topology.c.
Referenced by cleaning_task(), and core_init().
|
static |
Our peerstore notification context.
We use notification to instantly learn about new peers as they are discovered.
Definition at line 142 of file gnunet-daemon-topology.c.
Referenced by cleaning_task(), process_peer(), and start_notify().
|
static |
Our configuration.
Definition at line 147 of file gnunet-daemon-topology.c.
Referenced by process_peer(), run(), and start_notify().
|
static |
Handle to the CORE service.
Definition at line 152 of file gnunet-daemon-topology.c.
Referenced by cleaning_task(), and run().
|
static |
Handle to the PEERSTORE service.
Definition at line 157 of file gnunet-daemon-topology.c.
Referenced by cleaning_task(), connection_write_streams(), database_prepare(), database_setup(), evaluate_connection(), GNUNET_JSON_pack_array_incref(), GNUNET_JSON_pack_array_steal(), GNUNET_JSON_pack_blinded_message(), GNUNET_JSON_pack_blinded_sig(), GNUNET_JSON_pack_bool(), GNUNET_JSON_pack_data64_varsize(), GNUNET_JSON_pack_data_varsize(), GNUNET_JSON_pack_double(), GNUNET_JSON_pack_end_(), GNUNET_JSON_pack_int64(), GNUNET_JSON_pack_object_incref(), GNUNET_JSON_pack_object_steal(), GNUNET_JSON_pack_rsa_public_key(), GNUNET_JSON_pack_rsa_signature(), GNUNET_JSON_pack_string(), GNUNET_JSON_pack_timestamp(), GNUNET_JSON_pack_uint64(), GNUNET_JSON_pack_unblinded_signature(), GNUNET_PQ_connect(), GNUNET_PQ_connect2(), GNUNET_PQ_connect_with_cfg(), GNUNET_PQ_connect_with_cfg2(), GNUNET_PQ_make_prepare(), GNUNET_PQ_prepare_once(), GNUNET_PQ_prepare_statements(), GNUNET_SQ_make_prepare(), GNUNET_SQ_prepare(), GNUNET_TRANSPORT_TESTING_log_connect(), GNUNET_TRANSPORT_TESTING_log_disconnect(), handle_hello(), init_connection(), run(), and start_closing_period().
struct GNUNET_TRANSPORT_ApplicationHandle* transport |
Handle to Transport service.
Definition at line 162 of file gnunet-daemon-topology.c.
Referenced by attempt_connect(), cleaning_task(), and run().
|
static |
Identity of this peer.
Definition at line 167 of file gnunet-daemon-topology.c.
Referenced by attempt_connect(), connect_notify(), and core_init().
|
static |
Our private key.
Definition at line 172 of file gnunet-daemon-topology.c.
Referenced by cleaning_task(), and run().
|
static |
All of our current neighbours and all peers for which we have HELLOs.
So pretty much everyone. Maps peer identities to struct Peer *
values.
Definition at line 179 of file gnunet-daemon-topology.c.
Referenced by add_peer_task(), cleaning_task(), connect_notify(), consider_for_advertising(), free_peer(), make_peer(), process_peer(), run(), and schedule_next_hello().
|
static |
Handle for reporting statistics.
Definition at line 184 of file gnunet-daemon-topology.c.
Referenced by attempt_connect(), cleaning_task(), connect_notify(), disconnect_notify(), handle_hello(), run(), and schedule_next_hello().
|
static |
Task scheduled to asynchronously reconsider adding/removing peer connectivity suggestions.
Definition at line 190 of file gnunet-daemon-topology.c.
Referenced by add_peer_task(), cleaning_task(), and disconnect_notify().
|
static |
Number of peers that we are currently connected to.
Definition at line 195 of file gnunet-daemon-topology.c.
Referenced by attempt_connect(), connect_notify(), and disconnect_notify().
|
static |
Target number of connections.
Definition at line 200 of file gnunet-daemon-topology.c.
Referenced by attempt_connect(), disconnect_notify(), and run().
|
static |
Head of the linkd list to store the store context for hellos.
Definition at line 205 of file gnunet-daemon-topology.c.
Referenced by cleaning_task(), handle_hello(), and shc_cont().
|
static |
Tail of the linkd list to store the store context for hellos.
Definition at line 210 of file gnunet-daemon-topology.c.
Referenced by cleaning_task(), handle_hello(), and shc_cont().