GNUnet  0.11.x
Data Fields
CadetTunnel Struct Reference

Struct containing all information regarding a tunnel to a peer. More...

Collaboration diagram for CadetTunnel:
[legend]

Data Fields

struct CadetPeerdestination
 Destination of the tunnel. More...
 
struct GNUNET_CRYPTO_EcdhePublicKey peers_ephemeral_key
 Peer's ephemeral key, to recreate e_key and d_key when own ephemeral key changes. More...
 
struct GNUNET_CRYPTO_SymmetricSessionKey e_key
 Encryption ("our") key. More...
 
struct GNUNET_CRYPTO_SymmetricSessionKey d_key
 Decryption ("their") key. More...
 
struct CadetTunnelAxolotl ax
 Axolotl info. More...
 
struct CadetTunnelAxolotlunverified_ax
 Unverified Axolotl info, used only if we got a fresh KX (not a KX_AUTH) while our end of the tunnel was still up. More...
 
struct GNUNET_SCHEDULER_Taskdestroy_task
 Task scheduled if there are no more channels using the tunnel. More...
 
struct GNUNET_SCHEDULER_Taskmaintain_connections_task
 Task to trim connections if too many are present. More...
 
struct GNUNET_SCHEDULER_Tasksend_task
 Task to send messages from queue (if possible). More...
 
struct GNUNET_SCHEDULER_Taskkx_task
 Task to trigger KX. More...
 
struct GNUNET_MessageStreamTokenizermst
 Tokenizer for decrypted messages. More...
 
struct GNUNET_MQ_Handlemq
 Dispatcher for decrypted messages only (do NOT use for sending!). More...
 
struct CadetTConnectionconnection_ready_head
 DLL of ready connections that are actively used to reach the destination peer. More...
 
struct CadetTConnectionconnection_ready_tail
 DLL of ready connections that are actively used to reach the destination peer. More...
 
struct CadetTConnectionconnection_busy_head
 DLL of connections that we maintain that might be used to reach the destination peer. More...
 
struct CadetTConnectionconnection_busy_tail
 DLL of connections that we maintain that might be used to reach the destination peer. More...
 
struct GNUNET_CONTAINER_MultiHashMap32channels
 Channels inside this tunnel. More...
 
struct GNUNET_CADET_ChannelTunnelNumber next_ctn
 Channel ID for the next created channel in this tunnel. More...
 
struct CadetTunnelQueueEntrytq_head
 Queued messages, to transmit once tunnel gets connected. More...
 
struct CadetTunnelQueueEntrytq_tail
 Queued messages, to transmit once tunnel gets connected. More...
 
struct CadetTConnectioncurrent_ct
 Identification of the connection from which we are currently processing a message. More...
 
struct GNUNET_TIME_Relative kx_retry_delay
 How long do we wait until we retry the KX? More...
 
struct GNUNET_TIME_Absolute next_kx_attempt
 When do we try the next KX? More...
 
unsigned int num_ready_connections
 Number of connections in the connection_ready_head DLL. More...
 
unsigned int num_busy_connections
 Number of connections in the connection_busy_head DLL. More...
 
unsigned int unverified_attempts
 How often have we tried and failed to decrypt a message using the unverified KX material from unverified_ax? Used to stop trying after MAX_UNVERIFIED_ATTEMPTS. More...
 
unsigned int tq_len
 Number of entries in the tq_head DLL. More...
 
enum CadetTunnelEState estate
 State of the tunnel encryption. More...
 
int kx_auth_requested
 Force triggering KX_AUTH independent of estate. More...
 

Detailed Description

Struct containing all information regarding a tunnel to a peer.

Definition at line 302 of file gnunet-service-cadet_tunnels.c.

Field Documentation

◆ destination

struct CadetPeer* CadetTunnel::destination

◆ peers_ephemeral_key

struct GNUNET_CRYPTO_EcdhePublicKey CadetTunnel::peers_ephemeral_key

Peer's ephemeral key, to recreate e_key and d_key when own ephemeral key changes.

Definition at line 313 of file gnunet-service-cadet_tunnels.c.

◆ e_key

struct GNUNET_CRYPTO_SymmetricSessionKey CadetTunnel::e_key

Encryption ("our") key.

It is only "confirmed" if kx_ctx is NULL.

Definition at line 318 of file gnunet-service-cadet_tunnels.c.

◆ d_key

struct GNUNET_CRYPTO_SymmetricSessionKey CadetTunnel::d_key

Decryption ("their") key.

It is only "confirmed" if kx_ctx is NULL.

Definition at line 323 of file gnunet-service-cadet_tunnels.c.

◆ ax

struct CadetTunnelAxolotl CadetTunnel::ax

◆ unverified_ax

struct CadetTunnelAxolotl* CadetTunnel::unverified_ax

Unverified Axolotl info, used only if we got a fresh KX (not a KX_AUTH) while our end of the tunnel was still up.

In this case, we keep the fresh KX around but do not put it into action until we got encrypted payload that assures us of the authenticity of the KX.

Definition at line 337 of file gnunet-service-cadet_tunnels.c.

Referenced by destroy_tunnel(), GCT_handle_encrypted(), GCT_handle_kx(), GCT_handle_kx_auth(), and retry_kx().

◆ destroy_task

struct GNUNET_SCHEDULER_Task* CadetTunnel::destroy_task

Task scheduled if there are no more channels using the tunnel.

Definition at line 342 of file gnunet-service-cadet_tunnels.c.

Referenced by connection_ready_cb(), destroy_tunnel(), GCT_destroy_tunnel_now(), GCT_remove_channel(), and handle_plaintext_channel_open().

◆ maintain_connections_task

struct GNUNET_SCHEDULER_Task* CadetTunnel::maintain_connections_task

Task to trim connections if too many are present.

Definition at line 347 of file gnunet-service-cadet_tunnels.c.

Referenced by destroy_tunnel(), GCT_create_tunnel(), and maintain_connections_cb().

◆ send_task

struct GNUNET_SCHEDULER_Task* CadetTunnel::send_task

Task to send messages from queue (if possible).

Definition at line 352 of file gnunet-service-cadet_tunnels.c.

Referenced by destroy_tunnel(), GCT_change_estate(), GCT_handle_encrypted(), GCT_send(), and trigger_transmissions().

◆ kx_task

struct GNUNET_SCHEDULER_Task* CadetTunnel::kx_task

◆ mst

struct GNUNET_MessageStreamTokenizer* CadetTunnel::mst

Tokenizer for decrypted messages.

Definition at line 362 of file gnunet-service-cadet_tunnels.c.

Referenced by destroy_tunnel(), GCT_create_tunnel(), and GCT_handle_encrypted().

◆ mq

struct GNUNET_MQ_Handle* CadetTunnel::mq

Dispatcher for decrypted messages only (do NOT use for sending!).

Definition at line 367 of file gnunet-service-cadet_tunnels.c.

Referenced by destroy_tunnel(), GCT_create_tunnel(), and handle_decrypted().

◆ connection_ready_head

struct CadetTConnection* CadetTunnel::connection_ready_head

DLL of ready connections that are actively used to reach the destination peer.

Definition at line 372 of file gnunet-service-cadet_tunnels.c.

Referenced by connection_ready_cb(), destroy_tunnel(), GCT_connection_lost(), GCT_debug(), GCT_iterate_connections(), get_ready_connection(), and mark_connection_unready().

◆ connection_ready_tail

struct CadetTConnection* CadetTunnel::connection_ready_tail

DLL of ready connections that are actively used to reach the destination peer.

Definition at line 377 of file gnunet-service-cadet_tunnels.c.

Referenced by connection_ready_cb(), GCT_connection_lost(), and mark_connection_unready().

◆ connection_busy_head

struct CadetTConnection* CadetTunnel::connection_busy_head

DLL of connections that we maintain that might be used to reach the destination peer.

Definition at line 382 of file gnunet-service-cadet_tunnels.c.

Referenced by connection_ready_cb(), consider_path_cb(), destroy_tunnel(), GCT_add_inbound_connection(), GCT_connection_lost(), GCT_debug(), GCT_iterate_connections(), and mark_connection_unready().

◆ connection_busy_tail

struct CadetTConnection* CadetTunnel::connection_busy_tail

DLL of connections that we maintain that might be used to reach the destination peer.

Definition at line 387 of file gnunet-service-cadet_tunnels.c.

Referenced by connection_ready_cb(), consider_path_cb(), GCT_add_inbound_connection(), GCT_connection_lost(), and mark_connection_unready().

◆ channels

struct GNUNET_CONTAINER_MultiHashMap32* CadetTunnel::channels

◆ next_ctn

struct GNUNET_CADET_ChannelTunnelNumber CadetTunnel::next_ctn

Channel ID for the next created channel in this tunnel.

Definition at line 398 of file gnunet-service-cadet_tunnels.c.

◆ tq_head

struct CadetTunnelQueueEntry* CadetTunnel::tq_head

Queued messages, to transmit once tunnel gets connected.

Definition at line 403 of file gnunet-service-cadet_tunnels.c.

Referenced by destroy_tunnel(), GCT_send(), GCT_send_cancel(), trigger_transmissions(), and try_send_normal_payload().

◆ tq_tail

struct CadetTunnelQueueEntry* CadetTunnel::tq_tail

Queued messages, to transmit once tunnel gets connected.

Definition at line 408 of file gnunet-service-cadet_tunnels.c.

Referenced by GCT_send(), GCT_send_cancel(), and try_send_normal_payload().

◆ current_ct

struct CadetTConnection* CadetTunnel::current_ct

Identification of the connection from which we are currently processing a message.

Only valid (non-NULL) during handle_decrypted() and the handle-*()-functions called from our mq during that function.

Definition at line 415 of file gnunet-service-cadet_tunnels.c.

Referenced by GCT_handle_encrypted(), handle_decrypted(), handle_plaintext_channel_destroy(), handle_plaintext_channel_open(), handle_plaintext_channel_open_ack(), handle_plaintext_data(), and handle_plaintext_data_ack().

◆ kx_retry_delay

struct GNUNET_TIME_Relative CadetTunnel::kx_retry_delay

How long do we wait until we retry the KX?

Definition at line 420 of file gnunet-service-cadet_tunnels.c.

Referenced by GCT_create_tunnel(), send_kx(), and send_kx_auth().

◆ next_kx_attempt

struct GNUNET_TIME_Absolute CadetTunnel::next_kx_attempt

When do we try the next KX?

Definition at line 425 of file gnunet-service-cadet_tunnels.c.

Referenced by connection_ready_cb(), GCT_handle_kx_auth(), send_kx(), and send_kx_auth().

◆ num_ready_connections

unsigned int CadetTunnel::num_ready_connections

Number of connections in the connection_ready_head DLL.

Definition at line 430 of file gnunet-service-cadet_tunnels.c.

Referenced by connection_ready_cb(), GCT_connection_lost(), GCT_count_any_connections(), and mark_connection_unready().

◆ num_busy_connections

unsigned int CadetTunnel::num_busy_connections

Number of connections in the connection_busy_head DLL.

Definition at line 435 of file gnunet-service-cadet_tunnels.c.

Referenced by connection_ready_cb(), consider_path_cb(), GCT_add_inbound_connection(), GCT_connection_lost(), GCT_count_any_connections(), and mark_connection_unready().

◆ unverified_attempts

unsigned int CadetTunnel::unverified_attempts

How often have we tried and failed to decrypt a message using the unverified KX material from unverified_ax? Used to stop trying after MAX_UNVERIFIED_ATTEMPTS.

Definition at line 442 of file gnunet-service-cadet_tunnels.c.

Referenced by GCT_handle_encrypted(), and GCT_handle_kx().

◆ tq_len

unsigned int CadetTunnel::tq_len

Number of entries in the tq_head DLL.

Definition at line 447 of file gnunet-service-cadet_tunnels.c.

Referenced by GCT_debug().

◆ estate

enum CadetTunnelEState CadetTunnel::estate

◆ kx_auth_requested

int CadetTunnel::kx_auth_requested

Force triggering KX_AUTH independent of estate.

Definition at line 457 of file gnunet-service-cadet_tunnels.c.

Referenced by connection_ready_cb(), and send_kx_auth().


The documentation for this struct was generated from the following file: