aboutsummaryrefslogtreecommitdiff
path: root/doc/handbook
diff options
context:
space:
mode:
Diffstat (limited to 'doc/handbook')
-rw-r--r--doc/handbook/Makefile.am9
-rw-r--r--doc/handbook/chapters/developer.texi443
-rw-r--r--doc/handbook/chapters/installation.texi135
-rw-r--r--doc/handbook/chapters/keyconcepts.texi2
-rw-r--r--doc/handbook/chapters/preface.texi117
-rw-r--r--doc/handbook/chapters/user.texi130
-rw-r--r--doc/handbook/gnunet.texi12
-rw-r--r--doc/handbook/manual.css2
-rwxr-xr-xdoc/handbook/run-gendocs.sh2
-rw-r--r--doc/handbook/style.css2
10 files changed, 476 insertions, 378 deletions
diff --git a/doc/handbook/Makefile.am b/doc/handbook/Makefile.am
index 57a85bd56..a50a58937 100644
--- a/doc/handbook/Makefile.am
+++ b/doc/handbook/Makefile.am
@@ -18,7 +18,7 @@ infoimagedir = $(infodir)/images
18# we use the include version which is backwards compatible 18# we use the include version which is backwards compatible
19# and upwards compatible, while the ref variant is neither. 19# and upwards compatible, while the ref variant is neither.
20 20
21AM_MAKEINFOHTMLFLAGS = --no-split --css-include=manual.css 21AM_MAKEINFOHTMLFLAGS = --no-split --css-include=style.css --css-include=manual.css
22 22
23dist_infoimage_DATA = \ 23dist_infoimage_DATA = \
24 images/gnunet-gtk-0-10-gns-a-done.png \ 24 images/gnunet-gtk-0-10-gns-a-done.png \
@@ -154,13 +154,6 @@ version.texi/replacement/revert:
154 @echo "@set VERSION GPACKAGE_VERSION" > gversion.texi 154 @echo "@set VERSION GPACKAGE_VERSION" > gversion.texi
155 @echo "@set EDITION GPACKAGE_VERSION" >> gversion.texi 155 @echo "@set EDITION GPACKAGE_VERSION" >> gversion.texi
156 156
157if TEXI2MDOC_GENERATION
158gnunet-documentation.7: version.texi/replacement
159 @echo Attempting to output an mdoc formatted section 7 document
160 @texi2mdoc -I$(pwd):$(pwd)/chapters gnunet.texi > ../man/gnunet-documentation.7
161
162# TODO: (Maybe) other outputs resulting from this.
163endif
164 157
165# FIXME: rm *.html and *.pdf 158# FIXME: rm *.html and *.pdf
166#doc-clean: 159#doc-clean:
diff --git a/doc/handbook/chapters/developer.texi b/doc/handbook/chapters/developer.texi
index cd81fcfb7..6c426ebad 100644
--- a/doc/handbook/chapters/developer.texi
+++ b/doc/handbook/chapters/developer.texi
@@ -202,7 +202,8 @@ Gtk+-based user interfaces, including:
202@item @command{gnunet-statistics-gtk} (statistics over time), 202@item @command{gnunet-statistics-gtk} (statistics over time),
203@item @command{gnunet-peerinfo-gtk} 203@item @command{gnunet-peerinfo-gtk}
204(information about current connections and known peers), 204(information about current connections and known peers),
205@item @command{gnunet-chat-gtk} (chat GUI) and 205@item @command{gnunet-namestore-gtk} (GNS record editor),
206@item @command{gnunet-conversation-gtk} (voice chat GUI) and
206@item @command{gnunet-setup} (setup tool for "everything") 207@item @command{gnunet-setup} (setup tool for "everything")
207@end itemize 208@end itemize
208 209
@@ -2176,7 +2177,7 @@ work):
2176@example 2177@example
2177export PYPI=@value{PYPI-URL} 2178export PYPI=@value{PYPI-URL}
2178wget $PYPI/z/zope.interface/zope.interface-3.8.0.tar.gz 2179wget $PYPI/z/zope.interface/zope.interface-3.8.0.tar.gz
2179tar zvfz zope.interface-3.8.0.tar.gz 2180tar xzvf zope.interface-3.8.0.tar.gz
2180cd zope.interface-3.8.0 2181cd zope.interface-3.8.0
2181sudo python setup.py install 2182sudo python setup.py install
2182@end example 2183@end example
@@ -2401,10 +2402,11 @@ the program at various levels.
2401@file{gnunet_common.h} defines several @strong{log levels}: 2402@file{gnunet_common.h} defines several @strong{log levels}:
2402@table @asis 2403@table @asis
2403 2404
2404@item ERROR for errors (really problematic situations, often leading to 2405@item ERROR for errors
2405crashes) 2406(really problematic situations, often leading to crashes)
2406@item WARNING for warnings (troubling situations that might have 2407@item WARNING for warnings
2407negative consequences, although not fatal) 2408(troubling situations that might have negative consequences, although
2409not fatal)
2408@item INFO for various information. 2410@item INFO for various information.
2409Used somewhat rarely, as GNUnet statistics is used to hold and display 2411Used somewhat rarely, as GNUnet statistics is used to hold and display
2410most of the information that users might find interesting. 2412most of the information that users might find interesting.
@@ -2830,7 +2832,7 @@ which both ensure correct alignment when sending structs over the network.
2830@c *********************************************************************** 2832@c ***********************************************************************
2831@node Client - Establish connection 2833@node Client - Establish connection
2832@subsubsection Client - Establish connection 2834@subsubsection Client - Establish connection
2833@c %**end of header 2835
2834 2836
2835 2837
2836At first, on the client side, the underlying API is employed to create a 2838At first, on the client side, the underlying API is employed to create a
@@ -2845,7 +2847,7 @@ client = GNUNET_CLIENT_connect ("transport", cfg);
2845@c *********************************************************************** 2847@c ***********************************************************************
2846@node Client - Initialize request message 2848@node Client - Initialize request message
2847@subsubsection Client - Initialize request message 2849@subsubsection Client - Initialize request message
2848@c %**end of header 2850
2849 2851
2850When the connection is ready, we initialize the message. In this step, 2852When the connection is ready, we initialize the message. In this step,
2851all the fields of the message should be properly initialized, namely the 2853all the fields of the message should be properly initialized, namely the
@@ -2878,7 +2880,7 @@ Big Endian and Little Endian.
2878@c *********************************************************************** 2880@c ***********************************************************************
2879@node Client - Send request and receive response 2881@node Client - Send request and receive response
2880@subsubsection Client - Send request and receive response 2882@subsubsection Client - Send request and receive response
2881@c %**end of header 2883
2882 2884
2883@b{FIXME: This is very outdated, see the tutorial for the current API!} 2885@b{FIXME: This is very outdated, see the tutorial for the current API!}
2884 2886
@@ -2913,7 +2915,7 @@ int main(int argc, char**argv) @{
2913@c *********************************************************************** 2915@c ***********************************************************************
2914@node Server - Add new handles for specified messages 2916@node Server - Add new handles for specified messages
2915@subsubsection Server - Add new handles for specified messages 2917@subsubsection Server - Add new handles for specified messages
2916@c %**end of header 2918
2917 2919
2918in the function above the argument @code{run} is used to initiate 2920in the function above the argument @code{run} is used to initiate
2919transport service,and defined like this: 2921transport service,and defined like this:
@@ -2971,7 +2973,7 @@ depicted as @code{@{NULL, NULL, 0, 0@}} is set in the last area.
2971@c *********************************************************************** 2973@c ***********************************************************************
2972@node Server - Process request message 2974@node Server - Process request message
2973@subsubsection Server - Process request message 2975@subsubsection Server - Process request message
2974@c %**end of header 2976
2975 2977
2976After the initialization of transport service, the request message would 2978After the initialization of transport service, the request message would
2977be processed. Before handling the main message data, the validity of this 2979be processed. Before handling the main message data, the validity of this
@@ -3022,7 +3024,7 @@ message.
3022@c *********************************************************************** 3024@c ***********************************************************************
3023@node Server - Response to client 3025@node Server - Response to client
3024@subsubsection Server - Response to client 3026@subsubsection Server - Response to client
3025@c %**end of header 3027
3026 3028
3027Once the processing of current request is done, the server should give the 3029Once the processing of current request is done, the server should give the
3028response to the client. A new @code{struct AddressLookupMessage} would be 3030response to the client. A new @code{struct AddressLookupMessage} would be
@@ -3058,7 +3060,7 @@ to send the message.
3058@c *********************************************************************** 3060@c ***********************************************************************
3059@node Server - Notification of clients 3061@node Server - Notification of clients
3060@subsubsection Server - Notification of clients 3062@subsubsection Server - Notification of clients
3061@c %**end of header 3063
3062 3064
3063Often a service needs to (repeatedly) transmit notifications to a client 3065Often a service needs to (repeatedly) transmit notifications to a client
3064or a group of clients. In these cases, the client typically has once 3066or a group of clients. In these cases, the client typically has once
@@ -3087,7 +3089,7 @@ messages to the server.
3087@node Conversion between Network Byte Order (Big Endian) and Host Byte Order 3089@node Conversion between Network Byte Order (Big Endian) and Host Byte Order
3088@subsubsection Conversion between Network Byte Order (Big Endian) and Host Byte Order 3090@subsubsection Conversion between Network Byte Order (Big Endian) and Host Byte Order
3089@c %** subsub? it's a referenced page on the ipc document. 3091@c %** subsub? it's a referenced page on the ipc document.
3090@c %**end of header 3092
3091 3093
3092Here we can simply comprehend big endian and little endian as Network Byte 3094Here we can simply comprehend big endian and little endian as Network Byte
3093Order and Host Byte Order respectively. What is the difference between 3095Order and Host Byte Order respectively. What is the difference between
@@ -3143,7 +3145,7 @@ byte order.
3143@cindex Cryptography API 3145@cindex Cryptography API
3144@node Cryptography API 3146@node Cryptography API
3145@subsection Cryptography API 3147@subsection Cryptography API
3146@c %**end of header 3148
3147 3149
3148The gnunetutil APIs provides the cryptographic primitives used in GNUnet. 3150The gnunetutil APIs provides the cryptographic primitives used in GNUnet.
3149GNUnet uses 2048 bit RSA keys for the session key exchange and for signing 3151GNUnet uses 2048 bit RSA keys for the session key exchange and for signing
@@ -3180,7 +3182,7 @@ should be considered secure for traditional applications of RSA.
3180@cindex Message Queue API 3182@cindex Message Queue API
3181@node Message Queue API 3183@node Message Queue API
3182@subsection Message Queue API 3184@subsection Message Queue API
3183@c %**end of header 3185
3184 3186
3185@strong{ Introduction }@ 3187@strong{ Introduction }@
3186Often, applications need to queue messages that 3188Often, applications need to queue messages that
@@ -3324,7 +3326,7 @@ callback. When canceling an envelope, it is not necessary@ to call
3324@cindex Service API 3326@cindex Service API
3325@node Service API 3327@node Service API
3326@subsection Service API 3328@subsection Service API
3327@c %**end of header 3329
3328 3330
3329Most GNUnet code lives in the form of services. Services are processes 3331Most GNUnet code lives in the form of services. Services are processes
3330that offer an API for other components of the system to build on. Those 3332that offer an API for other components of the system to build on. Those
@@ -3400,7 +3402,7 @@ clients to set (possibly persistent) statistic values before terminating.
3400@c *********************************************************************** 3402@c ***********************************************************************
3401@node Optimizing Memory Consumption of GNUnet's (Multi-) Hash Maps 3403@node Optimizing Memory Consumption of GNUnet's (Multi-) Hash Maps
3402@subsection Optimizing Memory Consumption of GNUnet's (Multi-) Hash Maps 3404@subsection Optimizing Memory Consumption of GNUnet's (Multi-) Hash Maps
3403@c %**end of header 3405
3404 3406
3405A commonly used data structure in GNUnet is a (multi-)hash map. It is most 3407A commonly used data structure in GNUnet is a (multi-)hash map. It is most
3406often used to map a peer identity to some data structure, but also to map 3408often used to map a peer identity to some data structure, but also to map
@@ -3424,7 +3426,7 @@ the hash map.
3424 3426
3425@node Analysis 3427@node Analysis
3426@subsubsection Analysis 3428@subsubsection Analysis
3427@c %**end of header 3429
3428 3430
3429The main reason for the "excessive" memory consumption by the hash map is 3431The main reason for the "excessive" memory consumption by the hash map is
3430that GNUnet uses 512-bit cryptographic hash codes --- and the 3432that GNUnet uses 512-bit cryptographic hash codes --- and the
@@ -3475,7 +3477,7 @@ we tend to really try to keep the entries small.
3475@c *********************************************************************** 3477@c ***********************************************************************
3476@node Solution 3478@node Solution
3477@subsubsection Solution 3479@subsubsection Solution
3478@c %**end of header 3480
3479 3481
3480The solution that has now been implemented is to @strong{optionally} 3482The solution that has now been implemented is to @strong{optionally}
3481allow the hash map to not make a (deep) copy of the hash but instead have 3483allow the hash map to not make a (deep) copy of the hash but instead have
@@ -3493,7 +3495,7 @@ pointer and undefined behavior of the (multi-)hash map API.
3493@c *********************************************************************** 3495@c ***********************************************************************
3494@node Migration 3496@node Migration
3495@subsubsection Migration 3497@subsubsection Migration
3496@c %**end of header 3498
3497 3499
3498To use the new feature, first check that the values contain the respective 3500To use the new feature, first check that the values contain the respective
3499key (and never modify it). Then, all calls to 3501key (and never modify it). Then, all calls to
@@ -3542,7 +3544,7 @@ removed from the map, undefined behavior is likely to be observed.
3542@c *********************************************************************** 3544@c ***********************************************************************
3543@node Conclusion 3545@node Conclusion
3544@subsubsection Conclusion 3546@subsubsection Conclusion
3545@c %**end of header 3547
3546 3548
3547The new optimization can is often applicable and can result in a 3549The new optimization can is often applicable and can result in a
3548reduction in memory consumption of up to 30% in practice. However, it 3550reduction in memory consumption of up to 30% in practice. However, it
@@ -3555,10 +3557,11 @@ at least until benchmarks exist).
3555@c *********************************************************************** 3557@c ***********************************************************************
3556@node Availability 3558@node Availability
3557@subsubsection Availability 3559@subsubsection Availability
3558@c %**end of header
3559 3560
3560The new multi hash map code was committed in SVN 24319 (will be in GNUnet 3561
35610.9.4). Various subsystems (transport, core, dht, file-sharing) were 3562The new multi hash map code was committed in SVN 24319 (which made its
3563way into GNUnet version 0.9.4).
3564Various subsystems (transport, core, dht, file-sharing) were
3562previously audited and modified to take advantage of the new capability. 3565previously audited and modified to take advantage of the new capability.
3563In particular, memory consumption of the file-sharing service is expected 3566In particular, memory consumption of the file-sharing service is expected
3564to drop by 20-30% due to this change. 3567to drop by 20-30% due to this change.
@@ -3567,7 +3570,7 @@ to drop by 20-30% due to this change.
3567@cindex CONTAINER_MDLL API 3570@cindex CONTAINER_MDLL API
3568@node CONTAINER_MDLL API 3571@node CONTAINER_MDLL API
3569@subsection CONTAINER_MDLL API 3572@subsection CONTAINER_MDLL API
3570@c %**end of header 3573
3571 3574
3572This text documents the GNUNET_CONTAINER_MDLL API. The 3575This text documents the GNUNET_CONTAINER_MDLL API. The
3573GNUNET_CONTAINER_MDLL API is similar to the GNUNET_CONTAINER_DLL API in 3576GNUNET_CONTAINER_MDLL API is similar to the GNUNET_CONTAINER_DLL API in
@@ -3633,7 +3636,7 @@ Iterating over the list should be done by directly accessing the
3633@cindex ARM 3636@cindex ARM
3634@node Automatic Restart Manager (ARM) 3637@node Automatic Restart Manager (ARM)
3635@section Automatic Restart Manager (ARM) 3638@section Automatic Restart Manager (ARM)
3636@c %**end of header 3639
3637 3640
3638GNUnet's Automated Restart Manager (ARM) is the GNUnet service responsible 3641GNUnet's Automated Restart Manager (ARM) is the GNUnet service responsible
3639for system initialization and service babysitting. ARM starts and halts 3642for system initialization and service babysitting. ARM starts and halts
@@ -3654,7 +3657,7 @@ about how ARM works and how to interact with it.
3654@c *********************************************************************** 3657@c ***********************************************************************
3655@node Basic functionality 3658@node Basic functionality
3656@subsection Basic functionality 3659@subsection Basic functionality
3657@c %**end of header 3660
3658 3661
3659@itemize @bullet 3662@itemize @bullet
3660@item ARM source code can be found under "src/arm".@ Service processes are 3663@item ARM source code can be found under "src/arm".@ Service processes are
@@ -3678,7 +3681,7 @@ it to start a service "resolver", stops the "resolver" then stops "ARM".
3678@c *********************************************************************** 3681@c ***********************************************************************
3679@node Key configuration options 3682@node Key configuration options
3680@subsection Key configuration options 3683@subsection Key configuration options
3681@c %**end of header 3684
3682 3685
3683Configurations for ARM and services should be available in a .conf file 3686Configurations for ARM and services should be available in a .conf file
3684(As an example, see test_arm_api_data.conf). When running ARM, the 3687(As an example, see test_arm_api_data.conf). When running ARM, the
@@ -3747,7 +3750,7 @@ services that are going to run.
3747@c *********************************************************************** 3750@c ***********************************************************************
3748@node ARM - Availability 3751@node ARM - Availability
3749@subsection ARM - Availability 3752@subsection ARM - Availability
3750@c %**end of header 3753
3751 3754
3752As mentioned before, one of the features provided by ARM is starting 3755As mentioned before, one of the features provided by ARM is starting
3753services on demand. Consider the example of one service "client" that 3756services on demand. Consider the example of one service "client" that
@@ -3835,7 +3838,7 @@ problematic service.
3835@cindex TRANSPORT Subsystem 3838@cindex TRANSPORT Subsystem
3836@node TRANSPORT Subsystem 3839@node TRANSPORT Subsystem
3837@section TRANSPORT Subsystem 3840@section TRANSPORT Subsystem
3838@c %**end of header 3841
3839 3842
3840This chapter documents how the GNUnet transport subsystem works. The 3843This chapter documents how the GNUnet transport subsystem works. The
3841GNUnet transport subsystem consists of three main components: the 3844GNUnet transport subsystem consists of three main components: the
@@ -3893,7 +3896,7 @@ transport service.
3893 3896
3894@node Address validation protocol 3897@node Address validation protocol
3895@subsection Address validation protocol 3898@subsection Address validation protocol
3896@c %**end of header 3899
3897 3900
3898This section documents how the GNUnet transport service validates 3901This section documents how the GNUnet transport service validates
3899connections with other peers. It is a high-level description of the 3902connections with other peers. It is a high-level description of the
@@ -3956,7 +3959,7 @@ implementation details).
3956@cindex NAT library 3959@cindex NAT library
3957@node NAT library 3960@node NAT library
3958@section NAT library 3961@section NAT library
3959@c %**end of header 3962
3960 3963
3961The goal of the GNUnet NAT library is to provide a general-purpose API for 3964The goal of the GNUnet NAT library is to provide a general-purpose API for
3962NAT traversal @strong{without} third-party support. So protocols that 3965NAT traversal @strong{without} third-party support. So protocols that
@@ -4003,7 +4006,7 @@ This way, it is easy to test if the current NAT configuration is valid.
4003 4006
4004@node Distance-Vector plugin 4007@node Distance-Vector plugin
4005@section Distance-Vector plugin 4008@section Distance-Vector plugin
4006@c %**end of header 4009
4007 4010
4008The Distance Vector (DV) transport is a transport mechanism that allows 4011The Distance Vector (DV) transport is a transport mechanism that allows
4009peers to act as relays for each other, thereby connecting peers that would 4012peers to act as relays for each other, thereby connecting peers that would
@@ -4072,7 +4075,8 @@ message, and delivers it to Carol as though it came directly from Alice.
4072@cindex SMTP plugin 4075@cindex SMTP plugin
4073@node SMTP plugin 4076@node SMTP plugin
4074@section SMTP plugin 4077@section SMTP plugin
4075@c %**end of header 4078
4079@c TODO: Update!
4076 4080
4077This section describes the new SMTP transport plugin for GNUnet as it 4081This section describes the new SMTP transport plugin for GNUnet as it
4078exists in the 0.7.x and 0.8.x branch. SMTP support is currently not 4082exists in the 0.7.x and 0.8.x branch. SMTP support is currently not
@@ -4080,6 +4084,9 @@ available in GNUnet 0.9.x. This page also describes the transport layer
4080abstraction (as it existed in 0.7.x and 0.8.x) in more detail and gives 4084abstraction (as it existed in 0.7.x and 0.8.x) in more detail and gives
4081some benchmarking results. The performance results presented are quite 4085some benchmarking results. The performance results presented are quite
4082old and maybe outdated at this point. 4086old and maybe outdated at this point.
4087For the readers in the year 2019, you will notice by the mention of
4088version 0.7, 0.8, and 0.9 that this section has to be taken with your
4089usual grain of salt and be updated eventually.
4083 4090
4084@itemize @bullet 4091@itemize @bullet
4085@item Why use SMTP for a peer-to-peer transport? 4092@item Why use SMTP for a peer-to-peer transport?
@@ -4101,7 +4108,7 @@ old and maybe outdated at this point.
4101 4108
4102@node Why use SMTP for a peer-to-peer transport? 4109@node Why use SMTP for a peer-to-peer transport?
4103@subsection Why use SMTP for a peer-to-peer transport? 4110@subsection Why use SMTP for a peer-to-peer transport?
4104@c %**end of header 4111
4105 4112
4106There are many reasons why one would not want to use SMTP: 4113There are many reasons why one would not want to use SMTP:
4107 4114
@@ -4136,7 +4143,7 @@ type of situation.
4136 4143
4137@node How does it work? 4144@node How does it work?
4138@subsection How does it work? 4145@subsection How does it work?
4139@c %**end of header 4146
4140 4147
4141When a GNUnet peer needs to send a message to another GNUnet peer that has 4148When a GNUnet peer needs to send a message to another GNUnet peer that has
4142advertised (only) an SMTP transport address, GNUnet base64-encodes the 4149advertised (only) an SMTP transport address, GNUnet base64-encodes the
@@ -4149,7 +4156,7 @@ GNUnet E-mail messages by searching for a generic filter.
4149 4156
4150@node How do I configure my peer? 4157@node How do I configure my peer?
4151@subsection How do I configure my peer? 4158@subsection How do I configure my peer?
4152@c %**end of header 4159
4153 4160
4154First, you need to configure @code{procmail} to filter your inbound E-mail 4161First, you need to configure @code{procmail} to filter your inbound E-mail
4155for GNUnet traffic. The GNUnet messages must be delivered into a pipe, for 4162for GNUnet traffic. The GNUnet messages must be delivered into a pipe, for
@@ -4194,7 +4201,7 @@ This should be it, but you may probably want to test it first.
4194 4201
4195@node How do I test if it works? 4202@node How do I test if it works?
4196@subsection How do I test if it works? 4203@subsection How do I test if it works?
4197@c %**end of header 4204
4198 4205
4199Any transport can be subjected to some rudimentary tests using the 4206Any transport can be subjected to some rudimentary tests using the
4200@code{gnunet-transport-check} tool. The tool sends a message to the local 4207@code{gnunet-transport-check} tool. The tool sends a message to the local
@@ -4217,7 +4224,7 @@ to send and receive messages.
4217 4224
4218@node How fast is it? 4225@node How fast is it?
4219@subsection How fast is it? 4226@subsection How fast is it?
4220@c %**end of header 4227
4221 4228
4222We have measured the performance of the UDP, TCP and SMTP transport layer 4229We have measured the performance of the UDP, TCP and SMTP transport layer
4223directly and when used from an application using the GNUnet core. 4230directly and when used from an application using the GNUnet core.
@@ -4284,7 +4291,7 @@ benchmarking results.
4284@cindex Bluetooth plugin 4291@cindex Bluetooth plugin
4285@node Bluetooth plugin 4292@node Bluetooth plugin
4286@section Bluetooth plugin 4293@section Bluetooth plugin
4287@c %**end of header 4294
4288 4295
4289This page describes the new Bluetooth transport plugin for GNUnet. The 4296This page describes the new Bluetooth transport plugin for GNUnet. The
4290plugin is still in the testing stage so don't expect it to work 4297plugin is still in the testing stage so don't expect it to work
@@ -4310,7 +4317,7 @@ ask on the IRC channel.
4310 4317
4311@node What do I need to use the Bluetooth plugin transport? 4318@node What do I need to use the Bluetooth plugin transport?
4312@subsection What do I need to use the Bluetooth plugin transport? 4319@subsection What do I need to use the Bluetooth plugin transport?
4313@c %**end of header 4320
4314 4321
4315If you are a GNU/Linux user and you want to use the Bluetooth 4322If you are a GNU/Linux user and you want to use the Bluetooth
4316transport plugin you should install the 4323transport plugin you should install the
@@ -4337,7 +4344,7 @@ protocol so we cannot turn on your device programatically!
4337@c FIXME: Change to unique title 4344@c FIXME: Change to unique title
4338@node How does it work2? 4345@node How does it work2?
4339@subsection How does it work2? 4346@subsection How does it work2?
4340@c %**end of header 4347
4341 4348
4342The Bluetooth transport plugin uses virtually the same code as the WLAN 4349The Bluetooth transport plugin uses virtually the same code as the WLAN
4343plugin and only the helper binary is different. The helper takes a single 4350plugin and only the helper binary is different. The helper takes a single
@@ -4367,7 +4374,7 @@ discovery.
4367 4374
4368@node What possible errors should I be aware of? 4375@node What possible errors should I be aware of?
4369@subsection What possible errors should I be aware of? 4376@subsection What possible errors should I be aware of?
4370@c %**end of header 4377
4371 4378
4372@emph{This section is dedicated for GNU/Linux users} 4379@emph{This section is dedicated for GNU/Linux users}
4373 4380
@@ -4406,7 +4413,7 @@ the device and to send some particular commands to it.
4406@c FIXME: A more unique name 4413@c FIXME: A more unique name
4407@node How do I configure my peer2? 4414@node How do I configure my peer2?
4408@subsection How do I configure my peer2? 4415@subsection How do I configure my peer2?
4409@c %**end of header 4416
4410 4417
4411On GNU/Linux, you just have to be sure that the interface name 4418On GNU/Linux, you just have to be sure that the interface name
4412corresponds to the one that you want to use. 4419corresponds to the one that you want to use.
@@ -4440,7 +4447,7 @@ transport service.
4440 4447
4441@node How can I test it? 4448@node How can I test it?
4442@subsection How can I test it? 4449@subsection How can I test it?
4443@c %**end of header 4450
4444 4451
4445If you have two Bluetooth devices on the same machine and you are using 4452If you have two Bluetooth devices on the same machine and you are using
4446GNU/Linux you must: 4453GNU/Linux you must:
@@ -4487,7 +4494,7 @@ transport service.
4487 4494
4488@node The implementation of the Bluetooth transport plugin 4495@node The implementation of the Bluetooth transport plugin
4489@subsection The implementation of the Bluetooth transport plugin 4496@subsection The implementation of the Bluetooth transport plugin
4490@c %**end of header 4497
4491 4498
4492This page describes the implementation of the Bluetooth transport plugin. 4499This page describes the implementation of the Bluetooth transport plugin.
4493 4500
@@ -4521,7 +4528,7 @@ platforms.
4521 4528
4522@node Linux functionality 4529@node Linux functionality
4523@subsubsection Linux functionality 4530@subsubsection Linux functionality
4524@c %**end of header 4531
4525 4532
4526In order to implement the plugin functionality on GNU/Linux I 4533In order to implement the plugin functionality on GNU/Linux I
4527used the BlueZ stack. 4534used the BlueZ stack.
@@ -4617,7 +4624,7 @@ support for @strong{broadcast messages}.}
4617 4624
4618@node Details about the broadcast implementation 4625@node Details about the broadcast implementation
4619@subsubsection Details about the broadcast implementation 4626@subsubsection Details about the broadcast implementation
4620@c %**end of header 4627
4621 4628
4622First I want to point out that the broadcast functionality for the CONTROL 4629First I want to point out that the broadcast functionality for the CONTROL
4623messages is not implemented in a conventional way. Since the inquiry scan 4630messages is not implemented in a conventional way. Since the inquiry scan
@@ -4664,7 +4671,7 @@ simply use the socket.
4664 4671
4665@node Windows functionality 4672@node Windows functionality
4666@subsubsection Windows functionality 4673@subsubsection Windows functionality
4667@c %**end of header 4674
4668 4675
4669For Windows I decided to use the Microsoft Bluetooth stack which has the 4676For Windows I decided to use the Microsoft Bluetooth stack which has the
4670advantage of coming standard from Windows XP SP2. The main disadvantage is 4677advantage of coming standard from Windows XP SP2. The main disadvantage is
@@ -4719,7 +4726,7 @@ broadcast messages. When it receives a broadcast message it will skip it.
4719 4726
4720@node Pending features 4727@node Pending features
4721@subsubsection Pending features 4728@subsubsection Pending features
4722@c %**end of header 4729
4723 4730
4724@itemize @bullet 4731@itemize @bullet
4725@item Implement the broadcast functionality on Windows @emph{(currently 4732@item Implement the broadcast functionality on Windows @emph{(currently
@@ -4735,7 +4742,7 @@ contact me.
4735 4742
4736@node WLAN plugin 4743@node WLAN plugin
4737@section WLAN plugin 4744@section WLAN plugin
4738@c %**end of header 4745
4739 4746
4740This section documents how the wlan transport plugin works. Parts which 4747This section documents how the wlan transport plugin works. Parts which
4741are not implemented yet or could be better implemented are described at 4748are not implemented yet or could be better implemented are described at
@@ -4744,7 +4751,7 @@ the end.
4744@cindex ATS Subsystem 4751@cindex ATS Subsystem
4745@node ATS Subsystem 4752@node ATS Subsystem
4746@section ATS Subsystem 4753@section ATS Subsystem
4747@c %**end of header 4754
4748 4755
4749ATS stands for "automatic transport selection", and the function of ATS in 4756ATS stands for "automatic transport selection", and the function of ATS in
4750GNUnet is to decide on which address (and thus transport plugin) should 4757GNUnet is to decide on which address (and thus transport plugin) should
@@ -4767,7 +4774,7 @@ superior.
4767@cindex CORE Subsystem 4774@cindex CORE Subsystem
4768@node CORE Subsystem 4775@node CORE Subsystem
4769@section CORE Subsystem 4776@section CORE Subsystem
4770@c %**end of header 4777
4771 4778
4772The CORE subsystem in GNUnet is responsible for securing link-layer 4779The CORE subsystem in GNUnet is responsible for securing link-layer
4773communications between nodes in the GNUnet overlay network. CORE builds 4780communications between nodes in the GNUnet overlay network. CORE builds
@@ -4811,7 +4818,7 @@ message counters and ephemeral keys)
4811@cindex core subsystem limitations 4818@cindex core subsystem limitations
4812@node Limitations 4819@node Limitations
4813@subsection Limitations 4820@subsection Limitations
4814@c %**end of header 4821
4815 4822
4816CORE does not perform 4823CORE does not perform
4817@uref{http://en.wikipedia.org/wiki/Routing, routing}; using CORE it is 4824@uref{http://en.wikipedia.org/wiki/Routing, routing}; using CORE it is
@@ -4845,7 +4852,7 @@ control is needed, applications should use the CADET service.
4845@cindex when is a peer connected 4852@cindex when is a peer connected
4846@node When is a peer "connected"? 4853@node When is a peer "connected"?
4847@subsection When is a peer "connected"? 4854@subsection When is a peer "connected"?
4848@c %**end of header 4855
4849 4856
4850In addition to the security features mentioned above, CORE also provides 4857In addition to the security features mentioned above, CORE also provides
4851one additional key feature to applications using it, and that is a 4858one additional key feature to applications using it, and that is a
@@ -4878,7 +4885,7 @@ connection.
4878@cindex libgnunetcore 4885@cindex libgnunetcore
4879@node libgnunetcore 4886@node libgnunetcore
4880@subsection libgnunetcore 4887@subsection libgnunetcore
4881@c %**end of header 4888
4882 4889
4883The CORE API (defined in @file{gnunet_core_service.h}) is the basic 4890The CORE API (defined in @file{gnunet_core_service.h}) is the basic
4884messaging API used by P2P applications built using GNUnet. It provides 4891messaging API used by P2P applications built using GNUnet. It provides
@@ -4943,7 +4950,7 @@ re-established, the applications will be receive matching connect events.
4943@cindex core clinet-service protocol 4950@cindex core clinet-service protocol
4944@node The CORE Client-Service Protocol 4951@node The CORE Client-Service Protocol
4945@subsection The CORE Client-Service Protocol 4952@subsection The CORE Client-Service Protocol
4946@c %**end of header 4953
4947 4954
4948This section describes the protocol between an application using the CORE 4955This section describes the protocol between an application using the CORE
4949service (the client) and the CORE service process itself. 4956service (the client) and the CORE service process itself.
@@ -4957,7 +4964,7 @@ service (the client) and the CORE service process itself.
4957 4964
4958@node Setup2 4965@node Setup2
4959@subsubsection Setup2 4966@subsubsection Setup2
4960@c %**end of header 4967
4961 4968
4962When a client connects to the CORE service, it first sends a 4969When a client connects to the CORE service, it first sends a
4963@code{InitMessage} which specifies options for the connection and a set of 4970@code{InitMessage} which specifies options for the connection and a set of
@@ -4986,7 +4993,7 @@ both CORE and the client can send messages.
4986 4993
4987@node Notifications 4994@node Notifications
4988@subsubsection Notifications 4995@subsubsection Notifications
4989@c %**end of header 4996
4990 4997
4991The CORE will send @code{ConnectNotifyMessage}s and 4998The CORE will send @code{ConnectNotifyMessage}s and
4992@code{DisconnectNotifyMessage}s whenever peers connect or disconnect from 4999@code{DisconnectNotifyMessage}s whenever peers connect or disconnect from
@@ -5002,7 +5009,7 @@ identity given is that of the receiver.
5002 5009
5003@node Sending 5010@node Sending
5004@subsubsection Sending 5011@subsubsection Sending
5005@c %**end of header 5012
5006 5013
5007When a client wants to transmit a message, it first requests a 5014When a client wants to transmit a message, it first requests a
5008transmission slot by sending a @code{SendMessageRequest} which specifies 5015transmission slot by sending a @code{SendMessageRequest} which specifies
@@ -5022,7 +5029,7 @@ for each request).
5022@cindex CORE Peer-to-Peer Protocol 5029@cindex CORE Peer-to-Peer Protocol
5023@node The CORE Peer-to-Peer Protocol 5030@node The CORE Peer-to-Peer Protocol
5024@subsection The CORE Peer-to-Peer Protocol 5031@subsection The CORE Peer-to-Peer Protocol
5025@c %**end of header 5032
5026 5033
5027 5034
5028@menu 5035@menu
@@ -5035,7 +5042,7 @@ for each request).
5035@cindex EphemeralKeyMessage creation 5042@cindex EphemeralKeyMessage creation
5036@node Creating the EphemeralKeyMessage 5043@node Creating the EphemeralKeyMessage
5037@subsubsection Creating the EphemeralKeyMessage 5044@subsubsection Creating the EphemeralKeyMessage
5038@c %**end of header 5045
5039 5046
5040When the CORE service starts, each peer creates a fresh ephemeral (ECC) 5047When the CORE service starts, each peer creates a fresh ephemeral (ECC)
5041public-private key pair and signs the corresponding 5048public-private key pair and signs the corresponding
@@ -5076,7 +5083,7 @@ connection using the new ephemeral key
5076 5083
5077@node Establishing a connection 5084@node Establishing a connection
5078@subsubsection Establishing a connection 5085@subsubsection Establishing a connection
5079@c %**end of header 5086
5080 5087
5081Peers begin their interaction by sending a @code{EphemeralKeyMessage} to 5088Peers begin their interaction by sending a @code{EphemeralKeyMessage} to
5082the other peer once the TRANSPORT service notifies the CORE service about 5089the other peer once the TRANSPORT service notifies the CORE service about
@@ -5094,7 +5101,7 @@ connection to @code{KX_STATE_UP}.
5094 5101
5095@node Encryption and Decryption 5102@node Encryption and Decryption
5096@subsubsection Encryption and Decryption 5103@subsubsection Encryption and Decryption
5097@c %**end of header 5104
5098 5105
5099All functions related to the key exchange and encryption/decryption of 5106All functions related to the key exchange and encryption/decryption of
5100messages can be found in @file{gnunet-service-core_kx.c} (except for the 5107messages can be found in @file{gnunet-service-core_kx.c} (except for the
@@ -5122,7 +5129,7 @@ older than 12 hours.
5122 5129
5123@node Type maps 5130@node Type maps
5124@subsubsection Type maps 5131@subsubsection Type maps
5125@c %**end of header 5132
5126 5133
5127Once an encrypted connection has been established, peers begin to exchange 5134Once an encrypted connection has been established, peers begin to exchange
5128type maps. Type maps are used to allow the CORE service to determine which 5135type maps. Type maps are used to allow the CORE service to determine which
@@ -5155,6 +5162,8 @@ receiving a type map by sending back a
5155retransmit the type map (with exponential back-off). 5162retransmit the type map (with exponential back-off).
5156 5163
5157@cindex CADET Subsystem 5164@cindex CADET Subsystem
5165@cindex CADET
5166@cindex cadet
5158@node CADET Subsystem 5167@node CADET Subsystem
5159@section CADET Subsystem 5168@section CADET Subsystem
5160 5169
@@ -5221,6 +5230,7 @@ Should a message get lost on TRANSPORT/CORE level, if a channel is
5221created with as reliable, CADET will retransmit the lost message and 5230created with as reliable, CADET will retransmit the lost message and
5222deliver it in order to the destination application. 5231deliver it in order to the destination application.
5223 5232
5233@pindex GNUNET_CADET_connect
5224To communicate with other peers using CADET, it is necessary to first 5234To communicate with other peers using CADET, it is necessary to first
5225connect to the service using @code{GNUNET_CADET_connect}. 5235connect to the service using @code{GNUNET_CADET_connect}.
5226This function takes several parameters in form of callbacks, to allow the 5236This function takes several parameters in form of callbacks, to allow the
@@ -5232,7 +5242,8 @@ CADET, even do one connection per listening port).
5232The function returns a handle which has to be used for any further 5242The function returns a handle which has to be used for any further
5233interaction with the service. 5243interaction with the service.
5234 5244
5235To connect to a remote peer a client has to call the 5245@pindex GNUNET_CADET_channel_create
5246To connect to a remote peer, a client has to call the
5236@code{GNUNET_CADET_channel_create} function. The most important parameters 5247@code{GNUNET_CADET_channel_create} function. The most important parameters
5237given are the remote peer's identity (it public key) and a port, which 5248given are the remote peer's identity (it public key) and a port, which
5238specifies which application on the remote peer to connect to, similar to 5249specifies which application on the remote peer to connect to, similar to
@@ -5242,6 +5253,7 @@ exchanges to assure and authenticated, secure and verified communication.
5242Similar to @code{GNUNET_CADET_connect},@code{GNUNET_CADET_create_channel} 5253Similar to @code{GNUNET_CADET_connect},@code{GNUNET_CADET_create_channel}
5243returns a handle to interact with the created channel. 5254returns a handle to interact with the created channel.
5244 5255
5256@pindex GNUNET_CADET_notify_transmit_ready
5245For every message the client wants to send to the remote application, 5257For every message the client wants to send to the remote application,
5246@code{GNUNET_CADET_notify_transmit_ready} must be called, indicating the 5258@code{GNUNET_CADET_notify_transmit_ready} must be called, indicating the
5247channel on which the message should be sent and the size of the message 5259channel on which the message should be sent and the size of the message
@@ -5258,6 +5270,7 @@ case. To be alerted when a channel is online, a client can call
5258means that the channel is online. The callback can give 0 bytes to CADET 5270means that the channel is online. The callback can give 0 bytes to CADET
5259if no message is to be sent, this is OK. 5271if no message is to be sent, this is OK.
5260 5272
5273@pindex GNUNET_CADET_notify_transmit_cancel
5261If a transmission was requested but before the callback fires it is no 5274If a transmission was requested but before the callback fires it is no
5262longer needed, it can be canceled with 5275longer needed, it can be canceled with
5263@code{GNUNET_CADET_notify_transmit_ready_cancel}, which uses the handle 5276@code{GNUNET_CADET_notify_transmit_ready_cancel}, which uses the handle
@@ -5266,6 +5279,7 @@ As in the case of CORE, only one message can be requested at a time: a
5266client must not call @code{GNUNET_CADET_notify_transmit_ready} again until 5279client must not call @code{GNUNET_CADET_notify_transmit_ready} again until
5267the callback is called or the request is canceled. 5280the callback is called or the request is canceled.
5268 5281
5282@pindex GNUNET_CADET_channel_destroy
5269When a channel is no longer needed, a client can call 5283When a channel is no longer needed, a client can call
5270@code{GNUNET_CADET_channel_destroy} to get rid of it. 5284@code{GNUNET_CADET_channel_destroy} to get rid of it.
5271Note that CADET will try to transmit all pending traffic before notifying 5285Note that CADET will try to transmit all pending traffic before notifying
@@ -5277,6 +5291,7 @@ on any incoming or outgoing channels are given to the client when CADET
5277executes the callbacks given to it at the time of 5291executes the callbacks given to it at the time of
5278@code{GNUNET_CADET_connect}. 5292@code{GNUNET_CADET_connect}.
5279 5293
5294@pindex GNUNET_CADET_disconnect
5280Finally, when an application no longer wants to use CADET, it should call 5295Finally, when an application no longer wants to use CADET, it should call
5281@code{GNUNET_CADET_disconnect}, but first all channels and pending 5296@code{GNUNET_CADET_disconnect}, but first all channels and pending
5282transmissions must be closed (otherwise CADET will complain). 5297transmissions must be closed (otherwise CADET will complain).
@@ -5394,7 +5409,7 @@ to all the other peers, who will calculate the estimate from it.
5394@node Target value 5409@node Target value
5395@subsubsection Target value 5410@subsubsection Target value
5396 5411
5397@c %**end of header 5412
5398 5413
5399The target value itself is generated by hashing the current time, rounded 5414The target value itself is generated by hashing the current time, rounded
5400down to an agreed value. If the rounding amount is 1h (default) and the 5415down to an agreed value. If the rounding amount is 1h (default) and the
@@ -5404,7 +5419,7 @@ Every repetition is called a round.
5404 5419
5405@node Timing 5420@node Timing
5406@subsubsection Timing 5421@subsubsection Timing
5407@c %**end of header 5422
5408 5423
5409The NSE subsystem has some timing control to avoid everybody broadcasting 5424The NSE subsystem has some timing control to avoid everybody broadcasting
5410its ID all at one. Once each peer has the target random value, it 5425its ID all at one. Once each peer has the target random value, it
@@ -5421,7 +5436,7 @@ peers closest to the target value start broadcasting their ID the first.
5421@node Controlled Flooding 5436@node Controlled Flooding
5422@subsubsection Controlled Flooding 5437@subsubsection Controlled Flooding
5423 5438
5424@c %**end of header 5439
5425 5440
5426When a peer receives a value, first it verifies that it is closer than the 5441When a peer receives a value, first it verifies that it is closer than the
5427closest value it had so far, otherwise it answers the incoming message 5442closest value it had so far, otherwise it answers the incoming message
@@ -5440,7 +5455,7 @@ to the neighbors.
5440@node Calculating the estimate 5455@node Calculating the estimate
5441@subsubsection Calculating the estimate 5456@subsubsection Calculating the estimate
5442 5457
5443@c %**end of header 5458
5444 5459
5445Once the closest ID has been spread across the network each peer gets the 5460Once the closest ID has been spread across the network each peer gets the
5446exact distance between this ID and the target value of the round and 5461exact distance between this ID and the target value of the round and
@@ -5459,7 +5474,7 @@ means a factor of two in the size estimate.
5459@node libgnunetnse 5474@node libgnunetnse
5460@subsection libgnunetnse 5475@subsection libgnunetnse
5461 5476
5462@c %**end of header 5477
5463 5478
5464The NSE subsystem has the simplest API of all services, with only two 5479The NSE subsystem has the simplest API of all services, with only two
5465calls: @code{GNUNET_NSE_connect} and @code{GNUNET_NSE_disconnect}. 5480calls: @code{GNUNET_NSE_connect} and @code{GNUNET_NSE_disconnect}.
@@ -5485,7 +5500,7 @@ is no longer called with new estimates.
5485@node Results 5500@node Results
5486@subsubsection Results 5501@subsubsection Results
5487 5502
5488@c %**end of header 5503
5489 5504
5490The callback provides two values: the average and the 5505The callback provides two values: the average and the
5491@uref{http://en.wikipedia.org/wiki/Standard_deviation, standard deviation} 5506@uref{http://en.wikipedia.org/wiki/Standard_deviation, standard deviation}
@@ -5523,7 +5538,7 @@ changing rapidly).
5523@node libgnunetnse - Examples 5538@node libgnunetnse - Examples
5524@subsubsection libgnunetnse -Examples 5539@subsubsection libgnunetnse -Examples
5525 5540
5526@c %**end of header 5541
5527 5542
5528Let's close with a couple examples. 5543Let's close with a couple examples.
5529 5544
@@ -5550,7 +5565,7 @@ case a 5 sigma minimum would be 2 million and a 6 sigma minimum,
5550@node The NSE Client-Service Protocol 5565@node The NSE Client-Service Protocol
5551@subsection The NSE Client-Service Protocol 5566@subsection The NSE Client-Service Protocol
5552 5567
5553@c %**end of header 5568
5554 5569
5555As with the API, the client-service protocol is very simple, only has 2 5570As with the API, the client-service protocol is very simple, only has 2
5556different messages, defined in @code{src/nse/nse.h}: 5571different messages, defined in @code{src/nse/nse.h}:
@@ -5571,8 +5586,8 @@ simply disconnects from the service, with no message involved.
5571@node The NSE Peer-to-Peer Protocol 5586@node The NSE Peer-to-Peer Protocol
5572@subsection The NSE Peer-to-Peer Protocol 5587@subsection The NSE Peer-to-Peer Protocol
5573 5588
5574@c %**end of header
5575 5589
5590@pindex GNUNET_MESSAGE_TYPE_NSE_P2P_FLOOD
5576The NSE subsystem only has one message in the P2P protocol, the 5591The NSE subsystem only has one message in the P2P protocol, the
5577@code{GNUNET_MESSAGE_TYPE_NSE_P2P_FLOOD} message. 5592@code{GNUNET_MESSAGE_TYPE_NSE_P2P_FLOOD} message.
5578 5593
@@ -5626,7 +5641,7 @@ traffic spikes and minimize cross-messages.
5626@node HOSTLIST Subsystem 5641@node HOSTLIST Subsystem
5627@section HOSTLIST Subsystem 5642@section HOSTLIST Subsystem
5628 5643
5629@c %**end of header 5644
5630 5645
5631Peers in the GNUnet overlay network need address information so that they 5646Peers in the GNUnet overlay network need address information so that they
5632can connect with other peers. GNUnet uses so called HELLO messages to 5647can connect with other peers. GNUnet uses so called HELLO messages to
@@ -5664,7 +5679,7 @@ manual effort or the use of a HOSTLIST to obtain HELLOs.
5664@node HELLOs 5679@node HELLOs
5665@subsection HELLOs 5680@subsection HELLOs
5666 5681
5667@c %**end of header 5682
5668 5683
5669The basic information peers require to connect to other peers are 5684The basic information peers require to connect to other peers are
5670contained in so called HELLO messages you can think of as a business card. 5685contained in so called HELLO messages you can think of as a business card.
@@ -5676,7 +5691,7 @@ contact other peers.
5676@node Overview for the HOSTLIST subsystem 5691@node Overview for the HOSTLIST subsystem
5677@subsection Overview for the HOSTLIST subsystem 5692@subsection Overview for the HOSTLIST subsystem
5678 5693
5679@c %**end of header 5694
5680 5695
5681The HOSTLIST subsystem provides a way to distribute and obtain contact 5696The HOSTLIST subsystem provides a way to distribute and obtain contact
5682information to connect to other peers using a simple HTTP GET request. 5697information to connect to other peers using a simple HTTP GET request.
@@ -5702,7 +5717,7 @@ service.
5702@node Features 5717@node Features
5703@subsubsection Features 5718@subsubsection Features
5704 5719
5705@c %**end of header 5720
5706 5721
5707The HOSTLIST daemon can: 5722The HOSTLIST daemon can:
5708 5723
@@ -5720,7 +5735,7 @@ peers
5720@node HOSTLIST - Limitations 5735@node HOSTLIST - Limitations
5721@subsubsection HOSTLIST - Limitations 5736@subsubsection HOSTLIST - Limitations
5722 5737
5723@c %**end of header 5738
5724 5739
5725The HOSTLIST daemon does not: 5740The HOSTLIST daemon does not:
5726 5741
@@ -5732,7 +5747,7 @@ The HOSTLIST daemon does not:
5732@node Interacting with the HOSTLIST daemon 5747@node Interacting with the HOSTLIST daemon
5733@subsection Interacting with the HOSTLIST daemon 5748@subsection Interacting with the HOSTLIST daemon
5734 5749
5735@c %**end of header 5750
5736 5751
5737The HOSTLIST subsystem is currently implemented as a daemon, so there is 5752The HOSTLIST subsystem is currently implemented as a daemon, so there is
5738no need for the user to interact with it and therefore there is no 5753no need for the user to interact with it and therefore there is no
@@ -5760,7 +5775,7 @@ download frequency).
5760@node Hostlist security address validation 5775@node Hostlist security address validation
5761@subsection Hostlist security address validation 5776@subsection Hostlist security address validation
5762 5777
5763@c %**end of header 5778
5764 5779
5765Since information obtained from other parties cannot be trusted without 5780Since information obtained from other parties cannot be trusted without
5766validation, we have to distinguish between @emph{validated} and 5781validation, we have to distinguish between @emph{validated} and
@@ -5781,12 +5796,13 @@ to the TRANSPORT server to validate the addresses.
5781@node The HOSTLIST daemon 5796@node The HOSTLIST daemon
5782@subsection The HOSTLIST daemon 5797@subsection The HOSTLIST daemon
5783 5798
5784@c %**end of header 5799
5785 5800
5786The hostlist daemon is the main component of the HOSTLIST subsystem. It is 5801The hostlist daemon is the main component of the HOSTLIST subsystem. It is
5787started by the ARM service and (if configured) starts the HOSTLIST client 5802started by the ARM service and (if configured) starts the HOSTLIST client
5788and server components. 5803and server components.
5789 5804
5805@pindex GNUNET_MESSAGE_TYPE_HOSTLIST_ADVERTISEMENT
5790If the daemon provides a hostlist itself it can advertise it's own 5806If the daemon provides a hostlist itself it can advertise it's own
5791hostlist to other peers. To do so it sends a 5807hostlist to other peers. To do so it sends a
5792@code{GNUNET_MESSAGE_TYPE_HOSTLIST_ADVERTISEMENT} message to other peers 5808@code{GNUNET_MESSAGE_TYPE_HOSTLIST_ADVERTISEMENT} message to other peers
@@ -5811,7 +5827,7 @@ subsystems and disconnecting from CORE.
5811@node The HOSTLIST server 5827@node The HOSTLIST server
5812@subsection The HOSTLIST server 5828@subsection The HOSTLIST server
5813 5829
5814@c %**end of header 5830
5815 5831
5816The server provides a way for other peers to obtain HELLOs. Basically it 5832The server provides a way for other peers to obtain HELLOs. Basically it
5817is a small web server other peers can connect to and download a list of 5833is a small web server other peers can connect to and download a list of
@@ -5827,7 +5843,7 @@ to other peers connecting on CORE level.
5827@node The HTTP Server 5843@node The HTTP Server
5828@subsubsection The HTTP Server 5844@subsubsection The HTTP Server
5829 5845
5830@c %**end of header 5846
5831 5847
5832During startup, the server starts a web server listening on the port 5848During startup, the server starts a web server listening on the port
5833specified with the HTTPPORT value (default 8080). In addition it connects 5849specified with the HTTPPORT value (default 8080). In addition it connects
@@ -5853,7 +5869,7 @@ The connection will be closed immediately if no hostlist is available.
5853@node Advertising the URL 5869@node Advertising the URL
5854@subsubsection Advertising the URL 5870@subsubsection Advertising the URL
5855 5871
5856@c %**end of header 5872
5857 5873
5858The server also advertises the URL to download the hostlist to other peers 5874The server also advertises the URL to download the hostlist to other peers
5859if hostlist advertisement is enabled. 5875if hostlist advertisement is enabled.
@@ -5865,7 +5881,7 @@ peer using the CORE service.
5865@node The HOSTLIST client 5881@node The HOSTLIST client
5866@subsection The HOSTLIST client 5882@subsection The HOSTLIST client
5867 5883
5868@c %**end of header 5884
5869 5885
5870The client provides the functionality to download the list of HELLOs from 5886The client provides the functionality to download the list of HELLOs from
5871a set of URLs. 5887a set of URLs.
@@ -5889,7 +5905,7 @@ The client supports two modes of operation:
5889@node Bootstrapping 5905@node Bootstrapping
5890@subsubsection Bootstrapping 5906@subsubsection Bootstrapping
5891 5907
5892@c %**end of header 5908
5893 5909
5894For bootstrapping, it schedules a task to download the hostlist from the 5910For bootstrapping, it schedules a task to download the hostlist from the
5895set of known URLs. 5911set of known URLs.
@@ -5918,7 +5934,7 @@ quality of this URL is updated.
5918@node Learning 5934@node Learning
5919@subsubsection Learning 5935@subsubsection Learning
5920 5936
5921@c %**end of header 5937
5922 5938
5923The client also manages hostlist advertisements from other peers. The 5939The client also manages hostlist advertisements from other peers. The
5924HOSTLIST daemon forwards @code{GNUNET_MESSAGE_TYPE_HOSTLIST_ADVERTISEMENT} 5940HOSTLIST daemon forwards @code{GNUNET_MESSAGE_TYPE_HOSTLIST_ADVERTISEMENT}
@@ -5937,7 +5953,7 @@ never discarded.
5937@node Usage 5953@node Usage
5938@subsection Usage 5954@subsection Usage
5939 5955
5940@c %**end of header 5956
5941 5957
5942To start HOSTLIST by default, it has to be added to the DEFAULTSERVICES 5958To start HOSTLIST by default, it has to be added to the DEFAULTSERVICES
5943section for the ARM services. This is done in the default configuration. 5959section for the ARM services. This is done in the default configuration.
@@ -5951,7 +5967,7 @@ Configuring your peer to provide a hostlist
5951@node IDENTITY Subsystem 5967@node IDENTITY Subsystem
5952@section IDENTITY Subsystem 5968@section IDENTITY Subsystem
5953 5969
5954@c %**end of header 5970
5955 5971
5956Identities of "users" in GNUnet are called egos. 5972Identities of "users" in GNUnet are called egos.
5957Egos can be used as pseudonyms ("fake names") or be tied to an 5973Egos can be used as pseudonyms ("fake names") or be tied to an
@@ -6007,7 +6023,7 @@ between anonymous and pseudonymous egos.
6007@cindex libgnunetidentity 6023@cindex libgnunetidentity
6008@node libgnunetidentity 6024@node libgnunetidentity
6009@subsection libgnunetidentity 6025@subsection libgnunetidentity
6010@c %**end of header 6026
6011 6027
6012 6028
6013@menu 6029@menu
@@ -6021,7 +6037,7 @@ between anonymous and pseudonymous egos.
6021@node Connecting to the service 6037@node Connecting to the service
6022@subsubsection Connecting to the service 6038@subsubsection Connecting to the service
6023 6039
6024@c %**end of header 6040
6025 6041
6026First, typical clients connect to the identity service using 6042First, typical clients connect to the identity service using
6027@code{GNUNET_IDENTITY_connect}. This function takes a callback as a 6043@code{GNUNET_IDENTITY_connect}. This function takes a callback as a
@@ -6057,7 +6073,7 @@ ego's handle.
6057@node Operations on Egos 6073@node Operations on Egos
6058@subsubsection Operations on Egos 6074@subsubsection Operations on Egos
6059 6075
6060@c %**end of header 6076
6061 6077
6062Given an ego handle, the main operations are to get its associated private 6078Given an ego handle, the main operations are to get its associated private
6063key using @code{GNUNET_IDENTITY_ego_get_private_key} or its associated 6079key using @code{GNUNET_IDENTITY_ego_get_private_key} or its associated
@@ -6080,7 +6096,7 @@ only the continuation will no longer be called.
6080@node The anonymous Ego 6096@node The anonymous Ego
6081@subsubsection The anonymous Ego 6097@subsubsection The anonymous Ego
6082 6098
6083@c %**end of header 6099
6084 6100
6085A special way to obtain an ego handle is to call 6101A special way to obtain an ego handle is to call
6086@code{GNUNET_IDENTITY_ego_get_anonymous}, which returns an ego for the 6102@code{GNUNET_IDENTITY_ego_get_anonymous}, which returns an ego for the
@@ -6115,7 +6131,7 @@ using @code{GNUNET_IDENTITY_get}.
6115@node The IDENTITY Client-Service Protocol 6131@node The IDENTITY Client-Service Protocol
6116@subsection The IDENTITY Client-Service Protocol 6132@subsection The IDENTITY Client-Service Protocol
6117 6133
6118@c %**end of header 6134
6119 6135
6120A client connecting to the identity service first sends a message with 6136A client connecting to the identity service first sends a message with
6121type 6137type
@@ -6206,7 +6222,7 @@ private key.}
6206@node Editing Zone Information 6222@node Editing Zone Information
6207@subsubsection Editing Zone Information 6223@subsubsection Editing Zone Information
6208 6224
6209@c %**end of header 6225
6210 6226
6211NAMESTORE provides functions to lookup records stored under a label in a 6227NAMESTORE provides functions to lookup records stored under a label in a
6212zone and to store records under a label in a zone. 6228zone and to store records under a label in a zone.
@@ -6246,7 +6262,7 @@ the operation.
6246@node Iterating Zone Information 6262@node Iterating Zone Information
6247@subsubsection Iterating Zone Information 6263@subsubsection Iterating Zone Information
6248 6264
6249@c %**end of header 6265
6250 6266
6251A client can iterate over all information in a zone or all zones managed 6267A client can iterate over all information in a zone or all zones managed
6252by NAMESTORE. 6268by NAMESTORE.
@@ -6266,7 +6282,7 @@ NULL value to indicate.
6266@node Monitoring Zone Information 6282@node Monitoring Zone Information
6267@subsubsection Monitoring Zone Information 6283@subsubsection Monitoring Zone Information
6268 6284
6269@c %**end of header 6285
6270 6286
6271Clients can also monitor zones to be notified about changes. Here the 6287Clients can also monitor zones to be notified about changes. Here the
6272clients uses the @code{GNUNET_NAMESTORE_zone_monitor_start} function and 6288clients uses the @code{GNUNET_NAMESTORE_zone_monitor_start} function and
@@ -6287,7 +6303,7 @@ from the function to start the monitoring.
6287@node PEERINFO Subsystem 6303@node PEERINFO Subsystem
6288@section PEERINFO Subsystem 6304@section PEERINFO Subsystem
6289 6305
6290@c %**end of header 6306
6291 6307
6292The PEERINFO subsystem is used to store verified (validated) information 6308The PEERINFO subsystem is used to store verified (validated) information
6293about known peers in a persistent way. It obtains these addresses for 6309about known peers in a persistent way. It obtains these addresses for
@@ -6320,7 +6336,7 @@ service providing this functionality.
6320@node PEERINFO - Features 6336@node PEERINFO - Features
6321@subsection PEERINFO - Features 6337@subsection PEERINFO - Features
6322 6338
6323@c %**end of header 6339
6324 6340
6325@itemize @bullet 6341@itemize @bullet
6326@item Persistent storage 6342@item Persistent storage
@@ -6340,7 +6356,7 @@ service providing this functionality.
6340@node DeveloperPeer Information 6356@node DeveloperPeer Information
6341@subsection DeveloperPeer Information 6357@subsection DeveloperPeer Information
6342 6358
6343@c %**end of header 6359
6344 6360
6345The PEERINFO subsystem stores these information in the form of HELLO 6361The PEERINFO subsystem stores these information in the form of HELLO
6346messages you can think of as business cards. 6362messages you can think of as business cards.
@@ -6374,7 +6390,7 @@ subsystem using these information to maintain connections to other peers.
6374@node Startup 6390@node Startup
6375@subsection Startup 6391@subsection Startup
6376 6392
6377@c %**end of header 6393
6378 6394
6379During startup the PEERINFO services loads persistent HELLOs from disk. 6395During startup the PEERINFO services loads persistent HELLOs from disk.
6380First PEERINFO parses the directory configured in the HOSTS value of the 6396First PEERINFO parses the directory configured in the HOSTS value of the
@@ -6390,7 +6406,7 @@ The use of these HELLOs can be prevented by setting the
6390@node Managing Information 6406@node Managing Information
6391@subsection Managing Information 6407@subsection Managing Information
6392 6408
6393@c %**end of header 6409
6394 6410
6395The PEERINFO services stores information about known PEERS and a single 6411The PEERINFO services stores information about known PEERS and a single
6396HELLO message for every peer. 6412HELLO message for every peer.
@@ -6412,7 +6428,7 @@ from the disk.
6412@node Obtaining Information 6428@node Obtaining Information
6413@subsection Obtaining Information 6429@subsection Obtaining Information
6414 6430
6415@c %**end of header 6431
6416 6432
6417When a client requests information from PEERINFO, PEERINFO performs a 6433When a client requests information from PEERINFO, PEERINFO performs a
6418lookup for the respective peer or all peers if desired and transmits this 6434lookup for the respective peer or all peers if desired and transmits this
@@ -6429,7 +6445,7 @@ merge for example) or a new peer was added.
6429@node The PEERINFO Client-Service Protocol 6445@node The PEERINFO Client-Service Protocol
6430@subsection The PEERINFO Client-Service Protocol 6446@subsection The PEERINFO Client-Service Protocol
6431 6447
6432@c %**end of header 6448
6433 6449
6434To connect and disconnect to and from the PEERINFO Service PEERINFO 6450To connect and disconnect to and from the PEERINFO Service PEERINFO
6435utilizes the util client/server infrastructure, so no special messages 6451utilizes the util client/server infrastructure, so no special messages
@@ -6461,7 +6477,7 @@ message, it can proceed with the next request if any is pending.
6461@node libgnunetpeerinfo 6477@node libgnunetpeerinfo
6462@subsection libgnunetpeerinfo 6478@subsection libgnunetpeerinfo
6463 6479
6464@c %**end of header 6480
6465 6481
6466The PEERINFO API consists mainly of three different functionalities: 6482The PEERINFO API consists mainly of three different functionalities:
6467 6483
@@ -6480,7 +6496,7 @@ The PEERINFO API consists mainly of three different functionalities:
6480@node Connecting to the PEERINFO Service 6496@node Connecting to the PEERINFO Service
6481@subsubsection Connecting to the PEERINFO Service 6497@subsubsection Connecting to the PEERINFO Service
6482 6498
6483@c %**end of header 6499
6484 6500
6485To connect to the PEERINFO service the function 6501To connect to the PEERINFO service the function
6486@code{GNUNET_PEERINFO_connect} is used, taking a configuration handle as 6502@code{GNUNET_PEERINFO_connect} is used, taking a configuration handle as
@@ -6491,7 +6507,7 @@ handle returned from the connect function has to be called.
6491@node Adding Information to the PEERINFO Service 6507@node Adding Information to the PEERINFO Service
6492@subsubsection Adding Information to the PEERINFO Service 6508@subsubsection Adding Information to the PEERINFO Service
6493 6509
6494@c %**end of header 6510
6495 6511
6496@code{GNUNET_PEERINFO_add_peer} adds a new peer to the PEERINFO subsystem 6512@code{GNUNET_PEERINFO_add_peer} adds a new peer to the PEERINFO subsystem
6497storage. This function takes the PEERINFO handle as an argument, the HELLO 6513storage. This function takes the PEERINFO handle as an argument, the HELLO
@@ -6506,7 +6522,7 @@ can tell PEERINFO to notify if new peer information are available.
6506@node Obtaining Information from the PEERINFO Service 6522@node Obtaining Information from the PEERINFO Service
6507@subsubsection Obtaining Information from the PEERINFO Service 6523@subsubsection Obtaining Information from the PEERINFO Service
6508 6524
6509@c %**end of header 6525
6510 6526
6511To iterate over information in PEERINFO you use 6527To iterate over information in PEERINFO you use
6512@code{GNUNET_PEERINFO_iterate}. 6528@code{GNUNET_PEERINFO_iterate}.
@@ -6531,7 +6547,7 @@ with @code{GNUNET_PEERINFO_notify_cancel}.
6531@node PEERSTORE Subsystem 6547@node PEERSTORE Subsystem
6532@section PEERSTORE Subsystem 6548@section PEERSTORE Subsystem
6533 6549
6534@c %**end of header 6550
6535 6551
6536GNUnet's PEERSTORE subsystem offers persistent per-peer storage for other 6552GNUnet's PEERSTORE subsystem offers persistent per-peer storage for other
6537GNUnet subsystems. GNUnet subsystems can use PEERSTORE to persistently 6553GNUnet subsystems. GNUnet subsystems can use PEERSTORE to persistently
@@ -6555,7 +6571,7 @@ Each data record stored with PEERSTORE contains the following fields:
6555@node Functionality 6571@node Functionality
6556@subsection Functionality 6572@subsection Functionality
6557 6573
6558@c %**end of header 6574
6559 6575
6560Subsystems can store any type of value under a (subsystem, peerid, key) 6576Subsystems can store any type of value under a (subsystem, peerid, key)
6561combination. A "replace" flag set during store operations forces the 6577combination. A "replace" flag set during store operations forces the
@@ -6581,7 +6597,7 @@ request to PEERSTORE.
6581@node Architecture 6597@node Architecture
6582@subsection Architecture 6598@subsection Architecture
6583 6599
6584@c %**end of header 6600
6585 6601
6586PEERSTORE implements the following components: 6602PEERSTORE implements the following components:
6587 6603
@@ -6597,7 +6613,7 @@ only an "sqlite" plugin is implemented.
6597@node libgnunetpeerstore 6613@node libgnunetpeerstore
6598@subsection libgnunetpeerstore 6614@subsection libgnunetpeerstore
6599 6615
6600@c %**end of header 6616
6601 6617
6602libgnunetpeerstore is the library containing the PEERSTORE API. Subsystems 6618libgnunetpeerstore is the library containing the PEERSTORE API. Subsystems
6603wishing to communicate with the PEERSTORE service use this API to open a 6619wishing to communicate with the PEERSTORE service use this API to open a
@@ -6645,7 +6661,7 @@ destroyed as well.
6645@node SET Subsystem 6661@node SET Subsystem
6646@section SET Subsystem 6662@section SET Subsystem
6647 6663
6648@c %**end of header 6664
6649 6665
6650The SET service implements efficient set operations between two peers 6666The SET service implements efficient set operations between two peers
6651over a mesh tunnel. 6667over a mesh tunnel.
@@ -6668,7 +6684,7 @@ The size of an element's data is limited to around 62 KB.
6668@node Local Sets 6684@node Local Sets
6669@subsection Local Sets 6685@subsection Local Sets
6670 6686
6671@c %**end of header 6687
6672 6688
6673Sets created by a local client can be modified and reused for multiple 6689Sets created by a local client can be modified and reused for multiple
6674operations. As each set operation requires potentially expensive special 6690operations. As each set operation requires potentially expensive special
@@ -6682,7 +6698,7 @@ type.
6682@node Set Modifications 6698@node Set Modifications
6683@subsection Set Modifications 6699@subsection Set Modifications
6684 6700
6685@c %**end of header 6701
6686 6702
6687Even when set operations are active, one can add to and remove elements 6703Even when set operations are active, one can add to and remove elements
6688from a set. 6704from a set.
@@ -6695,7 +6711,7 @@ attaching @emph{generation information} to each element and operation.
6695@node Set Operations 6711@node Set Operations
6696@subsection Set Operations 6712@subsection Set Operations
6697 6713
6698@c %**end of header 6714
6699 6715
6700Set operations can be started in two ways: Either by accepting an 6716Set operations can be started in two ways: Either by accepting an
6701operation request from a remote peer, or by requesting a set operation 6717operation request from a remote peer, or by requesting a set operation
@@ -6712,7 +6728,7 @@ request (providing a local set for the operation) or reject it.
6712@node Result Elements 6728@node Result Elements
6713@subsection Result Elements 6729@subsection Result Elements
6714 6730
6715@c %**end of header 6731
6716 6732
6717The SET service has three @emph{result modes} that determine how an 6733The SET service has three @emph{result modes} that determine how an
6718operation's result set is delivered to the client: 6734operation's result set is delivered to the client:
@@ -6737,7 +6753,7 @@ actually interested in the result of the set operation.
6737@node libgnunetset 6753@node libgnunetset
6738@subsection libgnunetset 6754@subsection libgnunetset
6739 6755
6740@c %**end of header 6756
6741 6757
6742@menu 6758@menu
6743* Sets:: 6759* Sets::
@@ -6750,7 +6766,7 @@ actually interested in the result of the set operation.
6750@node Sets 6766@node Sets
6751@subsubsection Sets 6767@subsubsection Sets
6752 6768
6753@c %**end of header 6769
6754 6770
6755New sets are created with @code{GNUNET_SET_create}. Both the local peer's 6771New sets are created with @code{GNUNET_SET_create}. Both the local peer's
6756configuration (as each set has its own client connection) and the 6772configuration (as each set has its own client connection) and the
@@ -6766,7 +6782,7 @@ Elements are added and removed with @code{GNUNET_SET_add_element} and
6766@node Listeners 6782@node Listeners
6767@subsubsection Listeners 6783@subsubsection Listeners
6768 6784
6769@c %**end of header 6785
6770 6786
6771Listeners are created with @code{GNUNET_SET_listen}. Each time time a 6787Listeners are created with @code{GNUNET_SET_listen}. Each time time a
6772remote peer suggests a set operation with an application id and operation 6788remote peer suggests a set operation with an application id and operation
@@ -6779,7 +6795,7 @@ until the client calls @code{GNUNET_SET_commit}
6779@node Operations 6795@node Operations
6780@subsubsection Operations 6796@subsubsection Operations
6781 6797
6782@c %**end of header 6798
6783 6799
6784Operations to be initiated by the local peer are created with 6800Operations to be initiated by the local peer are created with
6785@code{GNUNET_SET_prepare}. Note that the operation will not be started 6801@code{GNUNET_SET_prepare}. Note that the operation will not be started
@@ -6789,7 +6805,7 @@ until the client calls @code{GNUNET_SET_commit}
6789@node Supplying a Set 6805@node Supplying a Set
6790@subsubsection Supplying a Set 6806@subsubsection Supplying a Set
6791 6807
6792@c %**end of header 6808
6793 6809
6794To create symmetry between the two ways of starting a set operation 6810To create symmetry between the two ways of starting a set operation
6795(accepting and initiating it), the operation handles returned by 6811(accepting and initiating it), the operation handles returned by
@@ -6803,7 +6819,7 @@ operation.
6803@node The Result Callback 6819@node The Result Callback
6804@subsubsection The Result Callback 6820@subsubsection The Result Callback
6805 6821
6806@c %**end of header 6822
6807 6823
6808Clients must specify both a result mode and a result callback with 6824Clients must specify both a result mode and a result callback with
6809@code{GNUNET_SET_accept} and @code{GNUNET_SET_prepare}. The result 6825@code{GNUNET_SET_accept} and @code{GNUNET_SET_prepare}. The result
@@ -6817,7 +6833,7 @@ or if it is in the difference between the original set and the final set.
6817@node The SET Client-Service Protocol 6833@node The SET Client-Service Protocol
6818@subsection The SET Client-Service Protocol 6834@subsection The SET Client-Service Protocol
6819 6835
6820@c %**end of header 6836
6821 6837
6822@menu 6838@menu
6823* Creating Sets:: 6839* Creating Sets::
@@ -6831,7 +6847,7 @@ or if it is in the difference between the original set and the final set.
6831@node Creating Sets 6847@node Creating Sets
6832@subsubsection Creating Sets 6848@subsubsection Creating Sets
6833 6849
6834@c %**end of header 6850
6835 6851
6836For each set of a client, there exists a client connection to the service. 6852For each set of a client, there exists a client connection to the service.
6837Sets are created by sending the @code{GNUNET_SERVICE_SET_CREATE} message 6853Sets are created by sending the @code{GNUNET_SERVICE_SET_CREATE} message
@@ -6842,7 +6858,7 @@ the client.
6842@node Listeners2 6858@node Listeners2
6843@subsubsection Listeners2 6859@subsubsection Listeners2
6844 6860
6845@c %**end of header 6861
6846 6862
6847Each listener also requires a seperate client connection. By sending the 6863Each listener also requires a seperate client connection. By sending the
6848@code{GNUNET_SERVICE_SET_LISTEN} message, the client notifies the service 6864@code{GNUNET_SERVICE_SET_LISTEN} message, the client notifies the service
@@ -6856,7 +6872,7 @@ is supplied for the set operation.
6856@node Initiating Operations 6872@node Initiating Operations
6857@subsubsection Initiating Operations 6873@subsubsection Initiating Operations
6858 6874
6859@c %**end of header 6875
6860 6876
6861Operations with remote peers are initiated by sending a 6877Operations with remote peers are initiated by sending a
6862@code{GNUNET_SERVICE_SET_EVALUATE} message to the service. The@ client 6878@code{GNUNET_SERVICE_SET_EVALUATE} message to the service. The@ client
@@ -6865,7 +6881,7 @@ connection that this message is sent by determines the set to use.
6865@node Modifying Sets 6881@node Modifying Sets
6866@subsubsection Modifying Sets 6882@subsubsection Modifying Sets
6867 6883
6868@c %**end of header 6884
6869 6885
6870Sets are modified with the @code{GNUNET_SERVICE_SET_ADD} and 6886Sets are modified with the @code{GNUNET_SERVICE_SET_ADD} and
6871@code{GNUNET_SERVICE_SET_REMOVE} messages. 6887@code{GNUNET_SERVICE_SET_REMOVE} messages.
@@ -6878,7 +6894,7 @@ Sets are modified with the @code{GNUNET_SERVICE_SET_ADD} and
6878 6894
6879@node Results and Operation Status 6895@node Results and Operation Status
6880@subsubsection Results and Operation Status 6896@subsubsection Results and Operation Status
6881@c %**end of header 6897
6882 6898
6883The service notifies the client of result elements and success/failure of 6899The service notifies the client of result elements and success/failure of
6884a set operation with the @code{GNUNET_SERVICE_SET_RESULT} message. 6900a set operation with the @code{GNUNET_SERVICE_SET_RESULT} message.
@@ -6886,7 +6902,7 @@ a set operation with the @code{GNUNET_SERVICE_SET_RESULT} message.
6886@node Iterating Sets 6902@node Iterating Sets
6887@subsubsection Iterating Sets 6903@subsubsection Iterating Sets
6888 6904
6889@c %**end of header 6905
6890 6906
6891All elements of a set can be requested by sending 6907All elements of a set can be requested by sending
6892@code{GNUNET_SERVICE_SET_ITER_REQUEST}. The server responds with 6908@code{GNUNET_SERVICE_SET_ITER_REQUEST}. The server responds with
@@ -6899,7 +6915,7 @@ iteration may be active for a set at any given time.
6899@node The SET Intersection Peer-to-Peer Protocol 6915@node The SET Intersection Peer-to-Peer Protocol
6900@subsection The SET Intersection Peer-to-Peer Protocol 6916@subsection The SET Intersection Peer-to-Peer Protocol
6901 6917
6902@c %**end of header 6918
6903 6919
6904The intersection protocol operates over CADET and starts with a 6920The intersection protocol operates over CADET and starts with a
6905GNUNET_MESSAGE_TYPE_SET_P2P_OPERATION_REQUEST being sent by the peer 6921GNUNET_MESSAGE_TYPE_SET_P2P_OPERATION_REQUEST being sent by the peer
@@ -6931,7 +6947,7 @@ just the initial handshake.
6931@node The Bloom filter exchange 6947@node The Bloom filter exchange
6932@subsubsection The Bloom filter exchange 6948@subsubsection The Bloom filter exchange
6933 6949
6934@c %**end of header 6950
6935 6951
6936In this phase, each peer transmits a Bloom filter over the remaining 6952In this phase, each peer transmits a Bloom filter over the remaining
6937keys of the local set to the other peer using a 6953keys of the local set to the other peer using a
@@ -6958,7 +6974,7 @@ this time as the sender.
6958@node Salt 6974@node Salt
6959@subsubsection Salt 6975@subsubsection Salt
6960 6976
6961@c %**end of header 6977
6962 6978
6963Bloomfilter operations are probabilistic: With some non-zero probability 6979Bloomfilter operations are probabilistic: With some non-zero probability
6964the test may incorrectly say an element is in the set, even though it is 6980the test may incorrectly say an element is in the set, even though it is
@@ -6978,7 +6994,7 @@ sets of the same size, and where the XOR over all keys computes the same
6978@node The SET Union Peer-to-Peer Protocol 6994@node The SET Union Peer-to-Peer Protocol
6979@subsection The SET Union Peer-to-Peer Protocol 6995@subsection The SET Union Peer-to-Peer Protocol
6980 6996
6981@c %**end of header 6997
6982 6998
6983The SET union protocol is based on Eppstein's efficient set reconciliation 6999The SET union protocol is based on Eppstein's efficient set reconciliation
6984without prior context. You should read this paper first if you want to 7000without prior context. You should read this paper first if you want to
@@ -7021,7 +7037,7 @@ succeeding if they failed due to collisions before.
7021@node STATISTICS Subsystem 7037@node STATISTICS Subsystem
7022@section STATISTICS Subsystem 7038@section STATISTICS Subsystem
7023 7039
7024@c %**end of header 7040
7025 7041
7026In GNUnet, the STATISTICS subsystem offers a central place for all 7042In GNUnet, the STATISTICS subsystem offers a central place for all
7027subsystems to publish unsigned 64-bit integer run-time statistics. 7043subsystems to publish unsigned 64-bit integer run-time statistics.
@@ -7073,7 +7089,7 @@ to STATISTICS during shutdown.
7073@node libgnunetstatistics 7089@node libgnunetstatistics
7074@subsection libgnunetstatistics 7090@subsection libgnunetstatistics
7075 7091
7076@c %**end of header 7092
7077 7093
7078@strong{libgnunetstatistics} is the library containing the API for the 7094@strong{libgnunetstatistics} is the library containing the API for the
7079STATISTICS subsystem. Any process requiring to use STATISTICS should use 7095STATISTICS subsystem. Any process requiring to use STATISTICS should use
@@ -7104,7 +7120,7 @@ functions from the API can be used.
7104@node Statistics retrieval 7120@node Statistics retrieval
7105@subsubsection Statistics retrieval 7121@subsubsection Statistics retrieval
7106 7122
7107@c %**end of header 7123
7108 7124
7109Once a connection to the statistics service is obtained, information 7125Once a connection to the statistics service is obtained, information
7110about any other system which uses statistics can be retrieved with the 7126about any other system which uses statistics can be retrieved with the
@@ -7127,7 +7143,7 @@ when we want to shutdown and cleanup everything.
7127@node Setting statistics and updating them 7143@node Setting statistics and updating them
7128@subsubsection Setting statistics and updating them 7144@subsubsection Setting statistics and updating them
7129 7145
7130@c %**end of header 7146
7131 7147
7132So far we have seen how to retrieve statistics, here we will learn how we 7148So far we have seen how to retrieve statistics, here we will learn how we
7133can set statistics and update them so that other subsystems can retrieve 7149can set statistics and update them so that other subsystems can retrieve
@@ -7157,7 +7173,7 @@ to worry about sending requests too quickly.
7157@node Watches 7173@node Watches
7158@subsubsection Watches 7174@subsubsection Watches
7159 7175
7160@c %**end of header 7176
7161 7177
7162As interesting feature of STATISTICS lies in serving notifications 7178As interesting feature of STATISTICS lies in serving notifications
7163whenever a statistic of our interest is modified. 7179whenever a statistic of our interest is modified.
@@ -7177,7 +7193,7 @@ parameters that are used for registering the watch.
7177 7193
7178@node The STATISTICS Client-Service Protocol 7194@node The STATISTICS Client-Service Protocol
7179@subsection The STATISTICS Client-Service Protocol 7195@subsection The STATISTICS Client-Service Protocol
7180@c %**end of header 7196
7181 7197
7182 7198
7183@menu 7199@menu
@@ -7189,7 +7205,7 @@ parameters that are used for registering the watch.
7189@node Statistics retrieval2 7205@node Statistics retrieval2
7190@subsubsection Statistics retrieval2 7206@subsubsection Statistics retrieval2
7191 7207
7192@c %**end of header 7208
7193 7209
7194To retrieve statistics, the client transmits a message of type 7210To retrieve statistics, the client transmits a message of type
7195@code{GNUNET_MESSAGE_TYPE_STATISTICS_GET} containing the given subsystem 7211@code{GNUNET_MESSAGE_TYPE_STATISTICS_GET} containing the given subsystem
@@ -7203,7 +7219,7 @@ type @code{GNUNET_MESSAGE_TYPE_STATISTICS_END}.
7203@node Setting and updating statistics 7219@node Setting and updating statistics
7204@subsubsection Setting and updating statistics 7220@subsubsection Setting and updating statistics
7205 7221
7206@c %**end of header 7222
7207 7223
7208The subsystem name, parameter name, its value and the persistence flag are 7224The subsystem name, parameter name, its value and the persistence flag are
7209communicated to the service through the message 7225communicated to the service through the message
@@ -7226,7 +7242,7 @@ the message should be treated as an update value.
7226@node Watching for updates 7242@node Watching for updates
7227@subsubsection Watching for updates 7243@subsubsection Watching for updates
7228 7244
7229@c %**end of header 7245
7230 7246
7231The function registers the watch at the service by sending a message of 7247The function registers the watch at the service by sending a message of
7232type @code{GNUNET_MESSAGE_TYPE_STATISTICS_WATCH}. The service then sends 7248type @code{GNUNET_MESSAGE_TYPE_STATISTICS_WATCH}. The service then sends
@@ -7239,7 +7255,7 @@ parameter's value is changed.
7239@node Distributed Hash Table (DHT) 7255@node Distributed Hash Table (DHT)
7240@section Distributed Hash Table (DHT) 7256@section Distributed Hash Table (DHT)
7241 7257
7242@c %**end of header 7258
7243 7259
7244GNUnet includes a generic distributed hash table that can be used by 7260GNUnet includes a generic distributed hash table that can be used by
7245developers building P2P applications in the framework. 7261developers building P2P applications in the framework.
@@ -7285,7 +7301,7 @@ loss of performance or quality of service is expected in this case).
7285@node Block library and plugins 7301@node Block library and plugins
7286@subsection Block library and plugins 7302@subsection Block library and plugins
7287 7303
7288@c %**end of header 7304
7289 7305
7290@menu 7306@menu
7291* What is a Block?:: 7307* What is a Block?::
@@ -7298,7 +7314,7 @@ loss of performance or quality of service is expected in this case).
7298@node What is a Block? 7314@node What is a Block?
7299@subsubsection What is a Block? 7315@subsubsection What is a Block?
7300 7316
7301@c %**end of header 7317
7302 7318
7303Blocks are small (< 63k) pieces of data stored under a key (struct 7319Blocks are small (< 63k) pieces of data stored under a key (struct
7304GNUNET_HashCode). Blocks have a type (enum GNUNET_BlockType) which defines 7320GNUNET_HashCode). Blocks have a type (enum GNUNET_BlockType) which defines
@@ -7315,7 +7331,7 @@ available for any type of block.
7315@node The API of libgnunetblock 7331@node The API of libgnunetblock
7316@subsubsection The API of libgnunetblock 7332@subsubsection The API of libgnunetblock
7317 7333
7318@c %**end of header 7334
7319 7335
7320The block library requires for each (family of) block type(s) a block 7336The block library requires for each (family of) block type(s) a block
7321plugin (implementing @file{gnunet_block_plugin.h}) that provides basic 7337plugin (implementing @file{gnunet_block_plugin.h}) that provides basic
@@ -7347,7 +7363,7 @@ If a plugin fails to do this, responses may loop in the network.
7347 7363
7348@node Queries 7364@node Queries
7349@subsubsection Queries 7365@subsubsection Queries
7350@c %**end of header 7366
7351 7367
7352The query format for any block in GNUnet consists of four main components. 7368The query format for any block in GNUnet consists of four main components.
7353First, the type of the desired block must be specified. Second, the query 7369First, the type of the desired block must be specified. Second, the query
@@ -7375,7 +7391,7 @@ Depending on the results from the plugin, the DHT will then discard the
7375@node Sample Code 7391@node Sample Code
7376@subsubsection Sample Code 7392@subsubsection Sample Code
7377 7393
7378@c %**end of header 7394
7379 7395
7380The source code in @strong{plugin_block_test.c} is a good starting point 7396The source code in @strong{plugin_block_test.c} is a good starting point
7381for new block plugins --- it does the minimal work by implementing a 7397for new block plugins --- it does the minimal work by implementing a
@@ -7386,7 +7402,7 @@ block plugin.
7386@node Conclusion2 7402@node Conclusion2
7387@subsubsection Conclusion2 7403@subsubsection Conclusion2
7388 7404
7389@c %**end of header 7405
7390 7406
7391In conclusion, GNUnet subsystems that want to use the DHT need to define a 7407In conclusion, GNUnet subsystems that want to use the DHT need to define a
7392block format and write a plugin to match queries and replies. For testing, 7408block format and write a plugin to match queries and replies. For testing,
@@ -7400,7 +7416,7 @@ of error checking that results from this primitive implementation.
7400@node libgnunetdht 7416@node libgnunetdht
7401@subsection libgnunetdht 7417@subsection libgnunetdht
7402 7418
7403@c %**end of header 7419
7404 7420
7405The DHT API itself is pretty simple and offers the usual GET and PUT 7421The DHT API itself is pretty simple and offers the usual GET and PUT
7406functions that work as expected. The specified block type refers to the 7422functions that work as expected. The specified block type refers to the
@@ -7418,7 +7434,7 @@ data stored in the network.
7418@node GET 7434@node GET
7419@subsubsection GET 7435@subsubsection GET
7420 7436
7421@c %**end of header 7437
7422 7438
7423When using GET, the main consideration for developers (other than the 7439When using GET, the main consideration for developers (other than the
7424block library) should be that after issuing a GET, the DHT will 7440block library) should be that after issuing a GET, the DHT will
@@ -7446,7 +7462,7 @@ bandwidth consumption.
7446@node PUT 7462@node PUT
7447@subsubsection PUT 7463@subsubsection PUT
7448 7464
7449@c %**end of header 7465
7450 7466
7451@c inconsistent use of ``must'' above it's written ``MUST'' 7467@c inconsistent use of ``must'' above it's written ``MUST''
7452In contrast to GET operations, developers @strong{must} manually re-run 7468In contrast to GET operations, developers @strong{must} manually re-run
@@ -7468,7 +7484,7 @@ DHT PUT operations should be repeated at least every 1-2 hours.
7468@node MONITOR 7484@node MONITOR
7469@subsubsection MONITOR 7485@subsubsection MONITOR
7470 7486
7471@c %**end of header 7487
7472 7488
7473The DHT API also allows applications to monitor messages crossing the 7489The DHT API also allows applications to monitor messages crossing the
7474local DHT service. 7490local DHT service.
@@ -7491,7 +7507,7 @@ number of workers will process the distributed workload.
7491@node DHT Routing Options 7507@node DHT Routing Options
7492@subsubsection DHT Routing Options 7508@subsubsection DHT Routing Options
7493 7509
7494@c %**end of header 7510
7495 7511
7496There are two important options for GET and PUT requests: 7512There are two important options for GET and PUT requests:
7497 7513
@@ -7521,7 +7537,7 @@ in the future offer performance improvements for clique topologies.
7521@node The DHT Client-Service Protocol 7537@node The DHT Client-Service Protocol
7522@subsection The DHT Client-Service Protocol 7538@subsection The DHT Client-Service Protocol
7523 7539
7524@c %**end of header 7540
7525 7541
7526@menu 7542@menu
7527* PUTting data into the DHT:: 7543* PUTting data into the DHT::
@@ -7532,7 +7548,7 @@ in the future offer performance improvements for clique topologies.
7532@node PUTting data into the DHT 7548@node PUTting data into the DHT
7533@subsubsection PUTting data into the DHT 7549@subsubsection PUTting data into the DHT
7534 7550
7535@c %**end of header 7551
7536 7552
7537To store (PUT) data into the DHT, the client sends a 7553To store (PUT) data into the DHT, the client sends a
7538@code{struct GNUNET_DHT_ClientPutMessage} to the service. 7554@code{struct GNUNET_DHT_ClientPutMessage} to the service.
@@ -7553,7 +7569,7 @@ in the P2P interaction.
7553@node GETting data from the DHT 7569@node GETting data from the DHT
7554@subsubsection GETting data from the DHT 7570@subsubsection GETting data from the DHT
7555 7571
7556@c %**end of header 7572
7557 7573
7558To retrieve (GET) data from the DHT, the client sends a 7574To retrieve (GET) data from the DHT, the client sends a
7559@code{struct GNUNET_DHT_ClientGetMessage} to the service. The message 7575@code{struct GNUNET_DHT_ClientGetMessage} to the service. The message
@@ -7592,7 +7608,7 @@ service --- and to stop them individually.
7592@node Monitoring the DHT 7608@node Monitoring the DHT
7593@subsubsection Monitoring the DHT 7609@subsubsection Monitoring the DHT
7594 7610
7595@c %**end of header 7611
7596 7612
7597To begin monitoring, the client sends a 7613To begin monitoring, the client sends a
7598@code{struct GNUNET_DHT_MonitorStartStop} message to the DHT service. 7614@code{struct GNUNET_DHT_MonitorStartStop} message to the DHT service.
@@ -7607,7 +7623,7 @@ these messages contains all of the information about the event.
7607 7623
7608@node The DHT Peer-to-Peer Protocol 7624@node The DHT Peer-to-Peer Protocol
7609@subsection The DHT Peer-to-Peer Protocol 7625@subsection The DHT Peer-to-Peer Protocol
7610@c %**end of header 7626
7611 7627
7612 7628
7613@menu 7629@menu
@@ -7619,7 +7635,7 @@ these messages contains all of the information about the event.
7619@node Routing GETs or PUTs 7635@node Routing GETs or PUTs
7620@subsubsection Routing GETs or PUTs 7636@subsubsection Routing GETs or PUTs
7621 7637
7622@c %**end of header 7638
7623 7639
7624When routing GETs or PUTs, the DHT service selects a suitable subset of 7640When routing GETs or PUTs, the DHT service selects a suitable subset of
7625neighbours for forwarding. The exact number of neighbours can be zero or 7641neighbours for forwarding. The exact number of neighbours can be zero or
@@ -7634,7 +7650,7 @@ traversed; those peers are also excluded from the selection.
7634@node PUTting data into the DHT2 7650@node PUTting data into the DHT2
7635@subsubsection PUTting data into the DHT2 7651@subsubsection PUTting data into the DHT2
7636 7652
7637@c %**end of header 7653
7638 7654
7639To PUT data into the DHT, the service sends a @code{struct PeerPutMessage} 7655To PUT data into the DHT, the service sends a @code{struct PeerPutMessage}
7640of type @code{GNUNET_MESSAGE_TYPE_DHT_P2P_PUT} to the respective 7656of type @code{GNUNET_MESSAGE_TYPE_DHT_P2P_PUT} to the respective
@@ -7656,7 +7672,7 @@ its own identity (this is done to reduce bandwidth).
7656@node GETting data from the DHT2 7672@node GETting data from the DHT2
7657@subsubsection GETting data from the DHT2 7673@subsubsection GETting data from the DHT2
7658 7674
7659@c %**end of header 7675
7660 7676
7661A peer can search the DHT by sending @code{struct PeerGetMessage}s of type 7677A peer can search the DHT by sending @code{struct PeerGetMessage}s of type
7662@code{GNUNET_MESSAGE_TYPE_DHT_P2P_GET} to other peers. In addition to the 7678@code{GNUNET_MESSAGE_TYPE_DHT_P2P_GET} to other peers. In addition to the
@@ -7695,7 +7711,7 @@ The DHT service may also cache forwarded results locally if the
7695@node GNU Name System (GNS) 7711@node GNU Name System (GNS)
7696@section GNU Name System (GNS) 7712@section GNU Name System (GNS)
7697 7713
7698@c %**end of header 7714
7699 7715
7700The GNU Name System (GNS) is a decentralized database that enables users 7716The GNU Name System (GNS) is a decentralized database that enables users
7701to securely resolve names to values. 7717to securely resolve names to values.
@@ -7750,7 +7766,7 @@ record types.
7750@node libgnunetgns 7766@node libgnunetgns
7751@subsection libgnunetgns 7767@subsection libgnunetgns
7752 7768
7753@c %**end of header 7769
7754 7770
7755The GNS API itself is extremely simple. Clients first connect to the 7771The GNS API itself is extremely simple. Clients first connect to the
7756GNS service using @code{GNUNET_GNS_connect}. 7772GNS service using @code{GNUNET_GNS_connect}.
@@ -7768,7 +7784,7 @@ Once finished, clients disconnect using @code{GNUNET_GNS_disconnect}.
7768@node Looking up records 7784@node Looking up records
7769@subsubsection Looking up records 7785@subsubsection Looking up records
7770 7786
7771@c %**end of header 7787
7772 7788
7773@code{GNUNET_GNS_lookup} takes a number of arguments: 7789@code{GNUNET_GNS_lookup} takes a number of arguments:
7774 7790
@@ -7810,7 +7826,7 @@ must no longer be canceled.
7810@node Accessing the records 7826@node Accessing the records
7811@subsubsection Accessing the records 7827@subsubsection Accessing the records
7812 7828
7813@c %**end of header 7829
7814 7830
7815The @code{libgnunetgnsrecord} library provides an API to manipulate the 7831The @code{libgnunetgnsrecord} library provides an API to manipulate the
7816GNS record array that is given to proc. In particular, it offers 7832GNS record array that is given to proc. In particular, it offers
@@ -7824,7 +7840,7 @@ functions for parsing (and serializing) common types of DNS records.
7824@node Creating records 7840@node Creating records
7825@subsubsection Creating records 7841@subsubsection Creating records
7826 7842
7827@c %**end of header 7843
7828 7844
7829Creating GNS records is typically done by building the respective record 7845Creating GNS records is typically done by building the respective record
7830information (possibly with the help of @code{libgnunetgnsrecord} and 7846information (possibly with the help of @code{libgnunetgnsrecord} and
@@ -7835,7 +7851,7 @@ operation.
7835@node Future work 7851@node Future work
7836@subsubsection Future work 7852@subsubsection Future work
7837 7853
7838@c %**end of header 7854
7839 7855
7840In the future, we want to expand @code{libgnunetgns} to allow 7856In the future, we want to expand @code{libgnunetgns} to allow
7841applications to observe shortening operations performed during GNS 7857applications to observe shortening operations performed during GNS
@@ -7845,7 +7861,7 @@ this happens.
7845@node libgnunetgnsrecord 7861@node libgnunetgnsrecord
7846@subsection libgnunetgnsrecord 7862@subsection libgnunetgnsrecord
7847 7863
7848@c %**end of header 7864
7849 7865
7850The @code{libgnunetgnsrecord} library is used to manipulate GNS 7866The @code{libgnunetgnsrecord} library is used to manipulate GNS
7851records (in plaintext or in their encrypted format). 7867records (in plaintext or in their encrypted format).
@@ -7871,7 +7887,7 @@ standard GNS record types.
7871@node Value handling 7887@node Value handling
7872@subsubsection Value handling 7888@subsubsection Value handling
7873 7889
7874@c %**end of header 7890
7875 7891
7876@code{GNUNET_GNSRECORD_value_to_string} can be used to convert 7892@code{GNUNET_GNSRECORD_value_to_string} can be used to convert
7877the (binary) representation of a GNS record value to a human readable, 7893the (binary) representation of a GNS record value to a human readable,
@@ -7886,7 +7902,7 @@ a GNS record value.
7886@node Type handling 7902@node Type handling
7887@subsubsection Type handling 7903@subsubsection Type handling
7888 7904
7889@c %**end of header 7905
7890 7906
7891@code{GNUNET_GNSRECORD_typename_to_number} can be used to obtain the 7907@code{GNUNET_GNSRECORD_typename_to_number} can be used to obtain the
7892numeric value associated with a given typename. For example, given the 7908numeric value associated with a given typename. For example, given the
@@ -7904,7 +7920,7 @@ typename "A".
7904@node GNS plugins 7920@node GNS plugins
7905@subsection GNS plugins 7921@subsection GNS plugins
7906 7922
7907@c %**end of header 7923
7908 7924
7909Adding a new GNS record type typically involves writing (or extending) a 7925Adding a new GNS record type typically involves writing (or extending) a
7910GNSRECORD plugin. The plugin needs to implement the 7926GNSRECORD plugin. The plugin needs to implement the
@@ -7930,7 +7946,7 @@ typenames and numbers documented in the previous subsection.
7930 7946
7931@node The GNS Client-Service Protocol 7947@node The GNS Client-Service Protocol
7932@subsection The GNS Client-Service Protocol 7948@subsection The GNS Client-Service Protocol
7933@c %**end of header 7949
7934 7950
7935The GNS client-service protocol consists of two simple messages, the 7951The GNS client-service protocol consists of two simple messages, the
7936@code{LOOKUP} message and the @code{LOOKUP_RESULT}. Each @code{LOOKUP} 7952@code{LOOKUP} message and the @code{LOOKUP_RESULT}. Each @code{LOOKUP}
@@ -7950,7 +7966,7 @@ They can thus be deserialized using
7950@node Hijacking the DNS-Traffic using gnunet-service-dns 7966@node Hijacking the DNS-Traffic using gnunet-service-dns
7951@subsection Hijacking the DNS-Traffic using gnunet-service-dns 7967@subsection Hijacking the DNS-Traffic using gnunet-service-dns
7952 7968
7953@c %**end of header 7969
7954 7970
7955This section documents how the gnunet-service-dns (and the 7971This section documents how the gnunet-service-dns (and the
7956gnunet-helper-dns) intercepts DNS queries from the local system. 7972gnunet-helper-dns) intercepts DNS queries from the local system.
@@ -7987,7 +8003,7 @@ interface with the original nameserver as source address.
7987@node Network Setup Details 8003@node Network Setup Details
7988@subsubsection Network Setup Details 8004@subsubsection Network Setup Details
7989 8005
7990@c %**end of header 8006
7991 8007
7992The DNS interceptor adds the following rules to the Linux kernel: 8008The DNS interceptor adds the following rules to the Linux kernel:
7993@example 8009@example
@@ -8008,7 +8024,7 @@ arbitrarily). The third line adds a routing policy based on this mark
8008@node Serving DNS lookups via GNS on W32 8024@node Serving DNS lookups via GNS on W32
8009@subsection Serving DNS lookups via GNS on W32 8025@subsection Serving DNS lookups via GNS on W32
8010 8026
8011@c %**end of header 8027
8012 8028
8013This section documents how the libw32nsp (and 8029This section documents how the libw32nsp (and
8014gnunet-gns-helper-service-w32) do DNS resolutions of DNS queries on the 8030gnunet-gns-helper-service-w32) do DNS resolutions of DNS queries on the
@@ -8078,10 +8094,9 @@ This includes some of well known utilities, like "ping" and "nslookup".
8078@node Importing DNS Zones into GNS 8094@node Importing DNS Zones into GNS
8079@subsection Importing DNS Zones into GNS 8095@subsection Importing DNS Zones into GNS
8080 8096
8081@c %**end of header
8082
8083This section discusses the challenges and problems faced when writing the 8097This section discusses the challenges and problems faced when writing the
8084Ascension tool. It also takes a look at possible improvements in the future. 8098Ascension tool. It also takes a look at possible improvements in the
8099future.
8085 8100
8086@menu 8101@menu
8087* Conversions between DNS and GNS:: 8102* Conversions between DNS and GNS::
@@ -8089,29 +8104,31 @@ Ascension tool. It also takes a look at possible improvements in the future.
8089* Performance:: 8104* Performance::
8090@end menu 8105@end menu
8091 8106
8107@cindex DNS Conversion
8092@node Conversions between DNS and GNS 8108@node Conversions between DNS and GNS
8093@subsubsection Conversions between DNS and GNS 8109@subsubsection Conversions between DNS and GNS
8094 8110
8095The differences between the two name systems lies in the details 8111The differences between the two name systems lies in the details
8096and is not always transparent. For instance an SRV record is converted to a 8112and is not always transparent.
8097GNS only BOX record. 8113For instance an SRV record is converted to a GNS only BOX record.
8098 8114
8099This is done by converting to a BOX record from an existing SRV record: 8115This is done by converting to a BOX record from an existing SRV record:
8100 8116
8101@example 8117@example
8102# SRV 8118# SRV
8103# _service._proto.name. TTL class SRV priority weight port target 8119# _service._proto.name. TTL class SRV priority weight port target
8104_sip._tcp.example.com. 14000 IN SRV 0 0 5060 www.example.com. 8120_sip._tcp.example.com. 14000 IN SRV 0 0 5060 www.example.com.
8105# BOX 8121# BOX
8106# TTL BOX flags port protocol recordtype priority weight port target 8122# TTL BOX flags port protocol recordtype priority weight port target
810714000 BOX n 5060 6 33 0 0 5060 www.example.com 812314000 BOX n 5060 6 33 0 0 5060 www.example.com
8108@end example 8124@end example
8109 8125
8110Other records that have such a transformation is the MX record type, as well as 8126Other records that have such a transformation is the MX record type,
8111the SOA record type. 8127as well as the SOA record type.
8128
8129Transformation of a SOA record into GNS works as described in the
8130following example. Very important to note are the rname and mname keys.
8112 8131
8113Transformation of a SOA record into GNS works as described in the following
8114example. Very important to note are the rname and mname keys.
8115@example 8132@example
8116# BIND syntax for a clean SOA record 8133# BIND syntax for a clean SOA record
8117@ IN SOA master.example.com. hostmaster.example.com. ( 8134@ IN SOA master.example.com. hostmaster.example.com. (
@@ -8235,7 +8252,7 @@ that uses the C API would be cleaner and better.
8235@node GNS Namecache 8252@node GNS Namecache
8236@section GNS Namecache 8253@section GNS Namecache
8237 8254
8238@c %**end of header 8255
8239 8256
8240The NAMECACHE subsystem is responsible for caching (encrypted) resolution 8257The NAMECACHE subsystem is responsible for caching (encrypted) resolution
8241results of the GNU Name System (GNS). GNS makes zone information available 8258results of the GNU Name System (GNS). GNS makes zone information available
@@ -8274,7 +8291,7 @@ plugin API.
8274@node libgnunetnamecache 8291@node libgnunetnamecache
8275@subsection libgnunetnamecache 8292@subsection libgnunetnamecache
8276 8293
8277@c %**end of header 8294
8278 8295
8279The NAMECACHE API consists of five simple functions. First, there is 8296The NAMECACHE API consists of five simple functions. First, there is
8280@code{GNUNET_NAMECACHE_connect} to connect to the NAMECACHE service. 8297@code{GNUNET_NAMECACHE_connect} to connect to the NAMECACHE service.
@@ -8297,7 +8314,7 @@ The maximum size of a block that can be stored in the NAMECACHE is
8297@node The NAMECACHE Client-Service Protocol 8314@node The NAMECACHE Client-Service Protocol
8298@subsection The NAMECACHE Client-Service Protocol 8315@subsection The NAMECACHE Client-Service Protocol
8299 8316
8300@c %**end of header 8317
8301 8318
8302All messages in the NAMECACHE IPC protocol start with the 8319All messages in the NAMECACHE IPC protocol start with the
8303@code{struct GNUNET_NAMECACHE_Header} which adds a request 8320@code{struct GNUNET_NAMECACHE_Header} which adds a request
@@ -8315,7 +8332,7 @@ out-of-order.
8315@node Lookup 8332@node Lookup
8316@subsubsection Lookup 8333@subsubsection Lookup
8317 8334
8318@c %**end of header 8335
8319 8336
8320The @code{struct LookupBlockMessage} is used to lookup a block stored in 8337The @code{struct LookupBlockMessage} is used to lookup a block stored in
8321the cache. 8338the cache.
@@ -8329,7 +8346,7 @@ of the block.
8329@node Store 8346@node Store
8330@subsubsection Store 8347@subsubsection Store
8331 8348
8332@c %**end of header 8349
8333 8350
8334The @code{struct BlockCacheMessage} is used to cache a block in the 8351The @code{struct BlockCacheMessage} is used to cache a block in the
8335NAMECACHE. 8352NAMECACHE.
@@ -8341,7 +8358,7 @@ message as well.
8341 8358
8342@node The NAMECACHE Plugin API 8359@node The NAMECACHE Plugin API
8343@subsection The NAMECACHE Plugin API 8360@subsection The NAMECACHE Plugin API
8344@c %**end of header 8361
8345 8362
8346The NAMECACHE plugin API consists of two functions, @code{cache_block} to 8363The NAMECACHE plugin API consists of two functions, @code{cache_block} to
8347store a block in the database, and @code{lookup_block} to lookup a block 8364store a block in the database, and @code{lookup_block} to lookup a block
@@ -8356,7 +8373,7 @@ in the database.
8356@node Lookup2 8373@node Lookup2
8357@subsubsection Lookup2 8374@subsubsection Lookup2
8358 8375
8359@c %**end of header 8376
8360 8377
8361The @code{lookup_block} function is expected to return at most one block 8378The @code{lookup_block} function is expected to return at most one block
8362to the iterator, and return @code{GNUNET_NO} if there were no non-expired 8379to the iterator, and return @code{GNUNET_NO} if there were no non-expired
@@ -8367,7 +8384,7 @@ supposed to return the result with the largest expiration time.
8367@node Store2 8384@node Store2
8368@subsubsection Store2 8385@subsubsection Store2
8369 8386
8370@c %**end of header 8387
8371 8388
8372The @code{cache_block} function is expected to try to store the block in 8389The @code{cache_block} function is expected to try to store the block in
8373the database, and return @code{GNUNET_SYSERR} if this was not possible 8390the database, and return @code{GNUNET_SYSERR} if this was not possible
@@ -8384,7 +8401,7 @@ block is more recent during the store operation.
8384@cindex REVOCATION Subsystem 8401@cindex REVOCATION Subsystem
8385@node REVOCATION Subsystem 8402@node REVOCATION Subsystem
8386@section REVOCATION Subsystem 8403@section REVOCATION Subsystem
8387@c %**end of header 8404
8388 8405
8389The REVOCATION subsystem is responsible for key revocation of Egos. 8406The REVOCATION subsystem is responsible for key revocation of Egos.
8390If a user learns that theis private key has been compromised or has lost 8407If a user learns that theis private key has been compromised or has lost
@@ -8404,7 +8421,7 @@ propagate revocation messages.
8404@node Dissemination 8421@node Dissemination
8405@subsection Dissemination 8422@subsection Dissemination
8406 8423
8407@c %**end of header 8424
8408 8425
8409When a revocation is performed, the revocation is first of all 8426When a revocation is performed, the revocation is first of all
8410disseminated by flooding the overlay network. 8427disseminated by flooding the overlay network.
@@ -8428,7 +8445,7 @@ The SET service is used to perform this operation efficiently.
8428@node Revocation Message Design Requirements 8445@node Revocation Message Design Requirements
8429@subsection Revocation Message Design Requirements 8446@subsection Revocation Message Design Requirements
8430 8447
8431@c %**end of header 8448
8432 8449
8433However, flooding is also quite costly, creating O(|E|) messages on a 8450However, flooding is also quite costly, creating O(|E|) messages on a
8434network with |E| edges. 8451network with |E| edges.
@@ -8450,7 +8467,7 @@ revocation message ahead of time and store it in a secure location.
8450@node libgnunetrevocation 8467@node libgnunetrevocation
8451@subsection libgnunetrevocation 8468@subsection libgnunetrevocation
8452 8469
8453@c %**end of header 8470
8454 8471
8455The REVOCATION API consists of two parts, to query and to issue 8472The REVOCATION API consists of two parts, to query and to issue
8456revocations. 8473revocations.
@@ -8465,7 +8482,7 @@ revocations.
8465@node Querying for revoked keys 8482@node Querying for revoked keys
8466@subsubsection Querying for revoked keys 8483@subsubsection Querying for revoked keys
8467 8484
8468@c %**end of header 8485
8469 8486
8470@code{GNUNET_REVOCATION_query} is used to check if a given ECDSA public 8487@code{GNUNET_REVOCATION_query} is used to check if a given ECDSA public
8471key has been revoked. 8488key has been revoked.
@@ -8476,7 +8493,7 @@ the return value.
8476@node Preparing revocations 8493@node Preparing revocations
8477@subsubsection Preparing revocations 8494@subsubsection Preparing revocations
8478 8495
8479@c %**end of header 8496
8480 8497
8481It is often desirable to create a revocation record ahead-of-time and 8498It is often desirable to create a revocation record ahead-of-time and
8482store it in an off-line location to be used later in an emergency. 8499store it in an off-line location to be used later in an emergency.
@@ -8544,7 +8561,7 @@ successfully.
8544@node The REVOCATION Peer-to-Peer Protocol 8561@node The REVOCATION Peer-to-Peer Protocol
8545@subsection The REVOCATION Peer-to-Peer Protocol 8562@subsection The REVOCATION Peer-to-Peer Protocol
8546 8563
8547@c %**end of header 8564
8548 8565
8549Revocation uses two disjoint ways to spread revocation information among 8566Revocation uses two disjoint ways to spread revocation information among
8550peers. 8567peers.
@@ -8579,7 +8596,7 @@ larger hashed peer identity.
8579@node File-sharing (FS) Subsystem 8596@node File-sharing (FS) Subsystem
8580@section File-sharing (FS) Subsystem 8597@section File-sharing (FS) Subsystem
8581 8598
8582@c %**end of header 8599
8583 8600
8584This chapter describes the details of how the file-sharing service works. 8601This chapter describes the details of how the file-sharing service works.
8585As with all services, it is split into an API (libgnunetfs), the service 8602As with all services, it is split into an API (libgnunetfs), the service
@@ -8617,7 +8634,7 @@ NOTE: The documentation in this chapter is quite incomplete.
8617@node Encoding for Censorship-Resistant Sharing (ECRS) 8634@node Encoding for Censorship-Resistant Sharing (ECRS)
8618@subsection Encoding for Censorship-Resistant Sharing (ECRS) 8635@subsection Encoding for Censorship-Resistant Sharing (ECRS)
8619 8636
8620@c %**end of header 8637
8621 8638
8622When GNUnet shares files, it uses a content encoding that is called ECRS, 8639When GNUnet shares files, it uses a content encoding that is called ECRS,
8623the Encoding for Censorship-Resistant Sharing. 8640the Encoding for Censorship-Resistant Sharing.
@@ -8639,7 +8656,7 @@ thus did not warrant space in the research report.
8639@node Namespace Advertisements 8656@node Namespace Advertisements
8640@subsubsection Namespace Advertisements 8657@subsubsection Namespace Advertisements
8641 8658
8642@c %**end of header 8659
8643@c %**FIXME: all zeroses -> ? 8660@c %**FIXME: all zeroses -> ?
8644 8661
8645An @code{SBlock} with identifier all zeros is a signed 8662An @code{SBlock} with identifier all zeros is a signed
@@ -8654,7 +8671,7 @@ can search for @code{SBlock}s in order to find out more about a namespace.
8654@node KSBlocks 8671@node KSBlocks
8655@subsubsection KSBlocks 8672@subsubsection KSBlocks
8656 8673
8657@c %**end of header 8674
8658 8675
8659GNUnet implements @code{KSBlocks} which are @code{KBlocks} that, instead 8676GNUnet implements @code{KSBlocks} which are @code{KBlocks} that, instead
8660of encrypting a CHK and metadata, encrypt an @code{SBlock} instead. 8677of encrypting a CHK and metadata, encrypt an @code{SBlock} instead.
@@ -8680,7 +8697,7 @@ Collections are also advertised using @code{KSBlock}s.
8680@node File-sharing persistence directory structure 8697@node File-sharing persistence directory structure
8681@subsection File-sharing persistence directory structure 8698@subsection File-sharing persistence directory structure
8682 8699
8683@c %**end of header 8700
8684 8701
8685This section documents how the file-sharing library implements 8702This section documents how the file-sharing library implements
8686persistence of file-sharing operations and specifically the resulting 8703persistence of file-sharing operations and specifically the resulting
@@ -8766,7 +8783,7 @@ Note that unindex operations cannot have associated child operations.
8766@node REGEX Subsystem 8783@node REGEX Subsystem
8767@section REGEX Subsystem 8784@section REGEX Subsystem
8768 8785
8769@c %**end of header 8786
8770 8787
8771Using the REGEX subsystem, you can discover peers that offer a particular 8788Using the REGEX subsystem, you can discover peers that offer a particular
8772service using regular expressions. 8789service using regular expressions.
@@ -8789,7 +8806,7 @@ thesis.
8789@node How to run the regex profiler 8806@node How to run the regex profiler
8790@subsection How to run the regex profiler 8807@subsection How to run the regex profiler
8791 8808
8792@c %**end of header 8809
8793 8810
8794The gnunet-regex-profiler can be used to profile the usage of mesh/regex 8811The gnunet-regex-profiler can be used to profile the usage of mesh/regex
8795for a given set of regular expressions and strings. 8812for a given set of regular expressions and strings.
@@ -8922,7 +8939,7 @@ regular expressions.
8922@node REST Subsystem 8939@node REST Subsystem
8923@section REST Subsystem 8940@section REST Subsystem
8924 8941
8925@c %**end of header 8942
8926 8943
8927Using the REST subsystem, you can expose REST-based APIs or services. 8944Using the REST subsystem, you can expose REST-based APIs or services.
8928The REST service is designed as a pluggable architecture. 8945The REST service is designed as a pluggable architecture.
diff --git a/doc/handbook/chapters/installation.texi b/doc/handbook/chapters/installation.texi
index a907a1046..ad848b4a0 100644
--- a/doc/handbook/chapters/installation.texi
+++ b/doc/handbook/chapters/installation.texi
@@ -12,9 +12,9 @@ package manager.
12* Create @code{gnunet} user and group:: 12* Create @code{gnunet} user and group::
13* Preparing and Compiling the Source Code:: 13* Preparing and Compiling the Source Code::
14* Installation:: 14* Installation::
15* MOVED FROM USER Checking the Installation:: 15* Checking the Installation::
16* MOVED FROM USER The graphical configuration interface:: 16* The graphical configuration interface::
17* MOVED FROM USER Config Leftovers:: 17* Config Leftovers::
18@end menu 18@end menu
19 19
20@c ----------------------------------------------------------------------- 20@c -----------------------------------------------------------------------
@@ -27,36 +27,54 @@ link to the project websites.
27 27
28The mandatory libraries and applications are 28The mandatory libraries and applications are
29@itemize @bullet 29@itemize @bullet
30@item libtool
31@item autoconf 2.59 or above 30@item autoconf 2.59 or above
32@item automake 1.11.1 or above 31@item automake 1.11.1 or above
33@item pkg-config 32@item gettext
33@item glibc (read below, other libcs should work)
34@item gnutls 3.2.12 or above, recommended to be linked against libunbound
35@item iptables (on Linux systems)
36@item libtool 2.2 or above
37@item libltdl (part of libtool)
34@item libgcrypt 1.6 or above 38@item libgcrypt 1.6 or above
35@item libextractor 39@item libextractor
36@item libidn 40@item libidn2 or libidn
37@item libmicrohttpd 0.9.52 or above 41@item libmicrohttpd 0.9.52 or above
38@item libnss
39@item libunistring 42@item libunistring
40@item gettext
41@item glibc
42@item libgmp 43@item libgmp
43@item gnutls 44@item libgnurl or libcurl (libcurl has to be linked to GnuTLS) 7.35.0 or above
44@item libcurl (has to be linked to GnuTLS) or libgnurl 45@item Texinfo 5.2 or above (for building the documentation)
46@item Texlive 2012 or above (for building the documentation, and for gnunet-bcd)
47@item makeinfo 4.8 or above
45@item zlib 48@item zlib
46@end itemize 49@end itemize
47 50
51Glibc is required for certain NSS features:
52
53@example
54One mechanism of integrating GNS with legacy applications via NSS is
55not available if this is disabled. But applications that don't use the
56glibc for NS resolution won't work anyway with this, so little is lost
57on BSD systems.
58GNS via direct use or via the HTTP or DNS proxies is unaffected.
59@end example
60
61Other libcs should work, the resulting builds just don't include the
62glibc NSS specific code. One example is the build against NetBSD's libc
63as detailed in @uref{https://bugs.gnunet.org/view.php?id=5605}.
64
48In addition GNUnet needs one of of these three databases 65In addition GNUnet needs one of of these three databases
49@itemize @bullet 66@itemize @bullet
50@item sqlite + libsqlite (the default, requires no further configuration) 67@item sqlite + libsqlite 3.8 or above (the default, requires no further configuration)
51@item postgres + libpq 68@item postgres + libpq
52@item mysql + libmysqlclient 69@item mysql + libmysqlclient
53@end itemize 70@end itemize
54 71
55These are the dependencies only required for certain features 72These are the dependencies only required for certain features
56@itemize @bullet 73@itemize @bullet
57@item Texinfo (for building the documentation) 74@item guile 1.6.4 for gnunet-download-manager
58@item Texlive (for building the documentation)
59@item miniupnpc (for traversing NAT boxes more reliably) 75@item miniupnpc (for traversing NAT boxes more reliably)
76@item libnss
77@item libglpk 4.45 or above for experimental code
60@item libopus (for running the GNUnet conversation telephony application) 78@item libopus (for running the GNUnet conversation telephony application)
61@item libpulse (for running the GNUnet conversation telephony application) 79@item libpulse (for running the GNUnet conversation telephony application)
62@item libogg (for running the GNUnet conversation telephony application) 80@item libogg (for running the GNUnet conversation telephony application)
@@ -65,6 +83,24 @@ These are the dependencies only required for certain features
65(for attribute-based encryption and the identity provider subsystem) 83(for attribute-based encryption and the identity provider subsystem)
66@item libgabe 84@item libgabe
67(for attribute-based encryption and the identity provider subsystem) 85(for attribute-based encryption and the identity provider subsystem)
86@item texi2mdoc (for automatic mdoc generation)
87@item perl5 for some utilities
88@end itemize
89
90These are the test suite requirements:
91@itemize @bullet
92@item python3.7
93@item gnunet (installation first)
94@item which(1)
95@item a shell (possibly Bash, maybe just POSIX sh)
96@end itemize
97
98These are runtime requirements:
99@itemize @bullet
100@item nss (the certutil binary, for gnunet-gns-proxy-setup-ca)
101@item openssl (openssl binary, for gnunet-gns-proxy-setup-ca)
102@item python2.7 for gnunet-qr (at the moment only python2.7 supported)
103@item python-zbar 0.10 or above for gnunet-qr
68@end itemize 104@end itemize
69 105
70@c ----------------------------------------------------------------------- 106@c -----------------------------------------------------------------------
@@ -82,7 +118,7 @@ The archive can be found at
82@uref{https://ftpmirror.gnu.org/gnu/gnunet/}. Extract it using a graphical 118@uref{https://ftpmirror.gnu.org/gnu/gnunet/}. Extract it using a graphical
83archive tool or @code{tar}: 119archive tool or @code{tar}:
84@example 120@example
85tar xzvf gnunet-0.11.0pre66.tar.gz 121tar xzvf gnunet-@value{VERSION}.tar.gz
86@end example 122@end example
87 123
88In the next chapter we will assume that the source code is available 124In the next chapter we will assume that the source code is available
@@ -116,17 +152,24 @@ running @code{configure} the following options can be specified to
116customize the compilation and installation process: 152customize the compilation and installation process:
117 153
118@itemize @bullet 154@itemize @bullet
119@item @code{--disable-documentation} - don't build the configuration documents 155@item @code{--disable-documentation} - don't build the documentation
120@item @code{--enable-looging=[LOGLEVEL]} - choose a loglevel (@code{debug}, @code{info}, @code{warning} or @code{error}) 156@item @code{--enable-looging=[LOGLEVEL]} - choose a loglevel (@code{debug}, @code{info}, @code{warning} or @code{error})
121@item @code{--prefix=[PATH]} - the directory where the GNUnet libraries and binaries will be installed 157@item @code{--prefix=[PATH]} - the directory where the GNUnet libraries and binaries will be installed
122@item @code{--with-extractor=[PATH]} - the path to libextractor 158@item @code{--with-extractor=[PATH]} - the path to libextractor
123@item @code{--with-libidn=[PATH]} - the path to libidn 159@item @code{--with-libidn=[PATH]} - the path to libidn
160@item @code{--with-libidn2=[PATH]} - the path to libidn2 (takes priority over libidn if both are found)
124@item @code{--with-microhttpd=[PATH]} - the path to libmicrohttpd 161@item @code{--with-microhttpd=[PATH]} - the path to libmicrohttpd
125@item @code{--with-sqlite=[PATH]} - the path to libsqlite 162@item @code{--with-sqlite=[PATH]} - the path to libsqlite
126@item @code{--with-zlib=[PATH]} - the path to zlib 163@item @code{--with-zlib=[PATH]} - the path to zlib
127@item @code{--with-sudo=[PATH]} - path to the sudo binary (no need to run @code{make install} as root if specified) 164@item @code{--with-sudo=[PATH]} - path to the sudo binary (no need to run @code{make install} as root if specified)
128@end itemize 165@end itemize
129 166
167Note that the list above is not always up to date and you
168should check the output of @code{./configure --help}, read
169the @file{configure.ac} or send an email asking for assistance
170if you are in doubt of any configure options or require fixes
171for your operating system.
172
130The following example configures the installation prefix 173The following example configures the installation prefix
131@code{/usr/lib} and disables building the documentation 174@code{/usr/lib} and disables building the documentation
132@example 175@example
@@ -216,9 +259,9 @@ PLUGINS = tcp
216 259
217 260
218 261
219@node MOVED FROM USER Checking the Installation 262@node Checking the Installation
220@section MOVED FROM USER Checking the Installation 263@section Checking the Installation
221@c %**end of header 264
222 265
223This section describes a quick, casual way to check if your GNUnet 266This section describes a quick, casual way to check if your GNUnet
224installation works. However, if it does not, we do not cover 267installation works. However, if it does not, we do not cover
@@ -240,7 +283,7 @@ as part of this handbook!.
240@cindex GTK user interface 283@cindex GTK user interface
241@node gnunet-gtk 284@node gnunet-gtk
242@subsection gnunet-gtk 285@subsection gnunet-gtk
243@c %**end of header 286
244 287
245The @command{gnunet-gtk} package contains several graphical 288The @command{gnunet-gtk} package contains several graphical
246user interfaces for the respective GNUnet applications. 289user interfaces for the respective GNUnet applications.
@@ -251,17 +294,24 @@ Currently these interfaces cover:
251@item Peer Information 294@item Peer Information
252@item GNU Name System 295@item GNU Name System
253@item File Sharing 296@item File Sharing
254@item Identity Management
255@item Conversation 297@item Conversation
298@item Setup
256@end itemize 299@end itemize
257 300
301Previously, many of these interfaces were combined into one application
302called @command{gnunet-gtk}, with different tabs for each interface. This
303combined application has been removed in version 0.11.0, but each of the
304interfaces is still available as a standalone application
305(@command{gnunet-statistics-gtk} for statistics, @command{gnunet-fs-gtk}
306for filesharing, etc).
307
258@node Statistics 308@node Statistics
259@subsection Statistics 309@subsection Statistics
260@c %**end of header 310
261 311
262We assume that you have started gnunet via @code{gnunet-arm} or via your 312We assume that you have started gnunet via @code{gnunet-arm} or via your
263system-provided method for starting services. 313system-provided method for starting services.
264First, you should launch GNUnet gtk. 314First, you should launch GNUnet's graphical statistics interface.
265You can do this from the command-line by typing 315You can do this from the command-line by typing
266 316
267@example 317@example
@@ -274,7 +324,7 @@ least if your peer has been running for more than a few seconds). The
274lines indicate how many other peers your peer is connected to (via 324lines indicate how many other peers your peer is connected to (via
275different mechanisms) and how large the entire overlay network is 325different mechanisms) and how large the entire overlay network is
276currently estimated to be. The X-axis represents time (in seconds 326currently estimated to be. The X-axis represents time (in seconds
277since the start of @command{gnunet-gtk}). 327since the start of @command{gnunet-statistics-gtk}).
278 328
279You can click on "Traffic" to see information about the amount of 329You can click on "Traffic" to see information about the amount of
280bandwidth your peer has consumed, and on "Storage" to check the amount 330bandwidth your peer has consumed, and on "Storage" to check the amount
@@ -290,10 +340,10 @@ whatever it is you are looking at the Gtk+ interface describes a
290 340
291@node Peer Information 341@node Peer Information
292@subsection Peer Information 342@subsection Peer Information
293@c %**end of header
294 343
295First, you should launch the graphical user interface. You can do 344
296this from the command-line by typing 345First, you should launch the peer information graphical user interface.
346You can do this from the command-line by typing
297 347
298@example 348@example
299$ gnunet-peerinfo-gtk 349$ gnunet-peerinfo-gtk
@@ -310,8 +360,8 @@ configuration.
310 360
311@c NOTE: Inserted from Installation Handbook in original ``order'': 361@c NOTE: Inserted from Installation Handbook in original ``order'':
312@c FIXME: Move this to User Handbook. 362@c FIXME: Move this to User Handbook.
313@node MOVED FROM USER The graphical configuration interface 363@node The graphical configuration interface
314@section MOVED FROM USER The graphical configuration interface 364@section The graphical configuration interface
315 365
316If you also would like to use @command{gnunet-gtk} and 366If you also would like to use @command{gnunet-gtk} and
317@command{gnunet-setup} (highly recommended for beginners), do: 367@command{gnunet-setup} (highly recommended for beginners), do:
@@ -347,7 +397,7 @@ If you also would like to use @command{gnunet-gtk} and
347* Configuring the GNUnet VPN:: 397* Configuring the GNUnet VPN::
348* Bandwidth Configuration:: 398* Bandwidth Configuration::
349* Configuring NAT:: 399* Configuring NAT::
350* Peer configuration for distributions:: 400* Peer configuration for distributors (e.g. Operating Systems)::
351@end menu 401@end menu
352 402
353@node Configuring your peer 403@node Configuring your peer
@@ -358,7 +408,7 @@ This chapter will describe the various configuration options in GNUnet.
358The easiest way to configure your peer is to use the 408The easiest way to configure your peer is to use the
359@command{gnunet-setup} tool. 409@command{gnunet-setup} tool.
360@command{gnunet-setup} is part of the @command{gnunet-gtk} 410@command{gnunet-setup} is part of the @command{gnunet-gtk}
361application. You might have to install it separately. 411package. You might have to install it separately.
362 412
363Many of the specific sections from this chapter actually are linked from 413Many of the specific sections from this chapter actually are linked from
364within @command{gnunet-setup} to help you while using the setup tool. 414within @command{gnunet-setup} to help you while using the setup tool.
@@ -837,7 +887,7 @@ a @code{gn090} table here, it probably works.
837 887
838@node Configuring the datacache 888@node Configuring the datacache
839@subsection Configuring the datacache 889@subsection Configuring the datacache
840@c %**end of header 890
841 891
842The datacache is what GNUnet uses for storing temporary data. This data is 892The datacache is what GNUnet uses for storing temporary data. This data is
843expected to be wiped completely each time GNUnet is restarted (or the 893expected to be wiped completely each time GNUnet is restarted (or the
@@ -889,7 +939,8 @@ strength of the adversary).
889@node Configuring logging 939@node Configuring logging
890@subsection Configuring logging 940@subsection Configuring logging
891 941
892Logging in GNUnet 0.9.0 is controlled via the "-L" and "-l" options. 942Since version 0.9.0, logging in GNUnet is controlled via the
943@code{-L} and @code{-l} options.
893Using @code{-L}, a log level can be specified. With log level 944Using @code{-L}, a log level can be specified. With log level
894@code{ERROR} only serious errors are logged. 945@code{ERROR} only serious errors are logged.
895The default log level is @code{WARNING} which causes anything of 946The default log level is @code{WARNING} which causes anything of
@@ -1765,7 +1816,7 @@ The other options as shown on the gnunet-setup tool are:
1765@node IPv4 address for interface 1816@node IPv4 address for interface
1766@subsubsection IPv4 address for interface 1817@subsubsection IPv4 address for interface
1767 1818
1768This is the IPv4 address the VPN interface will get. You should pick an 1819This is the IPv4 address the VPN interface will get. You should pick a
1769'private' IPv4 network that is not yet in use for you system. For example, 1820'private' IPv4 network that is not yet in use for you system. For example,
1770if you use @code{10.0.0.1/255.255.0.0} already, you might use 1821if you use @code{10.0.0.1/255.255.0.0} already, you might use
1771@code{10.1.0.1/255.255.0.0}. 1822@code{10.1.0.1/255.255.0.0}.
@@ -1920,29 +1971,29 @@ connect to NATed peers using autonomous NAT traversal, you need to check
1920the "Enable connecting to NATed peers using ICMP method" box. 1971the "Enable connecting to NATed peers using ICMP method" box.
1921 1972
1922 1973
1923@node Peer configuration for distributions 1974@node Peer configuration for distributors (e.g. Operating Systems)
1924@subsection Peer configuration for distributions 1975@subsection Peer configuration for distributors (e.g. Operating Systems)
1925 1976
1926The "GNUNET_DATA_HOME" in "[path]" in @file{/etc/gnunet.conf} should be 1977The "GNUNET_DATA_HOME" in "[path]" in @file{/etc/gnunet.conf} should be
1927manually set to "/var/lib/gnunet/data/" as the default 1978manually set to "/var/lib/gnunet/data/" as the default
1928"~/.local/share/gnunet/" is probably not that appropriate in this case. 1979"~/.local/share/gnunet/" is probably not that appropriate in this case.
1929Similarly, distributions may consider pointing "GNUNET_RUNTIME_DIR" to 1980Similarly, distributors may consider pointing "GNUNET_RUNTIME_DIR" to
1930"/var/run/gnunet/" and "GNUNET_HOME" to "/var/lib/gnunet/". Also, should a 1981"/var/run/gnunet/" and "GNUNET_HOME" to "/var/lib/gnunet/". Also, should a
1931distribution decide to override system defaults, all of these changes 1982distributor decide to override system defaults, all of these changes
1932should be done in a custom @file{/etc/gnunet.conf} and not in the files 1983should be done in a custom @file{/etc/gnunet.conf} and not in the files
1933in the @file{config.d/} directory. 1984in the @file{config.d/} directory.
1934 1985
1935Given the proposed access permissions, the "gnunet-setup" tool must be 1986Given the proposed access permissions, the "gnunet-setup" tool must be
1936run as use "gnunet" (and with option "-c /etc/gnunet.conf" so that it 1987run as use "gnunet" (and with option "-c /etc/gnunet.conf" so that it
1937modifies the system configuration). As always, gnunet-setup should be run 1988modifies the system configuration). As always, gnunet-setup should be run
1938after the GNUnet peer was stopped using "gnunet-arm -e". Distributions 1989after the GNUnet peer was stopped using "gnunet-arm -e". Distributors
1939might want to include a wrapper for gnunet-setup that allows the 1990might want to include a wrapper for gnunet-setup that allows the
1940desktop-user to "sudo" (i.e. using gtksudo) to the "gnunet" user account 1991desktop-user to "sudo" (i.e. using gtksudo) to the "gnunet" user account
1941and then runs "gnunet-arm -e", "gnunet-setup" and "gnunet-arm -s" in 1992and then runs "gnunet-arm -e", "gnunet-setup" and "gnunet-arm -s" in
1942sequence. 1993sequence.
1943 1994
1944@node MOVED FROM USER Config Leftovers 1995@node Config Leftovers
1945@section MOVED FROM USER Config Leftovers 1996@section Config Leftovers
1946 1997
1947This section describes how to start a GNUnet peer. It assumes that you 1998This section describes how to start a GNUnet peer. It assumes that you
1948have already compiled and installed GNUnet and its' dependencies. 1999have already compiled and installed GNUnet and its' dependencies.
@@ -2201,7 +2252,7 @@ However, as TCP is generally less efficient and it is rarely the case
2201that a single GNUnet peer is supposed to serve an entire local network, 2252that a single GNUnet peer is supposed to serve an entire local network,
2202the default configuration should disable TCP access to all GNUnet 2253the default configuration should disable TCP access to all GNUnet
2203services on systems with support for UNIX domain sockets. 2254services on systems with support for UNIX domain sockets.
2204As of GNUnet 0.9.2, configuration files with TCP access disabled should be 2255Since GNUnet 0.9.2, configuration files with TCP access disabled should be
2205generated by default. Users can re-enable TCP access to particular 2256generated by default. Users can re-enable TCP access to particular
2206services simply by specifying a non-zero port number in the section of 2257services simply by specifying a non-zero port number in the section of
2207the respective service. 2258the respective service.
diff --git a/doc/handbook/chapters/keyconcepts.texi b/doc/handbook/chapters/keyconcepts.texi
index 829fed82e..4b49a7ffb 100644
--- a/doc/handbook/chapters/keyconcepts.texi
+++ b/doc/handbook/chapters/keyconcepts.texi
@@ -246,7 +246,7 @@ encryption as the link-encryption between the nodes. GNUnet has
246encryption on the network layer (link encryption, confidentiality, 246encryption on the network layer (link encryption, confidentiality,
247authentication) and again on the application layer (provided 247authentication) and again on the application layer (provided
248by @command{gnunet-publish}, @command{gnunet-download}, 248by @command{gnunet-publish}, @command{gnunet-download},
249@command{gnunet-search} and @command{gnunet-gtk}). 249@command{gnunet-search} and @command{gnunet-fs-gtk}).
250 250
251Refer to the following paper for more: 251Refer to the following paper for more:
252Christian Grothoff, Krista Grothoff, Tzvetan Horozov, 252Christian Grothoff, Krista Grothoff, Tzvetan Horozov,
diff --git a/doc/handbook/chapters/preface.texi b/doc/handbook/chapters/preface.texi
index 386cefa6d..636458eeb 100644
--- a/doc/handbook/chapters/preface.texi
+++ b/doc/handbook/chapters/preface.texi
@@ -1,13 +1,17 @@
1@node Preface 1@node Preface
2@chapter Preface 2@chapter Preface
3 3
4This collection of manuals describes how to use GNUnet, a framework 4@c FIXME: Do we have to mention that this is Free Software?
5@c FIXME: where did 'Free Software' in this sentence fit before
6@c FIXME: we changed it?
7This collection of manuals describes GNUnet, a framework
5for secure peer-to-peer networking with the high-level goal to provide 8for secure peer-to-peer networking with the high-level goal to provide
6a strong foundation Free Software for a global, distributed network 9a strong foundation for a global, distributed network
7that provides security and privacy. GNUnet in that sense aims to 10that provides security and privacy.
8replace the current Internet protocol stack. Along with an 11GNUnet in that sense aims to replace the current Internet protocol stack.
9application for secure publication of files, it has grown to include 12Along with an application for secure publication of files, it has grown to
10all kinds of basic applications for the foundation of a new Internet. 13include all kinds of basic applications for the foundation of a new
14Internet.
11 15
12@menu 16@menu
13* About this book:: 17* About this book::
@@ -22,47 +26,74 @@ all kinds of basic applications for the foundation of a new Internet.
22 26
23The books (described as ``book'' or ``books'' in the following) 27The books (described as ``book'' or ``books'' in the following)
24bundled as the ``GNUnet Reference Manual'' are based on the historic 28bundled as the ``GNUnet Reference Manual'' are based on the historic
25work of all contributors to GNUnet's documentation. It is our hope 29work of all contributors to previous documentation of GNUnet.
30It is our hope
26that the content is described in a way that does not require any 31that the content is described in a way that does not require any
27academic background, although some concepts will require further 32academic background, although some concepts will require further
28reading. 33reading.
29 34
30Our (long-term) goal with these books is to keep them self-contained. If 35Our (long-term) goal with these books is to keep them
31you see references to Wikipedia and other external sources (except for 36self-contained. If you see references to Wikipedia and other external
32our academic papers) it means that we are working on a solution to 37sources (except for our academic papers) it means that we are working
33describe the explanations found there which fits our use-case and licensing. 38on a solution to describe the explanations found there which fits our
34 39use-case and licensing.
35The first chapter (``Preface'') as well as the the second 40
36chapter (``Philosophy'') give an introduction to GNUnet as a project, 41Previously the documentation was contained in Drupal books, on the
37what GNUnet tries to achieve. 42old website. This format was considered unmaintainable for the future, so
43Texinfo was chosen. You might find old and very old sections in
44here in addition to more recent content. It took a long time to
45finish the move to Texinfo (from Drupal to LaTeX to wrong Texinfo
46output dump to good Texinfo) and only recently (late 2018, early
472019) content checking started. We apologize to the reader for
48any inconvenience and hope you apply logic where bad advice from
4910 years ago can be found (pipe to sudo to install software is
50one example). Patches (contributions) to this documentation are more
51than welcome!
52
53The first chapter (``Preface'') as well as the the second chapter
54(``Philosophy'') give an introduction to GNUnet as a project, what
55GNUnet tries to achieve. ``Key Concepts'' explains the key concepts
56in GNUnet.
57These three chapters are the most complete in the documentation.
58They are followed by chapters which explain specific parts of
59GNUnet (and need more work):
60``Installing GNUnet'', ``GNUnet Contributors Handbook'' and
61``GNUnet Developer Handbook''.
38 62
39@node Contributing to this book 63@node Contributing to this book
40@section Contributing to this book 64@section Contributing to this book
41 65
66@c FIXME: There's a good amount of repetition here, we should
67@c FIXME: fix this.
42The GNUnet Reference Manual is a collective work produced by various 68The GNUnet Reference Manual is a collective work produced by various
43people throughout the years. The version you are reading is derived 69people throughout the years.
44from many individual efforts hosted on our website. This was a failed 70
45experiment, and with the conversion to Texinfo we hope to address this 71The version you are reading is derived
46in the longterm. Texinfo is the documentation language of the GNU project. 72from many individual efforts hosted on one of our old websites.
73In the end it was considered to be impractical to read by
74those who required the information.
75With the conversion to Texinfo --- the version you are reading
76right now --- we hope to address this in the longterm.
77Texinfo is the documentation language of the GNU project.
78
47While it can be intimidating at first and look scary or complicated, 79While it can be intimidating at first and look scary or complicated,
48it is just another way to express text format instructions. We encourage 80it is just another way to express text format instructions.
49you to take this opportunity and learn about Texinfo, learn about GNUnet, 81
50and one word at a time we will arrive at a book which explains GNUnet in 82We encourage you to take this opportunity and learn about Texinfo,
51the least complicated way to you. Even when you don't want or can't learn 83learn about GNUnet, and one word at a time we will arrive at a
52Texinfo, you can contribute. Send us an Email or join our IRC chat room 84book which explains GNUnet in the least complicated way to you.
53on freenode and talk with us about the documentation (the prefered way 85
54to reach out is the mailinglist, since you can communicate with us 86Even when you don't want to or can't learn Texinfo, you can contribute.
55without waiting on someone in the chatroom). One way or another you 87Send us an Email or join our IRC chat room on freenode and talk with
56can help shape the understanding of GNUnet without the ability to read 88us about the documentation (the prefered way to reach out is the
57and understand its sourcecode. 89mailinglist, since you can communicate with us without waiting on
90someone in the chatroom).
91One way or another you can help shape the understanding of GNUnet
92without the ability to read and understand its sourcecode.
58 93
59@node Introduction 94@node Introduction
60@section Introduction 95@section Introduction
61 96
62@c In less than 2 printed pages describe the history of GNUnet here,
63@c what we have now and what's still missing (could be split into
64@c subchapters).
65
66GNUnet in its current version is the result of almost 20 years of work 97GNUnet in its current version is the result of almost 20 years of work
67from many contributors. So far, most contributions were made by 98from many contributors. So far, most contributions were made by
68volunteers or people paid to do fundamental research. At this stage, 99volunteers or people paid to do fundamental research. At this stage,
@@ -109,12 +140,17 @@ social network, resulting in a significant growth of the core team.
109In 2013, we launched @uref{https://taler.net, GNU Taler} to address 140In 2013, we launched @uref{https://taler.net, GNU Taler} to address
110the challenge of convenient 141the challenge of convenient
111and privacy-preserving online payments. In 2015, the 142and privacy-preserving online payments. In 2015, the
112@c TODO: Maybe even markup for the E if it renders in most outputs. 143@c XXX: It is not correct to refer to pEp as pEp stylistic,
113@uref{https://pep.foundation/, pEp} (pretty Easy privacy) project 144@c XXX: but the correct version would lead to problems with
145@c XXX: some of our outputs and/or older versions of texinfo
146@c XXX: and devices that display versions on consoles etc.
147@c XXX: This is why we keep the pEp until proven that p(tripple bar)p
148@c XXX: does not create broken outputs.
149@uref{https://pep.foundation/, pretty Easy privacy} (pEp) project
114announced that they will use GNUnet as the technology for their 150announced that they will use GNUnet as the technology for their
115meta-data protection layer, ultimately resulting in GNUnet e.V. 151meta-data protection layer, ultimately resulting in GNUnet e.V.
116entering into a formal long-term collaboration with the pEp 152entering into a formal long-term collaboration with the pEp
117foundation. In 2016, Taler Systems SA, a first startup using GNUnet 153Foundation. In 2016, Taler Systems SA, a first startup using GNUnet
118technology, was founded with support from the community. 154technology, was founded with support from the community.
119 155
120GNUnet is not merely a technical project, but also a political 156GNUnet is not merely a technical project, but also a political
@@ -131,7 +167,7 @@ Similarly its flaws are not limited to the protocol design. Thus,
131technical excellence by itself will not suffice to create a better 167technical excellence by itself will not suffice to create a better
132network. We also need to build a community that is wise, humble and 168network. We also need to build a community that is wise, humble and
133has a sense of humor to achieve our goal to create a technical 169has a sense of humor to achieve our goal to create a technical
134foundation for a society we would like to live in. 170foundation for a society we would like to live in.
135 171
136 172
137@node Project governance 173@node Project governance
@@ -142,15 +178,12 @@ follows the governance model of a benevolent dictator. This means
142that ultimately, the GNU project appoints the GNU maintainer and can 178that ultimately, the GNU project appoints the GNU maintainer and can
143overrule decisions made by the GNUnet maintainer. Similarly, the 179overrule decisions made by the GNUnet maintainer. Similarly, the
144GNUnet maintainer can overrule any decisions made by individual 180GNUnet maintainer can overrule any decisions made by individual
145@c TODO: Should we mention if this is just about GNUnet? Other projects
146@c TODO: in GNU seem to have rare issues (GCC, the 2018 documentation
147@c TODO: discussion.
148developers. Still, in practice neither has happened in the last 20 181developers. Still, in practice neither has happened in the last 20
149years, and we hope to keep it that way. 182years for GNUnet, and we hope to keep it that way.
150 183
151@c TODO: Actually we are a Swiss association, or just a German association 184@c TODO: Actually we are a Swiss association, or just a German association
152@c TODO: with Swiss bylaws/Satzung? 185@c TODO: with Swiss bylaws/Satzung?
153@c TODO: Rewrite one of the 'GNUnet eV may also' sentences. 186@c TODO: Rewrite one of the 'GNUnet eV may also' sentences?
154The GNUnet project is supported by GNUnet e.V., a German association 187The GNUnet project is supported by GNUnet e.V., a German association
155where any developer can become a member. GNUnet e.V. serves as a 188where any developer can become a member. GNUnet e.V. serves as a
156legal entity to hold the copyrights to GNUnet. GNUnet e.V. may also 189legal entity to hold the copyrights to GNUnet. GNUnet e.V. may also
diff --git a/doc/handbook/chapters/user.texi b/doc/handbook/chapters/user.texi
index 1300b2bb6..37c5849ab 100644
--- a/doc/handbook/chapters/user.texi
+++ b/doc/handbook/chapters/user.texi
@@ -1,6 +1,6 @@
1@node Using GNUnet 1@node Using GNUnet
2@chapter Using GNUnet 2@chapter Using GNUnet
3@c %**end of header 3
4 4
5This tutorial is supposed to give a first introduction for users 5This tutorial is supposed to give a first introduction for users
6trying to do something real with GNUnet. Installation and 6trying to do something real with GNUnet. Installation and
@@ -47,7 +47,7 @@ $ gnunet-arm -e
47 47
48@node First steps - Using the GNU Name System 48@node First steps - Using the GNU Name System
49@section First steps - Using the GNU Name System 49@section First steps - Using the GNU Name System
50@c %**end of header 50
51 51
52@menu 52@menu
53* Preliminaries:: 53* Preliminaries::
@@ -65,7 +65,7 @@ $ gnunet-arm -e
65 65
66@node Preliminaries 66@node Preliminaries
67@subsection Preliminaries 67@subsection Preliminaries
68@c %**end of header 68
69 69
70``.pin'' is a default zone which points to a zone managed by gnunet.org. 70``.pin'' is a default zone which points to a zone managed by gnunet.org.
71Use @code{gnunet-config -s gns} to view the GNS configuration, including 71Use @code{gnunet-config -s gns} to view the GNS configuration, including
@@ -106,7 +106,7 @@ rules - GO0T87F9BPMF8NKD5A54L2AH1T0GRML539TPFSRMCEA98182QD30
106 106
107@node The GNS Tab 107@node The GNS Tab
108@subsection The GNS Tab 108@subsection The GNS Tab
109@c %**end of header 109
110 110
111Maintaing your zones is through the NAMESTORE service and is discussed 111Maintaing your zones is through the NAMESTORE service and is discussed
112here. You can manage your zone using @command{gnunet-identity} and 112here. You can manage your zone using @command{gnunet-identity} and
@@ -138,7 +138,7 @@ bottom of the window contains the existing entries in the selected zone.
138 138
139@node Creating a Record 139@node Creating a Record
140@subsection Creating a Record 140@subsection Creating a Record
141@c %**end of header 141
142 142
143We will begin by creating a simple record in your master zone. 143We will begin by creating a simple record in your master zone.
144To do this, click on the text "<new name>" in the table. The field is 144To do this, click on the text "<new name>" in the table. The field is
@@ -168,7 +168,7 @@ to edit it later.
168 168
169@node Resolving GNS records 169@node Resolving GNS records
170@subsection Resolving GNS records 170@subsection Resolving GNS records
171@c %**end of header 171
172 172
173Next, you should try resolving your own GNS records. The method we 173Next, you should try resolving your own GNS records. The method we
174found to be the most uncomplicated is to do this by explicitly 174found to be the most uncomplicated is to do this by explicitly
@@ -191,7 +191,7 @@ the application.
191 191
192@node Integration with Browsers 192@node Integration with Browsers
193@subsection Integration with Browsers 193@subsection Integration with Browsers
194@c %**end of header 194
195 195
196While we recommend integrating GNS using the NSS module in the 196While we recommend integrating GNS using the NSS module in the
197GNU libc Name Service Switch, you can also integrate GNS 197GNU libc Name Service Switch, you can also integrate GNS
@@ -271,7 +271,7 @@ apt-get install texlive-full
271 271
272@noindent 272@noindent
273Start creating a business card by clicking the "Copy" button 273Start creating a business card by clicking the "Copy" button
274in @command{gnunet-gtk}'s GNS tab. Next, you should start 274in @command{gnunet-namestore-gtk}. Next, you should start
275the @command{gnunet-bcd} program (in the terminal, on the command-line). 275the @command{gnunet-bcd} program (in the terminal, on the command-line).
276You do not need to pass any options, and please be not surprised if 276You do not need to pass any options, and please be not surprised if
277there is no output: 277there is no output:
@@ -286,7 +286,7 @@ where @code{gnunet-bcd} is running a Web server!
286 286
287First, you might want to fill in the "GNS Public Key" field by 287First, you might want to fill in the "GNS Public Key" field by
288right-clicking and selecting "Paste", filling in the public key 288right-clicking and selecting "Paste", filling in the public key
289from the copy you made in @command{gnunet-gtk}. 289from the copy you made in @command{gnunet-namestore-gtk}.
290Then, fill in all of the other fields, including your @b{GNS NICKname}. 290Then, fill in all of the other fields, including your @b{GNS NICKname}.
291Adding a GPG fingerprint is optional. 291Adding a GPG fingerprint is optional.
292Once finished, click "Submit Query". 292Once finished, click "Submit Query".
@@ -302,7 +302,7 @@ You can now go back to the shell running @code{gnunet-bcd} and press
302 302
303@node Be Social 303@node Be Social
304@subsection Be Social 304@subsection Be Social
305@c %**end of header 305
306 306
307Next, you should print out your business card and be social. 307Next, you should print out your business card and be social.
308Find a friend, help them install GNUnet and exchange business cards with 308Find a friend, help them install GNUnet and exchange business cards with
@@ -424,7 +424,7 @@ performed by using the @command{-p} option of @command{gnunet-revocation}.
424 424
425@node What's Next? 425@node What's Next?
426@subsection What's Next? 426@subsection What's Next?
427@c %**end of header 427
428 428
429This may seem not like much of an application yet, but you have 429This may seem not like much of an application yet, but you have
430just been one of the first to perform a decentralized secure name 430just been one of the first to perform a decentralized secure name
@@ -443,7 +443,7 @@ using this new public key infrastructure.
443@pindex gnunet-conservation-gtk 443@pindex gnunet-conservation-gtk
444@node First steps - Using GNUnet Conversation 444@node First steps - Using GNUnet Conversation
445@section First steps - Using GNUnet Conversation 445@section First steps - Using GNUnet Conversation
446@c %**end of header 446
447 447
448First, you should launch the graphical user interface. You can do 448First, you should launch the graphical user interface. You can do
449this from the command-line by typing 449this from the command-line by typing
@@ -459,7 +459,7 @@ $ gnunet-conversation-gtk
459 459
460@node Testing your Audio Equipment 460@node Testing your Audio Equipment
461@subsection Testing your Audio Equipment 461@subsection Testing your Audio Equipment
462@c %**end of header 462
463 463
464First, you should use @code{gnunet-conversation-test} to check that your 464First, you should use @code{gnunet-conversation-test} to check that your
465microphone and speaker are working correctly. You will be prompted to 465microphone and speaker are working correctly. You will be prompted to
@@ -471,7 +471,7 @@ that the correct device is being associated with GNUnet's audio tools.
471 471
472@node GNS Zones 472@node GNS Zones
473@subsection GNS Zones 473@subsection GNS Zones
474@c %**end of header 474
475 475
476@code{gnunet-conversation} uses GNS for addressing. This means that 476@code{gnunet-conversation} uses GNS for addressing. This means that
477you need to have a GNS zone created before using it. Information 477you need to have a GNS zone created before using it. Information
@@ -485,7 +485,7 @@ about how to create GNS zones can be found here.
485 485
486@node Picking an Identity 486@node Picking an Identity
487@subsubsection Picking an Identity 487@subsubsection Picking an Identity
488@c %**end of header 488
489 489
490To make a call with @code{gnunet-conversation}, you first 490To make a call with @code{gnunet-conversation}, you first
491need to choose an identity. This identity is both the caller ID 491need to choose an identity. This identity is both the caller ID
@@ -542,7 +542,7 @@ manually. Save the record.
542 542
543@node Calling somebody 543@node Calling somebody
544@subsubsection Calling somebody 544@subsubsection Calling somebody
545@c %**end of header 545
546 546
547Now you can call a buddy. Obviously, your buddy will have to have GNUnet 547Now you can call a buddy. Obviously, your buddy will have to have GNUnet
548installed and must have performed the same steps. Also, you must have 548installed and must have performed the same steps. Also, you must have
@@ -568,7 +568,7 @@ Either of you can end the call using @command{/cancel}. You can exit
568 568
569@node First steps - Using the GNUnet VPN 569@node First steps - Using the GNUnet VPN
570@section First steps - Using the GNUnet VPN 570@section First steps - Using the GNUnet VPN
571@c %**end of header 571
572 572
573 573
574@menu 574@menu
@@ -581,7 +581,7 @@ Either of you can end the call using @command{/cancel}. You can exit
581 581
582@node VPN Preliminaries 582@node VPN Preliminaries
583@subsection VPN Preliminaries 583@subsection VPN Preliminaries
584@c %**end of header 584
585 585
586To test the GNUnet VPN, we should first run a web server. 586To test the GNUnet VPN, we should first run a web server.
587The easiest way to do this is to just start @code{gnunet-bcd}, 587The easiest way to do this is to just start @code{gnunet-bcd},
@@ -622,7 +622,7 @@ to install the NSS plugins in the proper location.
622 622
623@node GNUnet-Exit configuration 623@node GNUnet-Exit configuration
624@subsection GNUnet-Exit configuration 624@subsection GNUnet-Exit configuration
625@c %**end of header 625
626 626
627Stop your peer (as user @code{gnunet}, run @command{gnunet-arm -e}) and 627Stop your peer (as user @code{gnunet}, run @command{gnunet-arm -e}) and
628run @command{gnunet-setup}. In @command{gnunet-setup}, make sure to 628run @command{gnunet-setup}. In @command{gnunet-setup}, make sure to
@@ -638,10 +638,10 @@ Now exit @command{gnunet-setup} and restart your peer
638 638
639@node GNS configuration 639@node GNS configuration
640@subsection GNS configuration 640@subsection GNS configuration
641@c %**end of header 641
642 642
643Now, using your normal user (not the @code{gnunet} system user), run 643Now, using your normal user (not the @code{gnunet} system user), run
644@command{gnunet-gtk}. Select the GNS icon and add a new label www in your 644@command{gnunet-namestore-gtk}. Add a new label www in your
645master zone. For the record type, select @code{VPN}. You should then 645master zone. For the record type, select @code{VPN}. You should then
646see the VPN dialog: 646see the VPN dialog:
647 647
@@ -654,11 +654,11 @@ identifier that we used in the Exit setup earlier, so here supply "bcd".
654If you want others to be able to use the service, you should probably make 654If you want others to be able to use the service, you should probably make
655the record public. For non-public services, you should use a passphrase 655the record public. For non-public services, you should use a passphrase
656instead of the string "bcd". Save the record and 656instead of the string "bcd". Save the record and
657exit @command{gnunet-gtk}. 657exit @command{gnunet-namestore-gtk}.
658 658
659@node Accessing the service 659@node Accessing the service
660@subsection Accessing the service 660@subsection Accessing the service
661@c %**end of header 661
662 662
663You should now be able to access your webserver. Type in: 663You should now be able to access your webserver. Type in:
664 664
@@ -681,7 +681,7 @@ your business card.
681 681
682@node Using a Browser 682@node Using a Browser
683@subsection Using a Browser 683@subsection Using a Browser
684@c %**end of header 684
685 685
686Sadly, modern browsers tend to bypass the Name Services Switch and 686Sadly, modern browsers tend to bypass the Name Services Switch and
687attempt DNS resolution directly. You can either run 687attempt DNS resolution directly. You can either run
@@ -693,7 +693,7 @@ using the HTTP proxy with Chrome does work.
693 693
694@node File-sharing 694@node File-sharing
695@section File-sharing 695@section File-sharing
696@c %**end of header 696
697 697
698This chapter documents the GNUnet file-sharing application. The original 698This chapter documents the GNUnet file-sharing application. The original
699file-sharing implementation for GNUnet was designed to provide 699file-sharing implementation for GNUnet was designed to provide
@@ -726,7 +726,7 @@ files.
726 726
727@node fs-Searching 727@node fs-Searching
728@subsection Searching 728@subsection Searching
729@c %**end of header 729
730 730
731The command @command{gnunet-search} can be used to search 731The command @command{gnunet-search} can be used to search
732for content on GNUnet. The format is: 732for content on GNUnet. The format is:
@@ -784,7 +784,7 @@ the file in bytes.
784 784
785@node fs-Downloading 785@node fs-Downloading
786@subsection Downloading 786@subsection Downloading
787@c %**end of header 787
788 788
789In order to download a file, you need the whole line returned by 789In order to download a file, you need the whole line returned by
790@command{gnunet-search}. 790@command{gnunet-search}.
@@ -823,7 +823,7 @@ current number of bytes downloaded whenever new data was received.
823 823
824@node fs-Publishing 824@node fs-Publishing
825@subsection Publishing 825@subsection Publishing
826@c %**end of header 826
827 827
828The command @command{gnunet-publish} can be used to add content 828The command @command{gnunet-publish} can be used to add content
829to the network. The basic format of the command is 829to the network. The basic format of the command is
@@ -844,7 +844,7 @@ $ gnunet-publish -m "description:GNU License" -k gpl -k test -m "mimetype:text/p
844 844
845@node Important command-line options 845@node Important command-line options
846@subsubsection Important command-line options 846@subsubsection Important command-line options
847@c %**end of header 847
848 848
849The option @code{-k} is used to specify keywords for the file that 849The option @code{-k} is used to specify keywords for the file that
850should be inserted. You can supply any number of keywords, 850should be inserted. You can supply any number of keywords,
@@ -871,7 +871,7 @@ man gnunet-publish
871 871
872@node Indexing vs. Inserting 872@node Indexing vs. Inserting
873@subsubsection Indexing vs Inserting 873@subsubsection Indexing vs Inserting
874@c %**end of header 874
875 875
876By default, GNUnet indexes a file instead of making a full copy. 876By default, GNUnet indexes a file instead of making a full copy.
877This is much more efficient, but requires the file to stay unaltered 877This is much more efficient, but requires the file to stay unaltered
@@ -907,7 +907,7 @@ able to crack the encryption (e.g. by guessing the keyword.
907 907
908@node fs-Concepts 908@node fs-Concepts
909@subsection Concepts 909@subsection Concepts
910@c %**end of header 910
911 911
912For better results with filesharing it is useful to understand the 912For better results with filesharing it is useful to understand the
913following concepts. 913following concepts.
@@ -936,7 +936,7 @@ concepts that are used to achieve these goals.
936 936
937@node Files 937@node Files
938@subsubsection Files 938@subsubsection Files
939@c %**end of header 939
940 940
941A file in GNUnet is just a sequence of bytes. Any file-format is allowed 941A file in GNUnet is just a sequence of bytes. Any file-format is allowed
942and the maximum file size is theoretically @math{2^64 - 1} bytes, except 942and the maximum file size is theoretically @math{2^64 - 1} bytes, except
@@ -946,7 +946,7 @@ using GNU libextractor to obtain keywords.
946 946
947@node Keywords 947@node Keywords
948@subsubsection Keywords 948@subsubsection Keywords
949@c %**end of header 949
950 950
951Keywords are the most simple mechanism to find files on GNUnet. 951Keywords are the most simple mechanism to find files on GNUnet.
952Keywords are @strong{case-sensitive} and the search string 952Keywords are @strong{case-sensitive} and the search string
@@ -963,7 +963,7 @@ request.
963 963
964@node Directories 964@node Directories
965@subsubsection Directories 965@subsubsection Directories
966@c %**end of header 966
967 967
968A directory in GNUnet is a list of file identifiers with meta data. 968A directory in GNUnet is a list of file identifiers with meta data.
969The file identifiers provide sufficient information about the files 969The file identifiers provide sufficient information about the files
@@ -986,7 +986,7 @@ other meta information, and possibly even the full original file
986 986
987@node Pseudonyms 987@node Pseudonyms
988@subsubsection Pseudonyms 988@subsubsection Pseudonyms
989@c %**end of header 989
990 990
991@b{Please note that the text in this subsection is outdated and needs} 991@b{Please note that the text in this subsection is outdated and needs}
992@b{to be rewritten for version 0.10!} 992@b{to be rewritten for version 0.10!}
@@ -1005,7 +1005,7 @@ to copy around).
1005 1005
1006@node Namespaces 1006@node Namespaces
1007@subsubsection Namespaces 1007@subsubsection Namespaces
1008@c %**end of header 1008
1009 1009
1010@b{Please note that the text in this subsection is outdated and needs} 1010@b{Please note that the text in this subsection is outdated and needs}
1011@b{to be rewritten for version 0.10!} 1011@b{to be rewritten for version 0.10!}
@@ -1020,7 +1020,7 @@ same entity (which does not have to be the same person).
1020 1020
1021@node Advertisements 1021@node Advertisements
1022@subsubsection Advertisements 1022@subsubsection Advertisements
1023@c %**end of header 1023
1024 1024
1025@b{Please note that the text in this subsection is outdated and needs} 1025@b{Please note that the text in this subsection is outdated and needs}
1026@b{to be rewritten for version 0.10!} 1026@b{to be rewritten for version 0.10!}
@@ -1045,7 +1045,7 @@ confusion.
1045 1045
1046@node Anonymity level 1046@node Anonymity level
1047@subsubsection Anonymity level 1047@subsubsection Anonymity level
1048@c %**end of header 1048
1049 1049
1050The anonymity level determines how hard it should be for an adversary to 1050The anonymity level determines how hard it should be for an adversary to
1051determine the identity of the publisher or the searcher/downloader. An 1051determine the identity of the publisher or the searcher/downloader. An
@@ -1059,7 +1059,7 @@ it can also significantly hurt performance.
1059 1059
1060@node Content Priority 1060@node Content Priority
1061@subsubsection Content Priority 1061@subsubsection Content Priority
1062@c %**end of header 1062
1063 1063
1064Depending on the peer's configuration, GNUnet peers migrate content 1064Depending on the peer's configuration, GNUnet peers migrate content
1065between peers. Content in this sense are individual blocks of a file, 1065between peers. Content in this sense are individual blocks of a file,
@@ -1076,7 +1076,7 @@ when the block was published initially.
1076 1076
1077@node Replication 1077@node Replication
1078@subsubsection Replication 1078@subsubsection Replication
1079@c %**end of header 1079
1080 1080
1081When peers migrate content to other systems, the replication level 1081When peers migrate content to other systems, the replication level
1082of a block is used to decide which blocks need to be migrated most 1082of a block is used to decide which blocks need to be migrated most
@@ -1088,7 +1088,7 @@ selection is simply random.
1088 1088
1089@node Namespace Management 1089@node Namespace Management
1090@subsection Namespace Management 1090@subsection Namespace Management
1091@c %**end of header 1091
1092 1092
1093@b{Please note that the text in this subsection is outdated and needs} 1093@b{Please note that the text in this subsection is outdated and needs}
1094@b{to be rewritten for version 0.10!} 1094@b{to be rewritten for version 0.10!}
@@ -1108,7 +1108,7 @@ lists all locally available pseudonyms.
1108 1108
1109@node Creating Pseudonyms 1109@node Creating Pseudonyms
1110@subsubsection Creating Pseudonyms 1110@subsubsection Creating Pseudonyms
1111@c %**end of header 1111
1112 1112
1113@b{Please note that the text in this subsection is outdated and needs} 1113@b{Please note that the text in this subsection is outdated and needs}
1114@b{to be rewritten for version 0.10!} 1114@b{to be rewritten for version 0.10!}
@@ -1123,7 +1123,7 @@ used.
1123 1123
1124@node Deleting Pseudonyms 1124@node Deleting Pseudonyms
1125@subsubsection Deleting Pseudonyms 1125@subsubsection Deleting Pseudonyms
1126@c %**end of header 1126
1127 1127
1128@b{Please note that the text in this subsection is outdated and needs} 1128@b{Please note that the text in this subsection is outdated and needs}
1129@b{to be rewritten for version 0.10!} 1129@b{to be rewritten for version 0.10!}
@@ -1137,7 +1137,7 @@ unavailable.
1137 1137
1138@node Advertising namespaces 1138@node Advertising namespaces
1139@subsubsection Advertising namespaces 1139@subsubsection Advertising namespaces
1140@c %**end of header 1140
1141 1141
1142@b{Please note that the text in this subsection is outdated and needs} 1142@b{Please note that the text in this subsection is outdated and needs}
1143@b{to be rewritten for version 0.10!} 1143@b{to be rewritten for version 0.10!}
@@ -1157,7 +1157,7 @@ the quality of the content found in it.
1157 1157
1158@node Namespace names 1158@node Namespace names
1159@subsubsection Namespace names 1159@subsubsection Namespace names
1160@c %**end of header 1160
1161 1161
1162@b{Please note that the text in this subsection is outdated and needs} 1162@b{Please note that the text in this subsection is outdated and needs}
1163@b{to be rewritten for version 0.10!} 1163@b{to be rewritten for version 0.10!}
@@ -1172,7 +1172,7 @@ to the NICKNAME to get a unique identifier.
1172 1172
1173@node Namespace root 1173@node Namespace root
1174@subsubsection Namespace root 1174@subsubsection Namespace root
1175@c %**end of header 1175
1176 1176
1177@b{Please note that the text in this subsection is outdated and needs} 1177@b{Please note that the text in this subsection is outdated and needs}
1178@b{to be rewritten for version 0.10!} 1178@b{to be rewritten for version 0.10!}
@@ -1185,7 +1185,7 @@ entry point to the content of the namespace.
1185 1185
1186@node File-Sharing URIs 1186@node File-Sharing URIs
1187@subsection File-Sharing URIs 1187@subsection File-Sharing URIs
1188@c %**end of header 1188
1189 1189
1190GNUnet (currently) uses four different types of URIs for 1190GNUnet (currently) uses four different types of URIs for
1191file-sharing. They all begin with "gnunet://fs/". 1191file-sharing. They all begin with "gnunet://fs/".
@@ -1207,7 +1207,7 @@ into two OR-ed keywords 'foo' and 'bar', not into '"foo bar"'.
1207 1207
1208@node Encoding of hash values in URIs 1208@node Encoding of hash values in URIs
1209@subsubsection Encoding of hash values in URIs 1209@subsubsection Encoding of hash values in URIs
1210@c %**end of header 1210
1211 1211
1212Most URIs include some hash values. Hashes are encoded using 1212Most URIs include some hash values. Hashes are encoded using
1213base32hex (RFC 2938). 1213base32hex (RFC 2938).
@@ -1215,7 +1215,7 @@ base32hex (RFC 2938).
1215@cindex chk-uri 1215@cindex chk-uri
1216@node Content Hash Key (chk) 1216@node Content Hash Key (chk)
1217@subsubsection Content Hash Key (chk) 1217@subsubsection Content Hash Key (chk)
1218@c %**end of header 1218
1219 1219
1220A chk-URI is used to (uniquely) identify a file or directory 1220A chk-URI is used to (uniquely) identify a file or directory
1221and to allow peers to download the file. Files are stored in 1221and to allow peers to download the file. Files are stored in
@@ -1232,7 +1232,7 @@ of the encrypted block).
1232@cindex loc-uri 1232@cindex loc-uri
1233@node Location identifiers (loc) 1233@node Location identifiers (loc)
1234@subsubsection Location identifiers (loc) 1234@subsubsection Location identifiers (loc)
1235@c %**end of header 1235
1236 1236
1237For non-anonymous file-sharing, loc-URIs are used to specify which 1237For non-anonymous file-sharing, loc-URIs are used to specify which
1238peer is offering the data (in addition to specifying all of the 1238peer is offering the data (in addition to specifying all of the
@@ -1248,7 +1248,7 @@ base32hex) and EXPTIME specifies when the signature expires
1248@cindex ksk-uri 1248@cindex ksk-uri
1249@node Keyword queries (ksk) 1249@node Keyword queries (ksk)
1250@subsubsection Keyword queries (ksk) 1250@subsubsection Keyword queries (ksk)
1251@c %**end of header 1251
1252 1252
1253A keyword-URI is used to specify that the desired operation 1253A keyword-URI is used to specify that the desired operation
1254is the search using a particular keyword. The format is simply 1254is the search using a particular keyword. The format is simply
@@ -1263,7 +1263,7 @@ Furthermore they must not contain '++'.
1263@cindex sks-uri 1263@cindex sks-uri
1264@node Namespace content (sks) 1264@node Namespace content (sks)
1265@subsubsection Namespace content (sks) 1265@subsubsection Namespace content (sks)
1266@c %**end of header 1266
1267 1267
1268@b{Please note that the text in this subsection is outdated and needs} 1268@b{Please note that the text in this subsection is outdated and needs}
1269@b{to be rewritten for version 0.10!} 1269@b{to be rewritten for version 0.10!}
@@ -1298,7 +1298,7 @@ looking for for testing, we need to begin by publishing a file.
1298 1298
1299@node gtk-Publishing 1299@node gtk-Publishing
1300@subsubsection Publishing 1300@subsubsection Publishing
1301@c %**end of header 1301
1302 1302
1303To publish a file, select "File Sharing" in the menu bar just below the 1303To publish a file, select "File Sharing" in the menu bar just below the
1304"Statistics" icon, and then select "Publish" from the menu. 1304"Statistics" icon, and then select "Publish" from the menu.
@@ -1361,7 +1361,7 @@ with progress indicators):
1361 1361
1362@node gtk-Searching 1362@node gtk-Searching
1363@subsubsection Searching 1363@subsubsection Searching
1364@c %**end of header 1364
1365 1365
1366Below the menu bar, there are four entry widges labeled "Namespace", 1366Below the menu bar, there are four entry widges labeled "Namespace",
1367"Keywords", "Anonymity" and "Mime-type" (from left to right). These 1367"Keywords", "Anonymity" and "Mime-type" (from left to right). These
@@ -1386,7 +1386,7 @@ a little area for downloading appears.
1386 1386
1387@node gtk-Downloading 1387@node gtk-Downloading
1388@subsubsection Downloading 1388@subsubsection Downloading
1389@c %**end of header 1389
1390 1390
1391In the downloading area, you can select the target directory (default is 1391In the downloading area, you can select the target directory (default is
1392"Downloads") and specify the desired filename (by default the filename it 1392"Downloads") and specify the desired filename (by default the filename it
@@ -1413,7 +1413,7 @@ That's it, you now know the basics for file-sharing with GNUnet!
1413 1413
1414@node The GNU Name System 1414@node The GNU Name System
1415@section The GNU Name System 1415@section The GNU Name System
1416@c %**end of header 1416
1417 1417
1418 1418
1419The GNU Name System (GNS) is secure and decentralized naming system. 1419The GNU Name System (GNS) is secure and decentralized naming system.
@@ -1915,8 +1915,8 @@ Ascension
1915Usage: 1915Usage:
1916 ascension <domain> [-d] [-p] 1916 ascension <domain> [-d] [-p]
1917 ascension <domain> <port> [-d] [-p] 1917 ascension <domain> <port> [-d] [-p]
1918 ascension <domain> -ns <transferns> [-d] [-p] 1918 ascension <domain> -n <transferns> [-d] [-p]
1919 ascension <domain> -ns <transferns> <port> [-d] [-p] 1919 ascension <domain> -n <transferns> <port> [-d] [-p]
1920 ascension -p | --public 1920 ascension -p | --public
1921 ascension -h | --help 1921 ascension -h | --help
1922 ascension -v | --version 1922 ascension -v | --version
@@ -1940,7 +1940,7 @@ To migrate the Syrian top level domain - one of the few top level domains that
1940still supports zone transfers - into GNS use the following command: 1940still supports zone transfers - into GNS use the following command:
1941 1941
1942@example 1942@example
1943$ ascension sy. -ns ns1.tld.sy. -p 1943$ ascension sy. -n ns1.tld.sy. -p
1944@end example 1944@end example
1945 1945
1946The -p flag will tell GNS to put these records on the DHT so that other users 1946The -p flag will tell GNS to put these records on the DHT so that other users
@@ -1982,10 +1982,14 @@ and enable the service, so that your zone is migrated automatically.
1982@section reclaimID Identity Provider 1982@section reclaimID Identity Provider
1983 1983
1984The reclaimID Identity Provider (IdP) is a decentralized IdP service. 1984The reclaimID Identity Provider (IdP) is a decentralized IdP service.
1985It allows its users to manage and authorize third parties to access their identity attributes such as email or shipping addresses. 1985It allows its users to manage and authorize third parties to access
1986 1986their identity attributes such as email or shipping addresses.
1987It basically mimics the concepts of centralized IdPs, such as those offered by Google or Facebook. 1987
1988Like other IdPs, reclaimID features an (optional) OpenID-Connect 1.0-compliant protocol layer that can be used for websites to integrate reclaimID as an Identity Provider with little effort. 1988It basically mimics the concepts of centralized IdPs, such as those
1989offered by Google or Facebook.
1990Like other IdPs, reclaimID features an (optional) OpenID-Connect
19911.0-compliant protocol layer that can be used for websites to
1992integrate reclaimID as an Identity Provider with little effort.
1989 1993
1990@menu 1994@menu
1991* Managing Attributes:: 1995* Managing Attributes::
diff --git a/doc/handbook/gnunet.texi b/doc/handbook/gnunet.texi
index a479d2059..75a9f1f2b 100644
--- a/doc/handbook/gnunet.texi
+++ b/doc/handbook/gnunet.texi
@@ -14,7 +14,7 @@
14@c @set OPENPGP-SIGNING-KEY-ID 14@c @set OPENPGP-SIGNING-KEY-ID
15 15
16@copying 16@copying
17Copyright @copyright{} 2001-2018 GNUnet e.V. 17Copyright @copyright{} 2001-2019 GNUnet e.V.
18 18
19Permission is granted to copy, distribute and/or modify this document 19Permission is granted to copy, distribute and/or modify this document
20under the terms of the GNU Free Documentation License, Version 1.3 or 20under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -72,11 +72,11 @@ This document is the Reference Manual for GNUnet version @value{VERSION}.
72 72
73@menu 73@menu
74 74
75* Preface:: Chapter 0 75* Preface:: Preface
76* Philosophy:: About GNUnet 76* Philosophy:: About GNUnet
77* Key Concepts:: Key concepts of GNUnet 77* Key Concepts:: Key concepts of GNUnet
78@c * Vocabulary:: Vocabulary 78@c * Vocabulary:: Vocabulary
79* Installing GNUnet:: Installing GNUnet 79* Installing GNUnet:: Installing GNUnet
80* Using GNUnet:: Using GNUnet 80* Using GNUnet:: Using GNUnet
81@c * Configuration Handbook:: Configuring GNUnet 81@c * Configuration Handbook:: Configuring GNUnet
82* GNUnet Contributors Handbook:: Contributing to GNUnet 82* GNUnet Contributors Handbook:: Contributing to GNUnet
@@ -122,9 +122,9 @@ Installing GNUnet
122* Create @code{gnunet} user and group:: 122* Create @code{gnunet} user and group::
123* Preparing and Compiling the Source Code:: 123* Preparing and Compiling the Source Code::
124* Installation:: 124* Installation::
125* MOVED FROM USER Checking the Installation:: 125* Checking the Installation::
126* MOVED FROM USER The graphical configuration interface:: 126* The graphical configuration interface::
127* MOVED FROM USER Config Leftovers:: 127* Config Leftovers::
128 128
129Using GNUnet 129Using GNUnet
130 130
diff --git a/doc/handbook/manual.css b/doc/handbook/manual.css
index 404525dc2..0fe08b83c 100644
--- a/doc/handbook/manual.css
+++ b/doc/handbook/manual.css
@@ -1,6 +1,6 @@
1/* Style-sheet to use for manuals (copied from Emacs) */ 1/* Style-sheet to use for manuals (copied from Emacs) */
2 2
3@import url('/style.css'); 3@import url('style.css');
4 4
5/* makeinfo 6.5 converts @quotation to <blockquote>. Highlight them. */ 5/* makeinfo 6.5 converts @quotation to <blockquote>. Highlight them. */
6blockquote { 6blockquote {
diff --git a/doc/handbook/run-gendocs.sh b/doc/handbook/run-gendocs.sh
index 5e60a2d0f..e52ae0d23 100755
--- a/doc/handbook/run-gendocs.sh
+++ b/doc/handbook/run-gendocs.sh
@@ -2,7 +2,7 @@
2 2
3make version.texi/replacement 3make version.texi/replacement
4 4
5./gendocs.sh --email gnunet-developers@gnu.org gnunet-c-tutorial "GNUnet C Tutorial" -o "manual/gnunet-c-tutorial" 5#./gendocs.sh --email gnunet-developers@gnu.org gnunet-c-tutorial "GNUnet C Tutorial" -o "manual/gnunet-c-tutorial"
6#cd manual 6#cd manual
7#mkdir gnunet-c-tutorial 7#mkdir gnunet-c-tutorial
8#mv * gnunet-c-tutorial/ 8#mv * gnunet-c-tutorial/
diff --git a/doc/handbook/style.css b/doc/handbook/style.css
index 0c4525437..e5271197b 100644
--- a/doc/handbook/style.css
+++ b/doc/handbook/style.css
@@ -1,6 +1,6 @@
1/* This stylesheet is used by manuals and a few older resources. */ 1/* This stylesheet is used by manuals and a few older resources. */
2 2
3@import url('/reset.css'); 3@import url('reset.css');
4 4
5 5
6/*** PAGE LAYOUT ***/ 6/*** PAGE LAYOUT ***/