[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [gnunet-texinfo] 01/02: developer.texi: more chapters
From: |
gnunet |
Subject: |
[GNUnet-SVN] [gnunet-texinfo] 01/02: developer.texi: more chapters |
Date: |
Tue, 21 Mar 2017 18:54:12 +0100 |
This is an automated email from the git hooks/post-receive script.
ng0 pushed a commit to branch master
in repository gnunet-texinfo.
commit da8457771bb98e4bd5b841a3b4549e901fcf40d4
Author: ng0 <address@hidden>
AuthorDate: Fri Feb 17 16:58:09 2017 +0000
developer.texi: more chapters
---
developer.texi | 134 ++++++++++++++++++++++++++++++++++++++++++++-------------
1 file changed, 103 insertions(+), 31 deletions(-)
diff --git a/developer.texi b/developer.texi
index 3867eba..b47b961 100644
--- a/developer.texi
+++ b/developer.texi
@@ -1160,7 +1160,7 @@ GNUnet.
@c ***************************************************************************
@node GNUnet's TESTING library
address@hidden GNUnet's TESTING library
address@hidden GNUnet's TESTING library
The TESTING library is used for writing testcases which involve starting a
single or multiple peers. While peers can also be started by testcases using
@@ -1189,8 +1189,8 @@ only creates peers on the localhost, however by using
TESTBED testcases can
benefit from creating peers across multiple hosts.
@c ***************************************************************************
address@hidden API
@node API
address@hidden API
TESTING abstracts a group of peers as a TESTING system. All peers in a system
have common hostname and no two services of these peers have a same port or a
@@ -1237,8 +1237,8 @@ paths in allocated in its configuration are reclaimed for
usage in new
peers.
@c ***************************************************************************
address@hidden Finer control over peer stop
@node Finer control over peer stop
address@hidden Finer control over peer stop
Using @code{GNUNET_TESTING_peer_stop()} is normally fine for testcases.
However, calling this function for each peer is inefficient when trying to
@@ -1264,7 +1264,7 @@ when the peer is stopped.
@c ***************************************************************************
@node Helper functions
address@hidden Helper functions
address@hidden Helper functions
Most of the testcases can benefit from an abstraction which configures a peer
and starts it. This is provided by the function
@@ -1281,7 +1281,7 @@ given service is run.
@c ***************************************************************************
@node Testing with multiple processes
address@hidden Testing with multiple processes
address@hidden Testing with multiple processes
When testing GNUnet, the splitting of the code into a services and clients
often complicates testing. The solution to this is to have the testcase fork
@@ -1315,7 +1315,7 @@ the plugin directly.
@c ***************************************************************************
@node Performance regression analysis with Gauger
address@hidden Performance regression analysis with Gauger
address@hidden Performance regression analysis with Gauger
To help avoid performance regressions, GNUnet uses Gauger. Gauger is a simple
logging tool that allows remote hosts to send performance data to a central
@@ -1377,7 +1377,7 @@ latest stable release or check out Gauger's Subversion
repository.
@c ***************************************************************************
@node GNUnet's TESTBED Subsystem
address@hidden GNUnet's TESTBED Subsystem
address@hidden GNUnet's TESTBED Subsystem
The TESTBED subsystem facilitates testing and measuring of multi-peer
deployments on a single host or over multiple hosts.
@@ -1462,7 +1462,7 @@ linking with -lgnunettestbed.
@c ***************************************************************************
@node Supported Topologies
address@hidden Supported Topologies
address@hidden Supported Topologies
While testing multi-peer deployments, it is often needed that the peers are
connected in some topology. This requirement is addressed by the function
@@ -1546,7 +1546,7 @@ See Topology file format for the format of this file.
@c ***************************************************************************
@node Hosts file format
address@hidden Hosts file format
address@hidden Hosts file format
The testbed API offers the function GNUNET_TESTBED_hosts_load_from_file() to
load from a given file details about the hosts which testbed can use for
@@ -1573,7 +1573,7 @@ numerical addresses as hostnames whenever possible.
@c ***************************************************************************
@node Topology file format
address@hidden Topology file format
address@hidden Topology file format
A topology file describes how peers are to be connected. It should adhere to
the following format for testbed to parse it correctly.
@@ -1588,7 +1588,7 @@ For example, the following file will result in 5 overlay
connections: [2->1],
@c ***************************************************************************
@node Testbed Barriers
address@hidden Testbed Barriers
address@hidden Testbed Barriers
The testbed subsystem's barriers API facilitates coordination among the peers
run by the testbed and the experiment driver. The concept is similar to the
@@ -1639,7 +1639,7 @@ by @code{GNUNET_TESTBED_barrier_wait()}.
@c ***************************************************************************
@node Implementation
address@hidden Implementation
address@hidden Implementation
Since barriers involve coordination between experiment driver and peers, the
barrier service in the testbed controller is split into two components. The
@@ -1703,8 +1703,8 @@ is reached by all the controllers and the downward
propagation is for
triggering that the barrier is crossed.
@c ***************************************************************************
address@hidden Automatic large-scale deployment of GNUnet in the PlanetLab
testbed
address@hidden Automatic large-scale deployment of GNUnet in the PlanetLab
testbed
address@hidden Automatic large-scale deployment of GNUnet in the PlanetLab
testbed
address@hidden Automatic large-scale deployment of GNUnet in the PlanetLab
testbed
PlanetLab is as a testbed for computer networking and distributed systems
research. It was established in 2002 and as of June 2010 was composed of 1090
@@ -1719,12 +1719,14 @@ Please also check
@uref{https://gnunet.org/installation-fedora8-svn} and@
instructions how to install GNUnet on a PlanetLab node.
@c ***************************************************************************
address@hidden PlanetLab Automation for Fedora8 nodes
@node PlanetLab Automation for Fedora8 nodes
address@hidden PlanetLab Automation for Fedora8 nodes
@c ***************************************************************************
address@hidden Install buildslave on PlanetLab nodes running fedora core 8
@node Install buildslave on PlanetLab nodes running fedora core 8
address@hidden Install buildslave on PlanetLab nodes running fedora core 8
address@hidden ** Actually this is a subsubsubsection, but must be fixed
differently
address@hidden ** as subsubsection is the lowest.
Since most of the PlanetLab nodes are running the very old fedora core 8 image,
installing the buildslave software is quite some pain. For our PlanetLab
@@ -1749,8 +1751,8 @@ also try to install the latest version of zope.interface
which will fail to
install. Buildslave will work anyway since version 3.8.0 was installed before!
@c ***************************************************************************
address@hidden Setup a new PlanetLab testbed using GPLMT
@node Setup a new PlanetLab testbed using GPLMT
address@hidden Setup a new PlanetLab testbed using GPLMT
@itemize @bullet
@item Get a new slice and assign nodes
@@ -1795,8 +1797,8 @@ Use @code{buildbot start <basedir>} to start the server
@end itemize
@c ***************************************************************************
address@hidden Why do i get an ssh error when using the regex profiler?
@node Why do i get an ssh error when using the regex profiler?
address@hidden Why do i get an ssh error when using the regex profiler?
Why do i get an ssh error "Permission denied (publickey,password)." when using
the regex profiler although passwordless ssh to localhost works using publickey
@@ -1819,14 +1821,14 @@ login, then you should be good to go.
@c ***************************************************************************
@node TESTBED Caveats
address@hidden TESTBED Caveats
address@hidden TESTBED Caveats
This section documents a few caveats when using the GNUnet testbed
subsystem.
@c ***************************************************************************
address@hidden CORE must be started
@node CORE must be started
address@hidden CORE must be started
A simple issue is #3993: Your configuration MUST somehow ensure that for each
peer the CORE service is started when the peer is setup, otherwise TESTBED may
@@ -1839,8 +1841,8 @@ issue largely arises if users try to over-optimize by not
starting any services
with FORCESTART.
@c ***************************************************************************
address@hidden ATS must want the connections
@node ATS must want the connections
address@hidden ATS must want the connections
When TESTBED sets up connections, it only offers the respective HELLO
information to the TRANSPORT service. It is then up to the ATS service to
@@ -1897,7 +1899,7 @@ porting of GNUnet easier.
@c ***************************************************************************
@node Logging
address@hidden Logging
address@hidden Logging
GNUnet is able to log its activity, mostly for the purposes of debugging the
program at various levels.
@@ -2056,7 +2058,7 @@ will not report the failure in any way.
@c ***************************************************************************
@node Examples
address@hidden Examples
address@hidden Examples
@table @asis
@@ -2100,7 +2102,7 @@ GNUNET_FORCE_LOG to work.
@c ***************************************************************************
@node Log files
address@hidden Log files
address@hidden Log files
GNUnet can be told to log everything into a file instead of stderr (which is
the default) using the "--log-file=logfile" or "-l logfile" option. This option
@@ -2137,7 +2139,7 @@ never be automatically deleted by GNUnet.
@c ***************************************************************************
@node Updated behavior of GNUNET_log
address@hidden Updated behavior of GNUNET_log
address@hidden Updated behavior of GNUNET_log
It's currently quite common to see constructions like this all over the code:
@example
@@ -2205,8 +2207,8 @@ almost like enabling DEBUG in that subsytem before the
change. Of course you
can adapt it to your particular needs, this is only a quick example.
@c ***************************************************************************
address@hidden Interprocess communication API
address@hidden Interprocess communication API
address@hidden Interprocess communication API (IPC)
address@hidden Interprocess communication API (IPC)
In GNUnet a variety of new message types might be defined and used in
interprocess communication, in this tutorial we use the @code{struct
@@ -2218,7 +2220,7 @@ any other peer connecting to the service.)
@c ***************************************************************************
@node Define new message types
address@hidden Define new message types
address@hidden Define new message types
First of all, you should define the new message type in
@code{gnunet_protocols.h}:
@@ -2231,7 +2233,7 @@ First of all, you should define the new message type in
@c ***************************************************************************
@node Define message struct
address@hidden Define message struct
address@hidden Define message struct
After the type definition, the specified message structure should also be
described in the header file, e.g. transport.h in our case.
@@ -2252,6 +2254,7 @@ both ensure correct alignment when sending structs over
the network
@c ***************************************************************************
@node Connection between client and server
address@hidden Connection between client and server
@c %**end of header
For typical communication, the connection should be created first, in other
@@ -2259,10 +2262,12 @@ words, a connection between the client and the service
should be
established.
@c ***************************************************************************
@node Client setting
address@hidden Client setting
@c %**end of header
@c ***************************************************************************
@node Establish connection
address@hidden Establish connection
@c %**end of header
At first, on the client side, the underlying API is employed to create a new
@@ -2275,6 +2280,7 @@ GNUNET_CLIENT_connect ("transport", cfg);
@c ***************************************************************************
@node Initialize request message
address@hidden Initialize request message
@c %**end of header
When the connection is ready, we initialize the message. In this step, all the
@@ -2299,6 +2305,7 @@ Endian.
@c ***************************************************************************
@node Send request and receive response
address@hidden Send request and receive response
@c %**end of header
Next, the client would send the constructed message as a request to the service
@@ -2318,9 +2325,11 @@ message from the service.
@c ***************************************************************************
@node Server Setting
address@hidden Server Setting
@c ***************************************************************************
@node Startup service
address@hidden Startup service
After receiving the request message, we run a standard GNUnet service startup
sequence using @code{GNUNET_SERVICE_run}, as follows,
@@ -2332,12 +2341,16 @@ GNUNET_SERVICE_OPTION_NONE, &run, NULL)); @}
@c ***************************************************************************
@node Add new handles for specified messages
address@hidden Add new handles for specified messages
@c %**end of header
in the function above the argument @code{run} is used to initiate transport
-service,and defined like this: @example static void run (void *cls, struct
+service,and defined like this:
address@hidden
+static void run (void *cls, struct
GNUNET_SERVER_Handle *serv, const struct GNUNET_CONFIGURATION_Handle *cfg) @{
-GNUNET_SERVER_add_handlers (serv, handlers); @} @end example
+GNUNET_SERVER_add_handlers (serv, handlers); @}
address@hidden example
Here, @code{GNUNET_SERVER_add_handlers} must be called in the run function to
@@ -2366,6 +2379,7 @@ can be set. In addition, the terminator sign depicted as
@address@hidden, NULL, 0,
@c ***************************************************************************
@node Process request message
address@hidden Process request message
@c %**end of header
After the initialization of transport service, the request message would be
@@ -2404,6 +2418,7 @@ In comparison to the aforementioned situation, when the
argument is equal to
@c ***************************************************************************
@node Response to client
address@hidden Response to client
@c %**end of header
Once the processing of current request is done, the server should give the
@@ -2433,6 +2448,7 @@ send the message.
@c ***************************************************************************
@node Notification of clients
address@hidden Notification of clients
@c %**end of header
Often a service needs to (repeatedly) transmit notifications to a client or a
@@ -2456,6 +2472,8 @@ messages to the server.
@c ***************************************************************************
@node Conversion between Network Byte Order (Big Endian) and Host Byte Order
address@hidden Conversion between Network Byte Order (Big Endian) and Host Byte
Order
address@hidden %** subsub? it's a referenced page on the ipc document.
@c %**end of header
Here we can simply comprehend big endian and little endian as Network Byte
@@ -2509,6 +2527,7 @@ time from network byte order.
@c ***************************************************************************
@node Cryptography API
address@hidden Cryptography API
@c %**end of header
The gnunetutil APIs provides the cryptographic primitives used in GNUnet.
@@ -2544,6 +2563,7 @@ be considered secure for traditional applications of RSA.
@c ***************************************************************************
@node Message Queue API
address@hidden Message Queue API
@c %**end of header
@strong{ Introduction }@ Often, applications need to queue messages that are to
@@ -2667,6 +2687,7 @@ callback. When canceling an envelope, it is not
necessary@ to call
@c ***************************************************************************
@node Service API
address@hidden Service API
@c %**end of header
Most GNUnet code lives in the form of services. Services are processes that
@@ -2732,6 +2753,7 @@ values before terminating.
@c ***************************************************************************
@node Optimizing Memory Consumption of GNUnet's (Multi-) Hash Maps
address@hidden Optimizing Memory Consumption of GNUnet's (Multi-) Hash Maps
@c %**end of header
A commonly used data structure in GNUnet is a (multi-)hash map. It is most
@@ -2745,6 +2767,7 @@ introduced to minimize the footprint of the hash map.
@c ***************************************************************************
@node Analysis
address@hidden Analysis
@c %**end of header
The main reason for the "excessive" memory consumption by the hash map is that
@@ -2789,6 +2812,7 @@ significant number of entries, as there we tend to really
try to keep the
entries small.
@c ***************************************************************************
@node Solution
address@hidden Solution
@c %**end of header
The solution that has now been implemented is to @strong{optionally} allow the
@@ -2804,6 +2828,7 @@ the client code does not meet these requirements, the
result is a dangling
pointer and undefined behavior of the (multi-)hash map API.
@c ***************************************************************************
@node Migration
address@hidden Migration
@c %**end of header
To use the new feature, first check that the values contain the respective key
@@ -2846,6 +2871,7 @@ does not ensure that the given key is valid until the
entry is removed from the
map, undefined behavior is likely to be observed.
@c ***************************************************************************
@node Conclusion
address@hidden Conclusion
@c %**end of header
The new optimization can is often applicable and can result in a reduction in
@@ -2856,6 +2882,7 @@ performance increase is deemed significant enough. In
particular, it should
generally not be used in new code (wait at least until benchmarks exist).
@c ***************************************************************************
@node Availability
address@hidden Availability
@c %**end of header
The new multi hash map code was committed in SVN 24319 (will be in GNUnet
@@ -2866,6 +2893,7 @@ by 20-30% due to this change.
@c ***************************************************************************
@node The CONTAINER_MDLL API
address@hidden The CONTAINER_MDLL API
@c %**end of header
This text documents the GNUNET_CONTAINER_MDLL API. The GNUNET_CONTAINER_MDLL
@@ -2921,6 +2949,7 @@ accessing the "next_XX" and/or "prev_XX" members.
@c ***************************************************************************
@node The Automatic Restart Manager (ARM)
address@hidden The Automatic Restart Manager (ARM)
@c %**end of header
GNUnet's Automated Restart Manager (ARM) is the GNUnet service responsible for
@@ -2934,6 +2963,7 @@ with it.
@c ***************************************************************************
@node Basic functionality
address@hidden Basic functionality
@c %**end of header
@itemize @bullet
@@ -2956,6 +2986,7 @@ a service "resolver", stops the "resolver" then stops
"ARM".
@c ***************************************************************************
@node Key configuration options
address@hidden Key configuration options
@c %**end of header
Configurations for ARM and services should be available in a .conf file (As an
@@ -3015,6 +3046,7 @@ that are going to run.@
@c ***************************************************************************
@node Availability
address@hidden Availability
@c %**end of header
As mentioned before, one of the features provided by ARM is starting services
@@ -3053,6 +3085,7 @@ work).
@c ***************************************************************************
@node Reliability
address@hidden Reliability
One of the features provided by ARM, is the automatic restart of crashed
services.@ ARM needs to know which of the running services died. Function
@@ -3093,6 +3126,7 @@ trying to restart a problematic service.
@c ***************************************************************************
@node GNUnet's TRANSPORT Subsystem
address@hidden GNUnet's TRANSPORT Subsystem
@c %**end of header
This chapter documents how the GNUnet transport subsystem works. The GNUnet
@@ -3145,6 +3179,7 @@ Note that the term "clients" in the list above really
refers to the GNUnet-CORE
service, as CORE is typically the only client of the transport service.
@node Address validation protocol
address@hidden Address validation protocol
@c %**end of header
This section documents how the GNUnet transport service validates connections
@@ -3199,6 +3234,7 @@ and uses an expiration time for the signature (but those
are almost
implementation details).
@node NAT library
address@hidden NAT library
@c %**end of header
The goal of the GNUnet NAT library is to provide a general-purpose API for NAT
@@ -3242,6 +3278,7 @@ and then contact a @code{gnunet-nat-server} (running by
default on
easy to test if the current NAT configuration is valid.
@node Distance-Vector plugin
address@hidden Distance-Vector plugin
@c %**end of header
The Distance Vector (DV) transport is a transport mechanism that allows peers
@@ -3298,6 +3335,7 @@ receives this message, unwraps the original message, and
delivers it to Carol
as though it came directly from Alice.
@node SMTP plugin
address@hidden SMTP plugin
@c %**end of header
This page describes the new SMTP transport plugin for GNUnet as it exists in
@@ -3315,6 +3353,7 @@ performance results presented are quite old and maybe
outdated at this point.
@end itemize
@node Why use SMTP for a peer-to-peer transport?
address@hidden Why use SMTP for a peer-to-peer transport?
@c %**end of header
There are many reasons why one would not want to use SMTP:
@@ -3347,6 +3386,7 @@ to a peer outside of the private network. Even an
extraordinary overhead for
this first message would be irrelevant in this type of situation.
@node How does it work?
address@hidden How does it work?
@c %**end of header
When a GNUnet peer needs to send a message to another GNUnet peer that has
@@ -3359,6 +3399,7 @@ over time. This makes it impossible to censor GNUnet
E-mail messages by
searching for a generic filter.
@node How do I configure my peer?
address@hidden How do I configure my peer?
@c %**end of header
First, you need to configure @code{procmail} to filter your inbound E-mail for
@@ -3397,6 +3438,7 @@ e.g. just one hour. For this, set @code{HELLOEXPIRES} to
@code{1} in the
This should be it, but you may probably want to test it first.@
@node How do I test if it works?
address@hidden How do I test if it works?
@c %**end of header
Any transport can be subjected to some rudimentary tests using the
@@ -3417,6 +3459,7 @@ test will only work if you have configured the transport
to send and receive
messages.
@node How fast is it?
address@hidden How fast is it?
@c %**end of header
We have measured the performance of the UDP, TCP and SMTP transport layer
@@ -3477,6 +3520,7 @@ the throughput to 13 kbps as figure smtp-MTUs shows. Our
research paper) has
some more details on the benchmarking results.
@node Bluetooth plugin
address@hidden Bluetooth plugin
@c %**end of header
This page describes the new Bluetooth transport plugin for GNUnet. The plugin
@@ -3491,6 +3535,7 @@ have any questions or problems just post them here or ask
on the IRC channel.
@end itemize
@node What do I need to use the Bluetooth plugin transport?
address@hidden What do I need to use the Bluetooth plugin transport?
@c %**end of header
If you are a Linux user and you want to use the Bluetooth transport plugin you
@@ -3513,6 +3558,7 @@ Bluetooth Stack supports only the RFCOMM protocol so we
cannot turn on your
device programatically!
@node How does it work?
address@hidden How does it work?
@c %**end of header
The Bluetooth transport plugin uses virtually the same code as the WLAN plugin
@@ -3540,6 +3586,7 @@ Once in a while the device will make an inquiry scan to
discover the nearby
devices and it will send them randomly HELLO messages for peer discovery.
@node What possible errors should I be aware of?
address@hidden What possible errors should I be aware of?
@c %**end of header
@emph{This section is dedicated for Linux users}
@@ -3575,6 +3622,7 @@ device and to send some particular commands to it.
@end itemize
@node How do I configure my peer?
address@hidden How do I configure my peer?
@c %**end of header
On Linux, you just have to be sure that the interface name corresponds to the
@@ -3605,6 +3653,7 @@ should do is to add @emph{bluetooth} on the plugins list
of the transport
service.
@node How can I test it?
address@hidden How can I test it?
@c %**end of header
If you have two Bluetooth devices on the same machine which use Linux you
@@ -3647,6 +3696,7 @@ Another way to test the plugin functionality is to create
your own application
which will use the GNUnet framework with the Bluetooth transport service.
@node The implementation of the Bluetooth transport plugin
address@hidden The implementation of the Bluetooth transport plugin
@c %**end of header
This page describes the implementation of the Bluetooth transport plugin.
@@ -3668,6 +3718,7 @@ platforms.
@end itemize
@node Linux functionality
address@hidden Linux functionality
@c %**end of header
In order to implement the plugin functionality on Linux I used the BlueZ
@@ -3679,6 +3730,7 @@ interface) and is separated in two stages:
@c %** 'THE INITIALIZATION' should be in bigger letters or stand out, not
@c %** starting a new section?
@node THE INITIALIZATION
address@hidden THE INITIALIZATION
@itemize @bullet
@item first, it checks if we have root privilegies (@emph{Remember that we need
@@ -3715,6 +3767,7 @@ suitable error}
@c %** Same as for @node entry above
@node THE LOOP
address@hidden THE LOOP
The helper binary uses a list where it saves all the connected neighbour
devices (@emph{neighbours.devices}) and two buffers (@emph{write_pout} and
@@ -3758,6 +3811,7 @@ fails again, then it skips the message.}
transport Bluetooth plugin has support for @strong{broadcast messages}.}
@node Details about the broadcast implementation
address@hidden Details about the broadcast implementation
@c %**end of header
First I want to point out that the broadcast functionality for the CONTROL
@@ -3801,6 +3855,7 @@ to connect to it and in case of success we save the
address and the socket on
the list. If we are already connected to that device we simply use the socket.
@node Windows functionality
address@hidden Windows functionality
@c %**end of header
For Windows I decided to use the Microsoft Bluetooth stack which has the
@@ -3853,6 +3908,7 @@ Also, currently on Windows the Bluetooth plugin doesn't
have support for
broadcast messages. When it receives a broadcast message it will skip it.
@node Pending features
address@hidden Pending features
@c %**end of header
@itemize @bullet
@@ -3868,12 +3924,14 @@ I could improve the implementation you are welcome to
comment or to contact
me.
@node WLAN plugin
address@hidden WLAN plugin
@c %**end of header
This section documents how the wlan transport plugin works. Parts which are not
implemented yet or could be better implemented are described at the end.
@node The ATS Subsystem
address@hidden The ATS Subsystem
@c %**end of header
ATS stands for "automatic transport selection", and the function of ATS in
@@ -3894,6 +3952,7 @@ strategies which differ significantly in their
performance and maturity, and it
is still unclear if any particular plugin is generally superior.
@node GNUnet's CORE Subsystem
address@hidden GNUnet's CORE Subsystem
@c %**end of header
The CORE subsystem in GNUnet is responsible for securing link-layer
@@ -3923,6 +3982,7 @@ keys)
@end itemize
@node Limitations
address@hidden Limitations
@c %**end of header
CORE does not perform @uref{http://en.wikipedia.org/wiki/Routing, routing};
@@ -3953,6 +4013,7 @@ expected to process messages at line-speed. If flow
control is needed,
applications should use the CADET service.
@node When is a peer "connected"?
address@hidden When is a peer "connected"?
@c %**end of header
In addition to the security features mentioned above, CORE also provides one
@@ -3981,6 +4042,7 @@ connecting peers before exchanging information about
supported message types
and notifying applications about the new connection.
@node libgnunetcore
address@hidden libgnunetcore
@c %**end of header
The CORE API (defined in @code{gnunet_core_service.h}) is the basic messaging
@@ -4041,12 +4103,14 @@ disconnect events for all existing connections. Once
the connections are
re-established, the applications will be receive matching connect events.
@node The CORE Client-Service Protocol
address@hidden The CORE Client-Service Protocol
@c %**end of header
This section describes the protocol between an application using the CORE
service (the client) and the CORE service process itself.
@node Setup
address@hidden Setup
@c %**end of header
When a client connects to the CORE service, it first sends a
@@ -4078,6 +4142,7 @@ The CORE service responds to the @code{InitMessage} with
an
CORE and the client can send messages.
@node Notifications
address@hidden Notifications
@c %**end of header
The CORE will send @code{ConnectNotifyMessage}s and
@@ -4092,6 +4157,7 @@ for the message type) is used to notify clients
monitoring outbound messages;
here, the peer identity given is that of the receiver.
@node Sending
address@hidden Sending
@c %**end of header
When a client wants to transmit a message, it first requests a transmission
@@ -4109,9 +4175,11 @@ contain a "unique" request ID (based on a counter
incremented by the client
for each request).
@node The CORE Peer-to-Peer Protocol
address@hidden The CORE Peer-to-Peer Protocol
@c %**end of header
@node Creating the EphemeralKeyMessage
address@hidden Creating the EphemeralKeyMessage
@c %**end of header
When the CORE service starts, each peer creates a fresh ephemeral (ECC)
@@ -4152,6 +4220,7 @@ using the new ephemeral key
@end table
@node Establishing a connection
address@hidden Establishing a connection
@c %**end of header
Peers begin their interaction by sending a @code{EphemeralKeyMessage} to the
@@ -4167,6 +4236,7 @@ receiving a @code{PongMessage} check the challenge, and
if it matches set the
connection to @code{KX_STATE_UP}.
@node Encryption and Decryption
address@hidden Encryption and Decryption
@c %**end of header
All functions related to the key exchange and encryption/decryption of
@@ -4192,6 +4262,7 @@ ephemeral key changes every 12h, a peer would not even be
able to decrypt
messages older than 12h.
@node Type maps
address@hidden Type maps
@c %**end of header
Once an encrypted connection has been established, peers begin to exchange
@@ -4224,6 +4295,7 @@ the correct hash of the type map) is not received, the
sender will retransmit
the type map (with exponential back-off).
@node GNUnet's CADET subsystem
address@hidden GNUnet's CADET subsystem
@c %**end of header
The CADET subsystem in GNUnet is responsible for secure end-to-end
--
To stop receiving notification emails like this one, please contact
address@hidden