NGI Assure project: Layer-2-Overlay

Implementation details milestone 9


Added api to store hellos with peerstore service


This functionality was formerly implemented in the peerinfo service.

See revision 0f8b712.

Added api to get notified when hellos are stored with peerstore service


This functionality was formerly implemented in the peerinfo service. After storing hellos with the peerstore service this was needed there.

See revision 55a25ef.

Changed new hello uri api to allow to change the expiration time


This change was necessary to create the bootstrap hello which must be valid indefinitely.

See revision 39bcd0f.

Exchanged peerinfo api to store hellos with new peerstore api


The new api needed to be exchange in all GNUnet packages.

See revision 23a2640.

Change watch to return actual values, before watching.


The watch api of the peerstore service was changed to return all values for a given key, before notifying the caller about ne values being stored.

See revision 86ae84f.

The old hello design replaced by the new hello design.


The new hello design was exchanged in all GNUnet packages.

See revision a362cd5.

Cli tool for changing hello files in contrib can change file from old to new hello design.


A cli tool for changing the bootstrap hello file in the contrib/hello directory was changed to rewritethe hello bootstrap file from old to new format.

See revision 8ea9223.

Moved code to scan and import hello file into peerstore from peerinfo.


The peerinfo service service was scanning a hostlist file and the data was used by the hostlist server. This code was moved to the peerstore service.

See revision 20d6f3.

Moved code to testing to have more generic test setup, which can be used not only from within transport.


The new testing framework was transport specific Now it can be used in other packages too.

See revision 02a1fda.

Code moved to the core package to get rid of circular dependencies.


After changes to be able to use the testing framework more generic the dependencies needed to be fixed..

See revision 1016d6d.

Changed method GNUNET_HELLO_builder_get_expiration_time to not need parameter GNUNET_HELLO_Builder.


A small function syntax fix.

See revision 84913b.

Changed the behavior of GNUNET_PEERSTORE_watch to also return the values allready stored for the key.


The watch functionality first returns all values for a given key, before notifying the caller about new values for that key.

See revision e1341d1.

Changed address and hello format to new TNG format.


All occurencies in GNUnet packages were changed from old to new hello format.

See revision 66ecfe2.

Fixed bug in bootstrap code.


Unnecessary check removed. Fixed small coding error.

See revision 3bd35e8.

Fixed validation bug.


The validation of other peers in the transport package was not working in some cases, because validation did not use monotonic time, and first_challenge_use wasn't reset.

See revision 88cb4be.

Fixed wrong group name.


A wrong group name was used for a DHT block entry.

See revision 8127d51.

Task added to start reading the hostlist entries only after a certain period of time has elapsed.


Reading hostlist entries and compiling the hostlist response to a hostlist request was started too early, even though the peer did not created its own hello.

See revision 7761b42.

Added test config to have a peer running the hostlist server.


The configuration of the test case had to be changed to let one peer run a hostlist server.

See revision 3c761cd.

Changed hostlist server to use a hello cache.


The host list server needed a cache for the entries, because with storing entries in the peerstore, only the new hellos were notified to the hostlist server.

See revision e4b146e.

Bootstrap: Fixed bug to not replace hellos for a peer.


Hellos are store with a specific key GNUNET_PEERSTORE_HELLO_KEY and option GNUNET_PEERSTORE_STOREOPTION_MULTIPLE instead of GNUNET_PEERSTORE_STOREOPTION_REPLACE.

See revision 0516538.

Hello: Fix another bug in cli tool to generate contrib hello file.


Use the actuall private key of the installed peer, not the peer id from file.

See revision e0d28ef.

Cadet: Fixed issue #7542


Cadet still used the legacy DHT hello block format, changed to the new URL-based block format.

See revision 9376034.

Added DDLs for handling GNUNET_PEERSTORE_StoreHelloContext.


Changed code to store hellos in new format in peerstore in transport and topology subsystem.

See revision 233a6be.

A long list of Bugs which where fixed.


  • c1783c1: TNG: Adding missing manual test case topology file.
  • 8093c8e: Changed relative path to no force test config
  • aa9bebd: TNG: Fixed bug in handling hello to start validation.
  • 21be887: Introduced closure to hold store context when caling function to add hello in peerstore.
  • 0ecf00f: Hello: Fixed usage of GNUNET_HELLO_builder_iterate.
  • 8ebef9f: Cadet: Changes to use DhtHelloMessage instead of HelloUriMessage, and to hand over not a HelloMessage, but a block to the dht.
  • 2b87bab: Peerstore: Fixed memory related bugs.
  • a71b245: Testing: Exchange binary name for transport in test case configuration.
  • 7da7937: Transport: Fixed null pointer in address iteration code to start validation.
  • 060b681: Transport: Fixed bug while setting up key material for backchannel.
  • 53ad5e4: Transport: Fixed bug while setting up key material for backchannel.
  • 57d31ec: Transport: Fixed bug in free pending messages and queue entries.
  • 20f5e2a: Transport: Fixed bug in ring buffer for core messages.
  • 2c71a76: Topology: Fixed small bug.
  • d46e0b7: Hello: Changed bootstrap peer hello file to new bootstrap peer.
  • 29e2e51: Peerstore: Make peerstore start immediately. Added option to use included hello.
  • 1848ece: Hello: Change error handling of GNUNET_HELLO_builder_add_address usage.
  • 4e77b10: Peerstore: We replace existing hellos. Only the origin peer merges hellos.
  • 8e8c3f1: Transport: Added missing dekrement when removing QueueEntry from DLL.
  • a919091: Transport: Added missing dekrement of global communicator queue counter.
  • 1513057: Transport: Using the correct TransportClient for dekrementing the global communicator queue counter.
  • 23246e1: Transport: Fixed check when to stop FC retransmission.
  • 015cef0: Transport: Removed logging that lead to an assertion.
  • ea2420b: Transport: Fixed check of value gotten from peerstore.
  • 5934318: Transport: Destroy closed ProtoQueue.
  • f5fa8ef: Transport: Added logging in case of UDP errors, and destroy queue in case of errors.
  • e2a4d6c: Transport: Fixed bug in handling of AckPending.
  • c9b0b25: Transport: Removed misplaced removal of QueueEntry.
  • 7f7571b: Transport: Fixed bugs in core message cache.
  • bc81b0a: Transport: We need to check if a message was cached when resuming communicators.
  • 433c13c: Transport: Fixed bug handling queue length and QueueEntry when queue has no capacity.
  • 3becc2d: Transport: Fixed bug to check each queue for validity separately.
  • 2d955b1: Transport: More useful debug logging für service.
  • f1510f7: Transport: Fixed using wrong function to calculate mean time when to send next fragment.
  • ec57587: Peerstore: Fixed wrong assert when checking DLL with watches.
  • 4274265: Transport: Added logging in case of UDP errors, and destroy queue in case of errors.
  • 8d3c8c3: Transport: Fixed bug in handling of AckPending.
  • edd8e08: Transport: Removed misplaced removal of QueueEntry.
  • 3b906ef: Transport: Fixed bugs in core message cache.
  • ca73eed: Transport: We need to check if a message was cached when resuming communicators.
  • e39ed50: Transport: Fixed bug handling queue length and QueueEntry when queue has no capacity.
  • f08eae1: Transport: Fixed bug to check each queue for validity separately.
  • 6a27b67: Transport: Fixed using wrong function to calculate mean time when to send next fragment.
  • da2f9f7: Peerstore: Fixed wrong assert when checking DLL with watches.
  • 6565677: Transport: Fixed counting of fragments of a message
  • 26b05be: Transport: Introduced variable to count the round of fragments of a message being (re)send.
  • e22e637: Transport: Fixed ring buffer.
  • f387a7b: Util: Introduced GNUNET_TIME_relative_multiply_double.
  • 36a9952: Transport: Added cleanup task to remove QueueEntry we got no ACK for.
  • 164badb: Transport: Changed logic to first create a queue before starting validation.
  • 894754f: Core: Added missing GNUNET_TRANSPORT_core_receive_continue.
  • b9cd040: Transport: Fixed bug in logic getting root parent of fragment which is a DV box.
  • 84b76e3: Transport: Resuming communicators in case of core restarting.
  • 78b0a9a: Transport. Fixed bug in logic freeing timedout QueueEntry.
  • 0d9df1c: Fixed bug calculating next resend of fragments.
  • c69a0e9: Transport: first_challenge_use has to be reset in case of revalidation.
  • 01b7a5d: Transport: When to resend a validation challenge and when to start revalidation needs to be seperate logic.
  • 5f56628: Transport: Fixed bug in logic releasing resources and notifying communicators after caching messages to core.
  • 94caa7d: Transport: Fixed bug in resend logic for fragments, especially for DV boxes.
  • 67c90f8: Core: Fixed bug to stop keepalive after handling ping.
  • a3b9d98: Transport: Fixed fragmentation logic.
  • 4254ee1: Core: Removed unnecessary client continue.
  • 1d88d65: Transport: Added check for DV box, when checking for last applicable fragment during freeing some fragment.
  • 4402b56: Transport: Added logging to debug freeing of fragments.
  • 25ffc82: Transport: Inform Core about all VirtualLinks not only neighbours.
  • aaf07c7: Core: Added logic to decrease restart delay of connection to Transport depending on how long the connection to Transport lasted.


Status


The hostlist, and topology subsystems and the bootstrap functionality were manually tested. Everything was working without errors. No known errors in other subsystems. Branch merged into master. New Transport and Hello released with version 0.21.