Internal message used by transport for distance vector learning. More...
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... | |
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 initiator should always try to forward to the initiator.
Definition at line 678 of file gnunet-service-transport.c.
struct GNUNET_MessageHeader TransportDVLearnMessage::header |
Type is GNUNET_MESSAGE_TYPE_TRANSPORT_DV_LEARN.
Definition at line 683 of file gnunet-service-transport.c.
Referenced by check_dv_learn(), forward_dv_learn(), and start_dv_learn().
uint16_t TransportDVLearnMessage::num_hops |
Number of hops this messages has travelled, in NBO.
Zero if sent by initiator.
Definition at line 689 of file gnunet-service-transport.c.
Referenced by check_dv_learn(), forward_dv_learn(), handle_dv_learn(), and start_dv_learn().
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 699 of file gnunet-service-transport.c.
Referenced by forward_dv_learn(), handle_dv_learn(), and start_dv_learn().
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 706 of file gnunet-service-transport.c.
Referenced by forward_dv_learn(), and start_dv_learn().
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 720 of file gnunet-service-transport.c.
Referenced by forward_dv_learn(), handle_dv_learn(), and start_dv_learn().
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 726 of file gnunet-service-transport.c.
Referenced by forward_dv_learn(), handle_dv_learn(), and start_dv_learn().
struct GNUNET_PeerIdentity TransportDVLearnMessage::initiator |
Identity of the peer that started this learning activity.
Definition at line 731 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().
struct GNUNET_CRYPTO_ChallengeNonceP TransportDVLearnMessage::challenge |
Challenge value used by the initiator to re-identify the path.
Definition at line 736 of file gnunet-service-transport.c.
Referenced by forward_dv_learn(), handle_dv_learn(), and start_dv_learn().