GNUnet 0.21.1
TransportDVLearnMessage Struct Reference

Internal message used by transport for distance vector learning. More...

Collaboration diagram for TransportDVLearnMessage:
[legend]

Data Fields

struct GNUNET_MessageHeader header
 Type is GNUNET_MESSAGE_TYPE_TRANSPORT_DV_LEARN. More...
 
uint16_t num_hops
 Number of hops this messages has travelled, in NBO. More...
 
uint16_t bidirectional
 Bitmask of the last 16 hops indicating whether they are confirmed available (without DV) in both directions or not, in NBO. More...
 
struct GNUNET_TIME_RelativeNBO non_network_delay
 Peers receiving this message and delaying forwarding to other peers for any reason should increment this value by the non-network delay created by the peer. More...
 
struct GNUNET_TIME_AbsoluteNBO monotonic_time
 Time at the initiator when generating the signature. More...
 
struct GNUNET_CRYPTO_EddsaSignature init_sig
 Signature of this hop over the path, of purpose GNUNET_SIGNATURE_PURPOSE_TRANSPORT_DV_INITIATOR. More...
 
struct GNUNET_PeerIdentity initiator
 Identity of the peer that started this learning activity. More...
 
struct GNUNET_CRYPTO_ChallengeNonceP challenge
 Challenge value used by the initiator to re-identify the path. More...
 

Detailed Description

Internal message used by transport for distance vector learning.

If num_hops does not exceed the threshold, peers should append themselves to the peer list and flood the message (possibly only to a subset of their neighbours to limit discoverability of the network topology). To the extend that the bidirectional bits are set, peers may learn the inverse paths even if they did not initiate.

Unless received on a bidirectional queue and num_hops just zero, peers that can forward to the initator should always try to forward to the initiator.

Definition at line 672 of file gnunet-service-transport.c.

Field Documentation

◆ header

struct GNUNET_MessageHeader TransportDVLearnMessage::header

◆ num_hops

uint16_t TransportDVLearnMessage::num_hops

Number of hops this messages has travelled, in NBO.

Zero if sent by initiator.

Definition at line 683 of file gnunet-service-transport.c.

Referenced by check_dv_learn(), forward_dv_learn(), handle_dv_learn(), and start_dv_learn().

◆ bidirectional

uint16_t TransportDVLearnMessage::bidirectional

Bitmask of the last 16 hops indicating whether they are confirmed available (without DV) in both directions or not, in NBO.

Used to possibly instantly learn a path in both directions. Each peer should shift this value by one to the left, and then set the lowest bit IF the current sender can be reached from it (without DV routing).

Definition at line 693 of file gnunet-service-transport.c.

Referenced by forward_dv_learn(), handle_dv_learn(), and start_dv_learn().

◆ non_network_delay

struct GNUNET_TIME_RelativeNBO TransportDVLearnMessage::non_network_delay

Peers receiving this message and delaying forwarding to other peers for any reason should increment this value by the non-network delay created by the peer.

Definition at line 700 of file gnunet-service-transport.c.

Referenced by forward_dv_learn(), handle_dv_learn(), and start_dv_learn().

◆ monotonic_time

struct GNUNET_TIME_AbsoluteNBO TransportDVLearnMessage::monotonic_time

Time at the initiator when generating the signature.

Note that the receiver MUST IGNORE the absolute time, and only interpret the value as a mononic time and reject "older" values than the last one observed. This is necessary as we do not want to require synchronized clocks and may not have a bidirectional communication channel.

Even with this, there is no real guarantee against replay achieved here, unless the latest timestamp is persisted. Persistence should be provided via PEERSTORE if possible.

Definition at line 714 of file gnunet-service-transport.c.

Referenced by forward_dv_learn(), handle_dv_learn(), and start_dv_learn().

◆ init_sig

struct GNUNET_CRYPTO_EddsaSignature TransportDVLearnMessage::init_sig

Signature of this hop over the path, of purpose GNUNET_SIGNATURE_PURPOSE_TRANSPORT_DV_INITIATOR.

Definition at line 720 of file gnunet-service-transport.c.

Referenced by forward_dv_learn(), handle_dv_learn(), and start_dv_learn().

◆ initiator

struct GNUNET_PeerIdentity TransportDVLearnMessage::initiator

Identity of the peer that started this learning activity.

Definition at line 725 of file gnunet-service-transport.c.

Referenced by check_dv_learn(), dv_neighbour_selection(), dv_neighbour_transmission(), forward_dv_learn(), handle_dv_learn(), and start_dv_learn().

◆ challenge

struct GNUNET_CRYPTO_ChallengeNonceP TransportDVLearnMessage::challenge

Challenge value used by the initiator to re-identify the path.

Definition at line 730 of file gnunet-service-transport.c.

Referenced by forward_dv_learn(), handle_dv_learn(), and start_dv_learn().


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