high-level P2P messaging More...
#include "platform.h"
#include <gcrypt.h>
#include "gnunet_util_lib.h"
#include "gnunet-service-core.h"
#include "gnunet-service-core_kx.h"
#include "gnunet-service-core_sessions.h"
#include "gnunet-service-core_typemap.h"
#include "gnunet_constants.h"
Go to the source code of this file.
Data Structures | |
struct | GSC_Client |
Data structure for each client connected to the CORE service. More... | |
struct | TokenizerContext |
Closure for the #client_tokenizer_callback(). More... | |
Macros | |
#define | SOFT_MAX_QUEUE 128 |
How many messages do we queue up at most for any client? This can cause messages to be dropped if clients do not process them fast enough! Note that this is a soft limit; we try to keep a few larger messages above the limit. More... | |
#define | HARD_MAX_QUEUE 256 |
How many messages do we queue up at most for any client? This can cause messages to be dropped if clients do not process them fast enough! Note that this is the hard limit. More... | |
Functions | |
static int | type_match (uint16_t type, struct GSC_Client *c) |
Test if the client is interested in messages of the given type. More... | |
static int | check_client_init (void *cls, const struct InitMessage *im) |
Check GNUNET_MESSAGE_TYPE_CORE_INIT request. More... | |
static void | handle_client_init (void *cls, const struct InitMessage *im) |
Handle GNUNET_MESSAGE_TYPE_CORE_INIT request. More... | |
void | GSC_CLIENTS_reject_request (struct GSC_ClientActiveRequest *car, int drop_client) |
We will never be ready to transmit the given message in (disconnect or invalid request). More... | |
void | GSC_CLIENTS_solicit_request (struct GSC_ClientActiveRequest *car) |
Tell a client that we are ready to receive the message. More... | |
static void | handle_client_send_request (void *cls, const struct SendMessageRequest *req) |
Handle GNUNET_MESSAGE_TYPE_CORE_SEND_REQUEST message. More... | |
static int | tokenized_cb (void *cls, const struct GNUNET_MessageHeader *message) |
Functions with this signature are called whenever a complete message is received by the tokenizer. More... | |
static int | check_client_send (void *cls, const struct SendMessage *sm) |
Check GNUNET_MESSAGE_TYPE_CORE_SEND request. More... | |
static void | handle_client_send (void *cls, const struct SendMessage *sm) |
Handle GNUNET_MESSAGE_TYPE_CORE_SEND request. More... | |
static int | destroy_active_client_request (void *cls, const struct GNUNET_PeerIdentity *key, void *value) |
Free client request records. More... | |
static void * | client_connect_cb (void *cls, struct GNUNET_SERVICE_Client *client, struct GNUNET_MQ_Handle *mq) |
A client connected, set up. More... | |
static void | client_disconnect_cb (void *cls, struct GNUNET_SERVICE_Client *client, void *app_ctx) |
A client disconnected, clean up. More... | |
void | GSC_CLIENTS_notify_client_about_neighbour (struct GSC_Client *client, const struct GNUNET_PeerIdentity *neighbour, const struct GSC_TypeMap *tmap_old, const struct GSC_TypeMap *tmap_new) |
Notify a particular client about a change to existing connection to one of our neighbours (check if the client is interested). More... | |
void | GSC_CLIENTS_notify_clients_about_neighbour (const struct GNUNET_PeerIdentity *neighbour, const struct GSC_TypeMap *tmap_old, const struct GSC_TypeMap *tmap_new) |
Notify all clients about a change to existing session. More... | |
void | GSC_CLIENTS_deliver_message (const struct GNUNET_PeerIdentity *sender, const struct GNUNET_MessageHeader *msg, uint16_t msize, uint32_t options) |
Deliver P2P message to interested clients. More... | |
static void | shutdown_task (void *cls) |
Last task run during shutdown. More... | |
static void | handle_client_monitor_peers (void *cls, const struct GNUNET_MessageHeader *message) |
Handle GNUNET_MESSAGE_TYPE_CORE_MONITOR_PEERS request. More... | |
static void | run (void *cls, const struct GNUNET_CONFIGURATION_Handle *c, struct GNUNET_SERVICE_Handle *service) |
Initiate core service. More... | |
GNUNET_SERVICE_MAIN (GNUNET_OS_project_data_gnunet(), "core", GNUNET_SERVICE_OPTION_NONE, &run, &client_connect_cb, &client_disconnect_cb, NULL, GNUNET_MQ_hd_var_size(client_init, GNUNET_MESSAGE_TYPE_CORE_INIT, struct InitMessage, NULL), GNUNET_MQ_hd_fixed_size(client_monitor_peers, GNUNET_MESSAGE_TYPE_CORE_MONITOR_PEERS, struct GNUNET_MessageHeader, NULL), GNUNET_MQ_hd_fixed_size(client_send_request, GNUNET_MESSAGE_TYPE_CORE_SEND_REQUEST, struct SendMessageRequest, NULL), GNUNET_MQ_hd_var_size(client_send, GNUNET_MESSAGE_TYPE_CORE_SEND, struct SendMessage, NULL), GNUNET_MQ_handler_end()) | |
Define "main" method using service macro. More... | |
Variables | |
struct GNUNET_PeerIdentity | GSC_my_identity |
Our identity. More... | |
const struct GNUNET_CONFIGURATION_Handle * | GSC_cfg |
Our configuration. More... | |
struct GNUNET_STATISTICS_Handle * | GSC_stats |
For creating statistics. More... | |
static uint32_t | all_client_options |
Big "or" of all client options. More... | |
static struct GSC_Client * | client_head |
Head of linked list of our clients. More... | |
static struct GSC_Client * | client_tail |
Tail of linked list of our clients. More... | |
high-level P2P messaging
Definition in file gnunet-service-core.c.
#define SOFT_MAX_QUEUE 128 |
How many messages do we queue up at most for any client? This can cause messages to be dropped if clients do not process them fast enough! Note that this is a soft limit; we try to keep a few larger messages above the limit.
Definition at line 41 of file gnunet-service-core.c.
#define HARD_MAX_QUEUE 256 |
How many messages do we queue up at most for any client? This can cause messages to be dropped if clients do not process them fast enough! Note that this is the hard limit.
Definition at line 48 of file gnunet-service-core.c.
|
static |
Test if the client is interested in messages of the given type.
type | message type |
c | client to test |
Definition at line 153 of file gnunet-service-core.c.
References GNUNET_NO, GNUNET_YES, GSC_Client::options, GSC_Client::tcnt, type, and GSC_Client::types.
Referenced by GSC_CLIENTS_deliver_message().
|
static |
Check GNUNET_MESSAGE_TYPE_CORE_INIT request.
cls | client that sent GNUNET_MESSAGE_TYPE_CORE_INIT |
im | the struct InitMessage |
Definition at line 175 of file gnunet-service-core.c.
References GNUNET_OK.
|
static |
Handle GNUNET_MESSAGE_TYPE_CORE_INIT request.
cls | client that sent GNUNET_MESSAGE_TYPE_CORE_INIT |
im | the struct InitMessage |
Definition at line 188 of file gnunet-service-core.c.
References all_client_options, GSC_Client::client, GSC_Client::connectmap, env, GNUNET_assert, GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY, GNUNET_CONTAINER_multipeermap_put(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_log, GNUNET_malloc, GNUNET_MESSAGE_TYPE_CORE_INIT_REPLY, GNUNET_MQ_msg, GNUNET_MQ_send(), GNUNET_SERVICE_client_continue(), GNUNET_YES, GSC_Client::got_init, GSC_my_identity, GSC_SESSIONS_notify_client_about_sessions(), GSC_TYPEMAP_add(), InitMessage::header, GSC_Client::mq, InitReplyMessage::my_identity, InitMessage::options, GSC_Client::options, InitReplyMessage::reserved, GNUNET_MessageHeader::size, GSC_Client::tcnt, and GSC_Client::types.
void GSC_CLIENTS_reject_request | ( | struct GSC_ClientActiveRequest * | car, |
int | drop_client | ||
) |
We will never be ready to transmit the given message in (disconnect or invalid request).
Frees resources associated with car. We don't explicitly tell the client, it'll learn with the disconnect (or violated the protocol).
car | request that now permanently failed; the responsibility for the handle is now returned to CLIENTS (SESSIONS is done with it). |
drop_client | GNUNET_YES if the client violated the protocol and we should thus drop the connection |
Definition at line 240 of file gnunet-service-core.c.
References GSC_Client::client, GSC_ClientActiveRequest::client_handle, GNUNET_assert, GNUNET_CONTAINER_multipeermap_remove(), GNUNET_free, GNUNET_SERVICE_client_drop(), GNUNET_YES, GSC_Client::requests, and GSC_ClientActiveRequest::target.
Referenced by GSC_CLIENTS_solicit_request(), GSC_SESSIONS_end(), and GSC_SESSIONS_queue_request().
void GSC_CLIENTS_solicit_request | ( | struct GSC_ClientActiveRequest * | car | ) |
Tell a client that we are ready to receive the message.
car | request that is now ready; the responsibility for the handle remains shared between CLIENTS and SESSIONS after this call. |
Definition at line 262 of file gnunet-service-core.c.
References GSC_ClientActiveRequest::client_handle, GSC_Client::connectmap, GSC_ClientActiveRequest::deadline, env, GNUNET_assert, GNUNET_CONSTANTS_LATENCY_WARN, GNUNET_CONTAINER_multipeermap_contains(), GNUNET_ERROR_TYPE_WARNING, GNUNET_i2s(), GNUNET_log, GNUNET_memcmp, GNUNET_MESSAGE_TYPE_CORE_SEND_READY, GNUNET_MQ_msg, GNUNET_MQ_send(), GNUNET_NO, GNUNET_STRINGS_relative_time_to_string(), GNUNET_TIME_absolute_get_duration(), GNUNET_YES, GSC_CLIENTS_reject_request(), GSC_my_identity, GSC_SESSIONS_dequeue_request(), GSC_Client::mq, GSC_ClientActiveRequest::msize, SendMessageReady::peer, GSC_ClientActiveRequest::priority, GSC_ClientActiveRequest::received_time, GNUNET_TIME_Relative::rel_value_us, SendMessageReady::size, SendMessageReady::smr_id, GSC_ClientActiveRequest::smr_id, and GSC_ClientActiveRequest::target.
Referenced by handle_client_send_request(), and solicit_messages().
|
static |
Handle GNUNET_MESSAGE_TYPE_CORE_SEND_REQUEST message.
cls | client that sent a GNUNET_MESSAGE_TYPE_CORE_SEND_REQUEST |
req | the struct SendMessageRequest |
Definition at line 307 of file gnunet-service-core.c.
References GSC_Client::client, GSC_ClientActiveRequest::client_handle, GSC_Client::connectmap, SendMessageRequest::deadline, GSC_ClientActiveRequest::deadline, gettext_noop, GNUNET_assert, GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST, GNUNET_CONTAINER_multipeermap_contains(), GNUNET_CONTAINER_multipeermap_create(), GNUNET_CONTAINER_multipeermap_get(), GNUNET_CONTAINER_multipeermap_put(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_i2s(), GNUNET_log, GNUNET_memcmp, GNUNET_new, GNUNET_NO, GNUNET_OK, GNUNET_SERVICE_client_continue(), GNUNET_STATISTICS_update(), GNUNET_TIME_absolute_get(), GNUNET_TIME_absolute_ntoh(), GNUNET_YES, GSC_CLIENTS_solicit_request(), GSC_my_identity, GSC_SESSIONS_dequeue_request(), GSC_SESSIONS_queue_request(), GSC_stats, GSC_ClientActiveRequest::msize, SendMessageRequest::peer, SendMessageRequest::priority, GSC_ClientActiveRequest::priority, GSC_ClientActiveRequest::received_time, GSC_Client::requests, SendMessageRequest::size, SendMessageRequest::smr_id, GSC_ClientActiveRequest::smr_id, GSC_ClientActiveRequest::target, and GSC_ClientActiveRequest::was_solicited.
|
static |
Functions with this signature are called whenever a complete message is received by the tokenizer.
Used by handle_client_send() for dispatching messages from clients to either the SESSION subsystem or other CLIENT (for loopback).
cls | reservation request (struct TokenizerContext ) |
message | the actual message |
Definition at line 411 of file gnunet-service-core.c.
References gettext_noop, GNUNET_CORE_OPTION_SEND_FULL_INBOUND, GNUNET_CORE_OPTION_SEND_FULL_OUTBOUND, GNUNET_CORE_OPTION_SEND_HDR_INBOUND, GNUNET_CORE_OPTION_SEND_HDR_OUTBOUND, GNUNET_ERROR_TYPE_DEBUG, GNUNET_i2s(), GNUNET_log, GNUNET_memcmp, GNUNET_NO, GNUNET_OK, GNUNET_snprintf(), GNUNET_STATISTICS_update(), GSC_CLIENTS_deliver_message(), GSC_my_identity, GSC_SESSIONS_transmit(), GSC_stats, GNUNET_MessageHeader::size, GSC_ClientActiveRequest::target, tc, and GNUNET_MessageHeader::type.
Referenced by handle_client_send().
|
static |
Check GNUNET_MESSAGE_TYPE_CORE_SEND request.
cls | the struct GSC_Client |
sm | the struct SendMessage |
Definition at line 474 of file gnunet-service-core.c.
References GNUNET_OK.
|
static |
Handle GNUNET_MESSAGE_TYPE_CORE_SEND request.
cls | the struct GSC_Client |
sm | the struct SendMessage |
Definition at line 487 of file gnunet-service-core.c.
References GSC_Client::client, gettext_noop, GNUNET_assert, GNUNET_CONSTANTS_LATENCY_WARN, GNUNET_CONTAINER_multipeermap_get(), GNUNET_CONTAINER_multipeermap_remove(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_ERROR_TYPE_WARNING, GNUNET_free, GNUNET_i2s(), GNUNET_log, GNUNET_MST_create(), GNUNET_MST_destroy(), GNUNET_MST_from_buffer(), GNUNET_NO, GNUNET_SERVICE_client_continue(), GNUNET_STATISTICS_update(), GNUNET_STRINGS_relative_time_to_string(), GNUNET_TIME_absolute_get_duration(), GNUNET_YES, GSC_SESSIONS_dequeue_request(), GSC_stats, SendMessage::header, SendMessage::peer, SendMessage::priority, GNUNET_TIME_Relative::rel_value_us, GSC_Client::requests, GNUNET_MessageHeader::size, tc, and tokenized_cb().
|
static |
Free client request records.
cls | NULL |
key | identity of peer for which this is an active request |
value | the struct GSC_ClientActiveRequest to free |
Definition at line 551 of file gnunet-service-core.c.
References GSC_ClientActiveRequest::client_handle, GNUNET_assert, GNUNET_CONTAINER_multipeermap_remove(), GNUNET_free, GNUNET_YES, GSC_SESSIONS_dequeue_request(), GSC_Client::requests, GSC_ClientActiveRequest::target, and value.
Referenced by client_disconnect_cb().
|
static |
A client connected, set up.
cls | closure |
client | identification of the client |
mq | message queue to talk to client |
Definition at line 577 of file gnunet-service-core.c.
References GSC_Client::client, client_head, client_tail, GSC_Client::connectmap, GNUNET_CONTAINER_DLL_insert, GNUNET_CONTAINER_multipeermap_create(), GNUNET_new, GNUNET_NO, mq, and GSC_Client::mq.
|
static |
A client disconnected, clean up.
cls | closure |
client | identification of the client |
app_ctx | our struct GST_Client for client |
Definition at line 600 of file gnunet-service-core.c.
References all_client_options, GSC_Client::client, client_head, client_tail, GSC_Client::connectmap, destroy_active_client_request(), GNUNET_CONTAINER_DLL_remove, GNUNET_CONTAINER_multipeermap_destroy(), GNUNET_CONTAINER_multipeermap_iterate(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_free, GNUNET_log, GSC_TYPEMAP_remove(), GSC_Client::next, GSC_Client::options, GSC_Client::requests, GSC_Client::tcnt, and GSC_Client::types.
void GSC_CLIENTS_notify_client_about_neighbour | ( | struct GSC_Client * | client, |
const struct GNUNET_PeerIdentity * | neighbour, | ||
const struct GSC_TypeMap * | tmap_old, | ||
const struct GSC_TypeMap * | tmap_new | ||
) |
Notify a particular client about a change to existing connection to one of our neighbours (check if the client is interested).
Called from GSC_SESSIONS_notify_client_about_sessions().
client | client to notify |
neighbour | identity of the neighbour that changed status |
tmap_old | previous type map for the neighbour, NULL for connect |
tmap_new | updated type map for the neighbour, NULL for disconnect |
Definition at line 644 of file gnunet-service-core.c.
References GSC_Client::connectmap, env, GNUNET_assert, GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY, GNUNET_CONTAINER_multipeermap_contains(), GNUNET_CONTAINER_multipeermap_put(), GNUNET_CONTAINER_multipeermap_remove(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_i2s(), GNUNET_log, GNUNET_MESSAGE_TYPE_CORE_NOTIFY_CONNECT, GNUNET_MESSAGE_TYPE_CORE_NOTIFY_DISCONNECT, GNUNET_MQ_msg, GNUNET_MQ_send(), GNUNET_NO, GNUNET_YES, GSC_Client::got_init, GSC_TYPEMAP_test_match(), GSC_Client::mq, ConnectNotifyMessage::peer, DisconnectNotifyMessage::peer, ConnectNotifyMessage::reserved, DisconnectNotifyMessage::reserved, GSC_Client::tcnt, and GSC_Client::types.
Referenced by GSC_CLIENTS_notify_clients_about_neighbour(), and notify_client_about_session().
void GSC_CLIENTS_notify_clients_about_neighbour | ( | const struct GNUNET_PeerIdentity * | neighbour, |
const struct GSC_TypeMap * | tmap_old, | ||
const struct GSC_TypeMap * | tmap_new | ||
) |
Notify all clients about a change to existing session.
Called from SESSIONS whenever there is a change in sessions or types processed by the respective peer.
neighbour | identity of the neighbour that changed status |
tmap_old | previous type map for the neighbour, NULL for connect |
tmap_new | updated type map for the neighbour, NULL for disconnect |
Definition at line 725 of file gnunet-service-core.c.
References client_head, GSC_CLIENTS_notify_client_about_neighbour(), and GSC_Client::next.
Referenced by GSC_SESSIONS_add_to_typemap(), GSC_SESSIONS_create(), GSC_SESSIONS_end(), and GSC_SESSIONS_set_typemap().
void GSC_CLIENTS_deliver_message | ( | const struct GNUNET_PeerIdentity * | sender, |
const struct GNUNET_MessageHeader * | msg, | ||
uint16_t | msize, | ||
uint32_t | options | ||
) |
Deliver P2P message to interested clients.
Caller must have checked that the sending peer actually lists the given message type as one of its types.
sender | peer who sent us the message |
msg | the message |
msize | number of bytes to transmit |
options | options for checking which clients should receive the message |
Definition at line 752 of file gnunet-service-core.c.
References all_client_options, client_head, env, gettext_noop, GNUNET_assert, GNUNET_break, GNUNET_CONTAINER_multipeermap_contains(), GNUNET_CORE_OPTION_SEND_FULL_INBOUND, GNUNET_CORE_OPTION_SEND_FULL_OUTBOUND, GNUNET_CORE_OPTION_SEND_HDR_INBOUND, GNUNET_CORE_OPTION_SEND_HDR_OUTBOUND, GNUNET_CRYPTO_QUALITY_WEAK, GNUNET_CRYPTO_random_u32(), GNUNET_ERROR_TYPE_BULK, GNUNET_ERROR_TYPE_DEBUG, GNUNET_ERROR_TYPE_INFO, GNUNET_i2s(), GNUNET_log, GNUNET_MAX_MESSAGE_SIZE, GNUNET_memcpy, GNUNET_MESSAGE_TYPE_CORE_NOTIFY_INBOUND, GNUNET_MESSAGE_TYPE_CORE_NOTIFY_OUTBOUND, GNUNET_MQ_get_length(), GNUNET_MQ_msg_extra, GNUNET_MQ_send(), GNUNET_NO, GNUNET_snprintf(), GNUNET_STATISTICS_update(), GNUNET_YES, GSC_SESSIONS_add_to_typemap(), GSC_stats, HARD_MAX_QUEUE, msg, GSC_Client::next, options, NotifyTrafficMessage::peer, GNUNET_MessageHeader::size, size, SOFT_MAX_QUEUE, GNUNET_MessageHeader::type, and type_match().
Referenced by deliver_message(), and tokenized_cb().
|
static |
Last task run during shutdown.
Disconnects us from the transport.
cls | NULL, unused |
Definition at line 863 of file gnunet-service-core.c.
References GSC_Client::client, client_head, GNUNET_ERROR_TYPE_DEBUG, GNUNET_log, GNUNET_NO, GNUNET_SERVICE_client_drop(), GNUNET_STATISTICS_destroy(), GSC_cfg, GSC_KX_done(), GSC_SESSIONS_done(), GSC_stats, and GSC_TYPEMAP_done().
Referenced by run().
|
static |
Handle GNUNET_MESSAGE_TYPE_CORE_MONITOR_PEERS request.
For this request type, the client does not have to have transmitted an INIT request. All current peers are returned, regardless of which message types they accept.
cls | client sending the iteration request |
message | iteration request message |
Definition at line 892 of file gnunet-service-core.c.
References GSC_Client::client, GNUNET_SERVICE_client_continue(), GSC_KX_handle_client_monitor_peers(), and GSC_Client::mq.
|
static |
Initiate core service.
cls | closure |
c | configuration to use |
service | the initialized service |
Definition at line 910 of file gnunet-service-core.c.
References _, GNUNET_CONFIGURATION_get_value_filename(), GNUNET_CRYPTO_eddsa_key_from_file(), GNUNET_ERROR_TYPE_ERROR, GNUNET_ERROR_TYPE_INFO, GNUNET_free, GNUNET_i2s(), GNUNET_log, GNUNET_OK, GNUNET_SCHEDULER_add_shutdown(), GNUNET_SCHEDULER_shutdown(), GNUNET_SERVICE_resume(), GNUNET_SERVICE_suspend(), GNUNET_STATISTICS_create(), GNUNET_SYSERR, GNUNET_YES, GSC_cfg, GSC_KX_init(), GSC_my_identity, GSC_SESSIONS_init(), GSC_stats, GSC_TYPEMAP_init(), pk, service, and shutdown_task().
GNUNET_SERVICE_MAIN | ( | GNUNET_OS_project_data_gnunet() | , |
"core" | , | ||
GNUNET_SERVICE_OPTION_NONE | , | ||
& | run, | ||
& | client_connect_cb, | ||
& | client_disconnect_cb, | ||
NULL | , | ||
GNUNET_MQ_hd_var_size(client_init, GNUNET_MESSAGE_TYPE_CORE_INIT, struct InitMessage, NULL) | , | ||
GNUNET_MQ_hd_fixed_size(client_monitor_peers, GNUNET_MESSAGE_TYPE_CORE_MONITOR_PEERS, struct GNUNET_MessageHeader, NULL) | , | ||
GNUNET_MQ_hd_fixed_size(client_send_request, GNUNET_MESSAGE_TYPE_CORE_SEND_REQUEST, struct SendMessageRequest, NULL) | , | ||
GNUNET_MQ_hd_var_size(client_send, GNUNET_MESSAGE_TYPE_CORE_SEND, struct SendMessage, NULL) | , | ||
GNUNET_MQ_handler_end() | |||
) |
Define "main" method using service macro.
struct GNUNET_PeerIdentity GSC_my_identity |
Our identity.
Definition at line 117 of file gnunet-service-core.c.
Referenced by derive_session_keys(), GSC_CLIENTS_solicit_request(), GSC_KX_init(), GSC_SESSIONS_add_to_typemap(), GSC_SESSIONS_dequeue_request(), handle_client_init(), handle_client_send_request(), handle_encrypted(), handle_ping(), handle_pong(), handle_transport_notify_connect(), run(), sign_ephemeral_key(), and tokenized_cb().
const struct GNUNET_CONFIGURATION_Handle* GSC_cfg |
Our configuration.
Definition at line 122 of file gnunet-service-core.c.
Referenced by GSC_KX_init(), run(), shutdown_task(), and sign_ephemeral_key().
struct GNUNET_STATISTICS_Handle* GSC_stats |
For creating statistics.
Definition at line 127 of file gnunet-service-core.c.
Referenced by broadcast_my_type_map(), deliver_message(), do_decrypt(), do_encrypt(), GSC_CLIENTS_deliver_message(), GSC_SESSIONS_confirm_typemap(), GSC_SESSIONS_create(), GSC_SESSIONS_end(), GSC_TYPEMAP_get_from_message(), handle_client_send(), handle_client_send_request(), handle_encrypted(), handle_ephemeral_key(), handle_ping(), handle_pong(), handle_transport_notify_connect(), handle_transport_notify_disconnect(), run(), send_keep_alive(), send_ping(), shutdown_task(), tokenized_cb(), transmit_typemap_task(), and try_transmission().
|
static |
Big "or" of all client options.
Definition at line 132 of file gnunet-service-core.c.
Referenced by client_disconnect_cb(), GSC_CLIENTS_deliver_message(), and handle_client_init().
|
static |
Head of linked list of our clients.
Definition at line 137 of file gnunet-service-core.c.
Referenced by client_connect_cb(), client_disconnect_cb(), GSC_CLIENTS_deliver_message(), GSC_CLIENTS_notify_clients_about_neighbour(), and shutdown_task().
|
static |
Tail of linked list of our clients.
Definition at line 142 of file gnunet-service-core.c.
Referenced by client_connect_cb(), and client_disconnect_cb().