aboutsummaryrefslogtreecommitdiff
path: root/doc/handbook
diff options
context:
space:
mode:
Diffstat (limited to 'doc/handbook')
-rw-r--r--doc/handbook/chapters/developer.texi390
-rw-r--r--doc/handbook/chapters/installation.texi10
-rw-r--r--doc/handbook/chapters/user.texi104
3 files changed, 252 insertions, 252 deletions
diff --git a/doc/handbook/chapters/developer.texi b/doc/handbook/chapters/developer.texi
index 9c1ff4065..7cefa5603 100644
--- a/doc/handbook/chapters/developer.texi
+++ b/doc/handbook/chapters/developer.texi
@@ -2832,7 +2832,7 @@ which both ensure correct alignment when sending structs over the network.
2832@c *********************************************************************** 2832@c ***********************************************************************
2833@node Client - Establish connection 2833@node Client - Establish connection
2834@subsubsection Client - Establish connection 2834@subsubsection Client - Establish connection
2835@c %**end of header 2835
2836 2836
2837 2837
2838At 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
@@ -2847,7 +2847,7 @@ client = GNUNET_CLIENT_connect ("transport", cfg);
2847@c *********************************************************************** 2847@c ***********************************************************************
2848@node Client - Initialize request message 2848@node Client - Initialize request message
2849@subsubsection Client - Initialize request message 2849@subsubsection Client - Initialize request message
2850@c %**end of header 2850
2851 2851
2852When the connection is ready, we initialize the message. In this step, 2852When the connection is ready, we initialize the message. In this step,
2853all the fields of the message should be properly initialized, namely the 2853all the fields of the message should be properly initialized, namely the
@@ -2880,7 +2880,7 @@ Big Endian and Little Endian.
2880@c *********************************************************************** 2880@c ***********************************************************************
2881@node Client - Send request and receive response 2881@node Client - Send request and receive response
2882@subsubsection Client - Send request and receive response 2882@subsubsection Client - Send request and receive response
2883@c %**end of header 2883
2884 2884
2885@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!}
2886 2886
@@ -2915,7 +2915,7 @@ int main(int argc, char**argv) @{
2915@c *********************************************************************** 2915@c ***********************************************************************
2916@node Server - Add new handles for specified messages 2916@node Server - Add new handles for specified messages
2917@subsubsection Server - Add new handles for specified messages 2917@subsubsection Server - Add new handles for specified messages
2918@c %**end of header 2918
2919 2919
2920in the function above the argument @code{run} is used to initiate 2920in the function above the argument @code{run} is used to initiate
2921transport service,and defined like this: 2921transport service,and defined like this:
@@ -2973,7 +2973,7 @@ depicted as @code{@{NULL, NULL, 0, 0@}} is set in the last area.
2973@c *********************************************************************** 2973@c ***********************************************************************
2974@node Server - Process request message 2974@node Server - Process request message
2975@subsubsection Server - Process request message 2975@subsubsection Server - Process request message
2976@c %**end of header 2976
2977 2977
2978After the initialization of transport service, the request message would 2978After the initialization of transport service, the request message would
2979be processed. Before handling the main message data, the validity of this 2979be processed. Before handling the main message data, the validity of this
@@ -3024,7 +3024,7 @@ message.
3024@c *********************************************************************** 3024@c ***********************************************************************
3025@node Server - Response to client 3025@node Server - Response to client
3026@subsubsection Server - Response to client 3026@subsubsection Server - Response to client
3027@c %**end of header 3027
3028 3028
3029Once 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
3030response to the client. A new @code{struct AddressLookupMessage} would be 3030response to the client. A new @code{struct AddressLookupMessage} would be
@@ -3060,7 +3060,7 @@ to send the message.
3060@c *********************************************************************** 3060@c ***********************************************************************
3061@node Server - Notification of clients 3061@node Server - Notification of clients
3062@subsubsection Server - Notification of clients 3062@subsubsection Server - Notification of clients
3063@c %**end of header 3063
3064 3064
3065Often a service needs to (repeatedly) transmit notifications to a client 3065Often a service needs to (repeatedly) transmit notifications to a client
3066or 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
@@ -3089,7 +3089,7 @@ messages to the server.
3089@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
3090@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
3091@c %** subsub? it's a referenced page on the ipc document. 3091@c %** subsub? it's a referenced page on the ipc document.
3092@c %**end of header 3092
3093 3093
3094Here 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
3095Order and Host Byte Order respectively. What is the difference between 3095Order and Host Byte Order respectively. What is the difference between
@@ -3145,7 +3145,7 @@ byte order.
3145@cindex Cryptography API 3145@cindex Cryptography API
3146@node Cryptography API 3146@node Cryptography API
3147@subsection Cryptography API 3147@subsection Cryptography API
3148@c %**end of header 3148
3149 3149
3150The gnunetutil APIs provides the cryptographic primitives used in GNUnet. 3150The gnunetutil APIs provides the cryptographic primitives used in GNUnet.
3151GNUnet 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
@@ -3182,7 +3182,7 @@ should be considered secure for traditional applications of RSA.
3182@cindex Message Queue API 3182@cindex Message Queue API
3183@node Message Queue API 3183@node Message Queue API
3184@subsection Message Queue API 3184@subsection Message Queue API
3185@c %**end of header 3185
3186 3186
3187@strong{ Introduction }@ 3187@strong{ Introduction }@
3188Often, applications need to queue messages that 3188Often, applications need to queue messages that
@@ -3326,7 +3326,7 @@ callback. When canceling an envelope, it is not necessary@ to call
3326@cindex Service API 3326@cindex Service API
3327@node Service API 3327@node Service API
3328@subsection Service API 3328@subsection Service API
3329@c %**end of header 3329
3330 3330
3331Most GNUnet code lives in the form of services. Services are processes 3331Most GNUnet code lives in the form of services. Services are processes
3332that 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
@@ -3402,7 +3402,7 @@ clients to set (possibly persistent) statistic values before terminating.
3402@c *********************************************************************** 3402@c ***********************************************************************
3403@node Optimizing Memory Consumption of GNUnet's (Multi-) Hash Maps 3403@node Optimizing Memory Consumption of GNUnet's (Multi-) Hash Maps
3404@subsection Optimizing Memory Consumption of GNUnet's (Multi-) Hash Maps 3404@subsection Optimizing Memory Consumption of GNUnet's (Multi-) Hash Maps
3405@c %**end of header 3405
3406 3406
3407A 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
3408often 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
@@ -3426,7 +3426,7 @@ the hash map.
3426 3426
3427@node Analysis 3427@node Analysis
3428@subsubsection Analysis 3428@subsubsection Analysis
3429@c %**end of header 3429
3430 3430
3431The 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
3432that GNUnet uses 512-bit cryptographic hash codes --- and the 3432that GNUnet uses 512-bit cryptographic hash codes --- and the
@@ -3477,7 +3477,7 @@ we tend to really try to keep the entries small.
3477@c *********************************************************************** 3477@c ***********************************************************************
3478@node Solution 3478@node Solution
3479@subsubsection Solution 3479@subsubsection Solution
3480@c %**end of header 3480
3481 3481
3482The solution that has now been implemented is to @strong{optionally} 3482The solution that has now been implemented is to @strong{optionally}
3483allow 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
@@ -3495,7 +3495,7 @@ pointer and undefined behavior of the (multi-)hash map API.
3495@c *********************************************************************** 3495@c ***********************************************************************
3496@node Migration 3496@node Migration
3497@subsubsection Migration 3497@subsubsection Migration
3498@c %**end of header 3498
3499 3499
3500To 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
3501key (and never modify it). Then, all calls to 3501key (and never modify it). Then, all calls to
@@ -3544,7 +3544,7 @@ removed from the map, undefined behavior is likely to be observed.
3544@c *********************************************************************** 3544@c ***********************************************************************
3545@node Conclusion 3545@node Conclusion
3546@subsubsection Conclusion 3546@subsubsection Conclusion
3547@c %**end of header 3547
3548 3548
3549The new optimization can is often applicable and can result in a 3549The new optimization can is often applicable and can result in a
3550reduction in memory consumption of up to 30% in practice. However, it 3550reduction in memory consumption of up to 30% in practice. However, it
@@ -3557,7 +3557,7 @@ at least until benchmarks exist).
3557@c *********************************************************************** 3557@c ***********************************************************************
3558@node Availability 3558@node Availability
3559@subsubsection Availability 3559@subsubsection Availability
3560@c %**end of header 3560
3561 3561
3562The new multi hash map code was committed in SVN 24319 (which made its 3562The new multi hash map code was committed in SVN 24319 (which made its
3563way into GNUnet version 0.9.4). 3563way into GNUnet version 0.9.4).
@@ -3570,7 +3570,7 @@ to drop by 20-30% due to this change.
3570@cindex CONTAINER_MDLL API 3570@cindex CONTAINER_MDLL API
3571@node CONTAINER_MDLL API 3571@node CONTAINER_MDLL API
3572@subsection CONTAINER_MDLL API 3572@subsection CONTAINER_MDLL API
3573@c %**end of header 3573
3574 3574
3575This text documents the GNUNET_CONTAINER_MDLL API. The 3575This text documents the GNUNET_CONTAINER_MDLL API. The
3576GNUNET_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
@@ -3636,7 +3636,7 @@ Iterating over the list should be done by directly accessing the
3636@cindex ARM 3636@cindex ARM
3637@node Automatic Restart Manager (ARM) 3637@node Automatic Restart Manager (ARM)
3638@section Automatic Restart Manager (ARM) 3638@section Automatic Restart Manager (ARM)
3639@c %**end of header 3639
3640 3640
3641GNUnet's Automated Restart Manager (ARM) is the GNUnet service responsible 3641GNUnet's Automated Restart Manager (ARM) is the GNUnet service responsible
3642for system initialization and service babysitting. ARM starts and halts 3642for system initialization and service babysitting. ARM starts and halts
@@ -3657,7 +3657,7 @@ about how ARM works and how to interact with it.
3657@c *********************************************************************** 3657@c ***********************************************************************
3658@node Basic functionality 3658@node Basic functionality
3659@subsection Basic functionality 3659@subsection Basic functionality
3660@c %**end of header 3660
3661 3661
3662@itemize @bullet 3662@itemize @bullet
3663@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
@@ -3681,7 +3681,7 @@ it to start a service "resolver", stops the "resolver" then stops "ARM".
3681@c *********************************************************************** 3681@c ***********************************************************************
3682@node Key configuration options 3682@node Key configuration options
3683@subsection Key configuration options 3683@subsection Key configuration options
3684@c %**end of header 3684
3685 3685
3686Configurations for ARM and services should be available in a .conf file 3686Configurations for ARM and services should be available in a .conf file
3687(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
@@ -3750,7 +3750,7 @@ services that are going to run.
3750@c *********************************************************************** 3750@c ***********************************************************************
3751@node ARM - Availability 3751@node ARM - Availability
3752@subsection ARM - Availability 3752@subsection ARM - Availability
3753@c %**end of header 3753
3754 3754
3755As mentioned before, one of the features provided by ARM is starting 3755As mentioned before, one of the features provided by ARM is starting
3756services on demand. Consider the example of one service "client" that 3756services on demand. Consider the example of one service "client" that
@@ -3838,7 +3838,7 @@ problematic service.
3838@cindex TRANSPORT Subsystem 3838@cindex TRANSPORT Subsystem
3839@node TRANSPORT Subsystem 3839@node TRANSPORT Subsystem
3840@section TRANSPORT Subsystem 3840@section TRANSPORT Subsystem
3841@c %**end of header 3841
3842 3842
3843This chapter documents how the GNUnet transport subsystem works. The 3843This chapter documents how the GNUnet transport subsystem works. The
3844GNUnet transport subsystem consists of three main components: the 3844GNUnet transport subsystem consists of three main components: the
@@ -3896,7 +3896,7 @@ transport service.
3896 3896
3897@node Address validation protocol 3897@node Address validation protocol
3898@subsection Address validation protocol 3898@subsection Address validation protocol
3899@c %**end of header 3899
3900 3900
3901This section documents how the GNUnet transport service validates 3901This section documents how the GNUnet transport service validates
3902connections with other peers. It is a high-level description of the 3902connections with other peers. It is a high-level description of the
@@ -3959,7 +3959,7 @@ implementation details).
3959@cindex NAT library 3959@cindex NAT library
3960@node NAT library 3960@node NAT library
3961@section NAT library 3961@section NAT library
3962@c %**end of header 3962
3963 3963
3964The 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
3965NAT traversal @strong{without} third-party support. So protocols that 3965NAT traversal @strong{without} third-party support. So protocols that
@@ -4006,7 +4006,7 @@ This way, it is easy to test if the current NAT configuration is valid.
4006 4006
4007@node Distance-Vector plugin 4007@node Distance-Vector plugin
4008@section Distance-Vector plugin 4008@section Distance-Vector plugin
4009@c %**end of header 4009
4010 4010
4011The Distance Vector (DV) transport is a transport mechanism that allows 4011The Distance Vector (DV) transport is a transport mechanism that allows
4012peers 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
@@ -4075,7 +4075,7 @@ message, and delivers it to Carol as though it came directly from Alice.
4075@cindex SMTP plugin 4075@cindex SMTP plugin
4076@node SMTP plugin 4076@node SMTP plugin
4077@section SMTP plugin 4077@section SMTP plugin
4078@c %**end of header 4078
4079@c TODO: Update! 4079@c TODO: Update!
4080 4080
4081This section describes the new SMTP transport plugin for GNUnet as it 4081This section describes the new SMTP transport plugin for GNUnet as it
@@ -4108,7 +4108,7 @@ usual grain of salt and be updated eventually.
4108 4108
4109@node Why use SMTP for a peer-to-peer transport? 4109@node Why use SMTP for a peer-to-peer transport?
4110@subsection Why use SMTP for a peer-to-peer transport? 4110@subsection Why use SMTP for a peer-to-peer transport?
4111@c %**end of header 4111
4112 4112
4113There are many reasons why one would not want to use SMTP: 4113There are many reasons why one would not want to use SMTP:
4114 4114
@@ -4143,7 +4143,7 @@ type of situation.
4143 4143
4144@node How does it work? 4144@node How does it work?
4145@subsection How does it work? 4145@subsection How does it work?
4146@c %**end of header 4146
4147 4147
4148When 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
4149advertised (only) an SMTP transport address, GNUnet base64-encodes the 4149advertised (only) an SMTP transport address, GNUnet base64-encodes the
@@ -4156,7 +4156,7 @@ GNUnet E-mail messages by searching for a generic filter.
4156 4156
4157@node How do I configure my peer? 4157@node How do I configure my peer?
4158@subsection How do I configure my peer? 4158@subsection How do I configure my peer?
4159@c %**end of header 4159
4160 4160
4161First, 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
4162for 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
@@ -4201,7 +4201,7 @@ This should be it, but you may probably want to test it first.
4201 4201
4202@node How do I test if it works? 4202@node How do I test if it works?
4203@subsection How do I test if it works? 4203@subsection How do I test if it works?
4204@c %**end of header 4204
4205 4205
4206Any transport can be subjected to some rudimentary tests using the 4206Any transport can be subjected to some rudimentary tests using the
4207@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
@@ -4224,7 +4224,7 @@ to send and receive messages.
4224 4224
4225@node How fast is it? 4225@node How fast is it?
4226@subsection How fast is it? 4226@subsection How fast is it?
4227@c %**end of header 4227
4228 4228
4229We 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
4230directly and when used from an application using the GNUnet core. 4230directly and when used from an application using the GNUnet core.
@@ -4291,7 +4291,7 @@ benchmarking results.
4291@cindex Bluetooth plugin 4291@cindex Bluetooth plugin
4292@node Bluetooth plugin 4292@node Bluetooth plugin
4293@section Bluetooth plugin 4293@section Bluetooth plugin
4294@c %**end of header 4294
4295 4295
4296This page describes the new Bluetooth transport plugin for GNUnet. The 4296This page describes the new Bluetooth transport plugin for GNUnet. The
4297plugin 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
@@ -4317,7 +4317,7 @@ ask on the IRC channel.
4317 4317
4318@node What do I need to use the Bluetooth plugin transport? 4318@node What do I need to use the Bluetooth plugin transport?
4319@subsection What do I need to use the Bluetooth plugin transport? 4319@subsection What do I need to use the Bluetooth plugin transport?
4320@c %**end of header 4320
4321 4321
4322If 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
4323transport plugin you should install the 4323transport plugin you should install the
@@ -4344,7 +4344,7 @@ protocol so we cannot turn on your device programatically!
4344@c FIXME: Change to unique title 4344@c FIXME: Change to unique title
4345@node How does it work2? 4345@node How does it work2?
4346@subsection How does it work2? 4346@subsection How does it work2?
4347@c %**end of header 4347
4348 4348
4349The Bluetooth transport plugin uses virtually the same code as the WLAN 4349The Bluetooth transport plugin uses virtually the same code as the WLAN
4350plugin 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
@@ -4374,7 +4374,7 @@ discovery.
4374 4374
4375@node What possible errors should I be aware of? 4375@node What possible errors should I be aware of?
4376@subsection What possible errors should I be aware of? 4376@subsection What possible errors should I be aware of?
4377@c %**end of header 4377
4378 4378
4379@emph{This section is dedicated for GNU/Linux users} 4379@emph{This section is dedicated for GNU/Linux users}
4380 4380
@@ -4413,7 +4413,7 @@ the device and to send some particular commands to it.
4413@c FIXME: A more unique name 4413@c FIXME: A more unique name
4414@node How do I configure my peer2? 4414@node How do I configure my peer2?
4415@subsection How do I configure my peer2? 4415@subsection How do I configure my peer2?
4416@c %**end of header 4416
4417 4417
4418On 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
4419corresponds to the one that you want to use. 4419corresponds to the one that you want to use.
@@ -4447,7 +4447,7 @@ transport service.
4447 4447
4448@node How can I test it? 4448@node How can I test it?
4449@subsection How can I test it? 4449@subsection How can I test it?
4450@c %**end of header 4450
4451 4451
4452If 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
4453GNU/Linux you must: 4453GNU/Linux you must:
@@ -4494,7 +4494,7 @@ transport service.
4494 4494
4495@node The implementation of the Bluetooth transport plugin 4495@node The implementation of the Bluetooth transport plugin
4496@subsection The implementation of the Bluetooth transport plugin 4496@subsection The implementation of the Bluetooth transport plugin
4497@c %**end of header 4497
4498 4498
4499This page describes the implementation of the Bluetooth transport plugin. 4499This page describes the implementation of the Bluetooth transport plugin.
4500 4500
@@ -4528,7 +4528,7 @@ platforms.
4528 4528
4529@node Linux functionality 4529@node Linux functionality
4530@subsubsection Linux functionality 4530@subsubsection Linux functionality
4531@c %**end of header 4531
4532 4532
4533In order to implement the plugin functionality on GNU/Linux I 4533In order to implement the plugin functionality on GNU/Linux I
4534used the BlueZ stack. 4534used the BlueZ stack.
@@ -4624,7 +4624,7 @@ support for @strong{broadcast messages}.}
4624 4624
4625@node Details about the broadcast implementation 4625@node Details about the broadcast implementation
4626@subsubsection Details about the broadcast implementation 4626@subsubsection Details about the broadcast implementation
4627@c %**end of header 4627
4628 4628
4629First 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
4630messages is not implemented in a conventional way. Since the inquiry scan 4630messages is not implemented in a conventional way. Since the inquiry scan
@@ -4671,7 +4671,7 @@ simply use the socket.
4671 4671
4672@node Windows functionality 4672@node Windows functionality
4673@subsubsection Windows functionality 4673@subsubsection Windows functionality
4674@c %**end of header 4674
4675 4675
4676For 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
4677advantage of coming standard from Windows XP SP2. The main disadvantage is 4677advantage of coming standard from Windows XP SP2. The main disadvantage is
@@ -4726,7 +4726,7 @@ broadcast messages. When it receives a broadcast message it will skip it.
4726 4726
4727@node Pending features 4727@node Pending features
4728@subsubsection Pending features 4728@subsubsection Pending features
4729@c %**end of header 4729
4730 4730
4731@itemize @bullet 4731@itemize @bullet
4732@item Implement the broadcast functionality on Windows @emph{(currently 4732@item Implement the broadcast functionality on Windows @emph{(currently
@@ -4742,7 +4742,7 @@ contact me.
4742 4742
4743@node WLAN plugin 4743@node WLAN plugin
4744@section WLAN plugin 4744@section WLAN plugin
4745@c %**end of header 4745
4746 4746
4747This section documents how the wlan transport plugin works. Parts which 4747This section documents how the wlan transport plugin works. Parts which
4748are not implemented yet or could be better implemented are described at 4748are not implemented yet or could be better implemented are described at
@@ -4751,7 +4751,7 @@ the end.
4751@cindex ATS Subsystem 4751@cindex ATS Subsystem
4752@node ATS Subsystem 4752@node ATS Subsystem
4753@section ATS Subsystem 4753@section ATS Subsystem
4754@c %**end of header 4754
4755 4755
4756ATS stands for "automatic transport selection", and the function of ATS in 4756ATS stands for "automatic transport selection", and the function of ATS in
4757GNUnet is to decide on which address (and thus transport plugin) should 4757GNUnet is to decide on which address (and thus transport plugin) should
@@ -4774,7 +4774,7 @@ superior.
4774@cindex CORE Subsystem 4774@cindex CORE Subsystem
4775@node CORE Subsystem 4775@node CORE Subsystem
4776@section CORE Subsystem 4776@section CORE Subsystem
4777@c %**end of header 4777
4778 4778
4779The CORE subsystem in GNUnet is responsible for securing link-layer 4779The CORE subsystem in GNUnet is responsible for securing link-layer
4780communications between nodes in the GNUnet overlay network. CORE builds 4780communications between nodes in the GNUnet overlay network. CORE builds
@@ -4818,7 +4818,7 @@ message counters and ephemeral keys)
4818@cindex core subsystem limitations 4818@cindex core subsystem limitations
4819@node Limitations 4819@node Limitations
4820@subsection Limitations 4820@subsection Limitations
4821@c %**end of header 4821
4822 4822
4823CORE does not perform 4823CORE does not perform
4824@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
@@ -4852,7 +4852,7 @@ control is needed, applications should use the CADET service.
4852@cindex when is a peer connected 4852@cindex when is a peer connected
4853@node When is a peer "connected"? 4853@node When is a peer "connected"?
4854@subsection When is a peer "connected"? 4854@subsection When is a peer "connected"?
4855@c %**end of header 4855
4856 4856
4857In addition to the security features mentioned above, CORE also provides 4857In addition to the security features mentioned above, CORE also provides
4858one additional key feature to applications using it, and that is a 4858one additional key feature to applications using it, and that is a
@@ -4885,7 +4885,7 @@ connection.
4885@cindex libgnunetcore 4885@cindex libgnunetcore
4886@node libgnunetcore 4886@node libgnunetcore
4887@subsection libgnunetcore 4887@subsection libgnunetcore
4888@c %**end of header 4888
4889 4889
4890The 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
4891messaging API used by P2P applications built using GNUnet. It provides 4891messaging API used by P2P applications built using GNUnet. It provides
@@ -4950,7 +4950,7 @@ re-established, the applications will be receive matching connect events.
4950@cindex core clinet-service protocol 4950@cindex core clinet-service protocol
4951@node The CORE Client-Service Protocol 4951@node The CORE Client-Service Protocol
4952@subsection The CORE Client-Service Protocol 4952@subsection The CORE Client-Service Protocol
4953@c %**end of header 4953
4954 4954
4955This section describes the protocol between an application using the CORE 4955This section describes the protocol between an application using the CORE
4956service (the client) and the CORE service process itself. 4956service (the client) and the CORE service process itself.
@@ -4964,7 +4964,7 @@ service (the client) and the CORE service process itself.
4964 4964
4965@node Setup2 4965@node Setup2
4966@subsubsection Setup2 4966@subsubsection Setup2
4967@c %**end of header 4967
4968 4968
4969When a client connects to the CORE service, it first sends a 4969When a client connects to the CORE service, it first sends a
4970@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
@@ -4993,7 +4993,7 @@ both CORE and the client can send messages.
4993 4993
4994@node Notifications 4994@node Notifications
4995@subsubsection Notifications 4995@subsubsection Notifications
4996@c %**end of header 4996
4997 4997
4998The CORE will send @code{ConnectNotifyMessage}s and 4998The CORE will send @code{ConnectNotifyMessage}s and
4999@code{DisconnectNotifyMessage}s whenever peers connect or disconnect from 4999@code{DisconnectNotifyMessage}s whenever peers connect or disconnect from
@@ -5009,7 +5009,7 @@ identity given is that of the receiver.
5009 5009
5010@node Sending 5010@node Sending
5011@subsubsection Sending 5011@subsubsection Sending
5012@c %**end of header 5012
5013 5013
5014When a client wants to transmit a message, it first requests a 5014When a client wants to transmit a message, it first requests a
5015transmission slot by sending a @code{SendMessageRequest} which specifies 5015transmission slot by sending a @code{SendMessageRequest} which specifies
@@ -5029,7 +5029,7 @@ for each request).
5029@cindex CORE Peer-to-Peer Protocol 5029@cindex CORE Peer-to-Peer Protocol
5030@node The CORE Peer-to-Peer Protocol 5030@node The CORE Peer-to-Peer Protocol
5031@subsection The CORE Peer-to-Peer Protocol 5031@subsection The CORE Peer-to-Peer Protocol
5032@c %**end of header 5032
5033 5033
5034 5034
5035@menu 5035@menu
@@ -5042,7 +5042,7 @@ for each request).
5042@cindex EphemeralKeyMessage creation 5042@cindex EphemeralKeyMessage creation
5043@node Creating the EphemeralKeyMessage 5043@node Creating the EphemeralKeyMessage
5044@subsubsection Creating the EphemeralKeyMessage 5044@subsubsection Creating the EphemeralKeyMessage
5045@c %**end of header 5045
5046 5046
5047When the CORE service starts, each peer creates a fresh ephemeral (ECC) 5047When the CORE service starts, each peer creates a fresh ephemeral (ECC)
5048public-private key pair and signs the corresponding 5048public-private key pair and signs the corresponding
@@ -5083,7 +5083,7 @@ connection using the new ephemeral key
5083 5083
5084@node Establishing a connection 5084@node Establishing a connection
5085@subsubsection Establishing a connection 5085@subsubsection Establishing a connection
5086@c %**end of header 5086
5087 5087
5088Peers begin their interaction by sending a @code{EphemeralKeyMessage} to 5088Peers begin their interaction by sending a @code{EphemeralKeyMessage} to
5089the other peer once the TRANSPORT service notifies the CORE service about 5089the other peer once the TRANSPORT service notifies the CORE service about
@@ -5101,7 +5101,7 @@ connection to @code{KX_STATE_UP}.
5101 5101
5102@node Encryption and Decryption 5102@node Encryption and Decryption
5103@subsubsection Encryption and Decryption 5103@subsubsection Encryption and Decryption
5104@c %**end of header 5104
5105 5105
5106All functions related to the key exchange and encryption/decryption of 5106All functions related to the key exchange and encryption/decryption of
5107messages 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
@@ -5129,7 +5129,7 @@ older than 12 hours.
5129 5129
5130@node Type maps 5130@node Type maps
5131@subsubsection Type maps 5131@subsubsection Type maps
5132@c %**end of header 5132
5133 5133
5134Once an encrypted connection has been established, peers begin to exchange 5134Once an encrypted connection has been established, peers begin to exchange
5135type 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
@@ -5401,7 +5401,7 @@ to all the other peers, who will calculate the estimate from it.
5401@node Target value 5401@node Target value
5402@subsubsection Target value 5402@subsubsection Target value
5403 5403
5404@c %**end of header 5404
5405 5405
5406The target value itself is generated by hashing the current time, rounded 5406The target value itself is generated by hashing the current time, rounded
5407down to an agreed value. If the rounding amount is 1h (default) and the 5407down to an agreed value. If the rounding amount is 1h (default) and the
@@ -5411,7 +5411,7 @@ Every repetition is called a round.
5411 5411
5412@node Timing 5412@node Timing
5413@subsubsection Timing 5413@subsubsection Timing
5414@c %**end of header 5414
5415 5415
5416The NSE subsystem has some timing control to avoid everybody broadcasting 5416The NSE subsystem has some timing control to avoid everybody broadcasting
5417its ID all at one. Once each peer has the target random value, it 5417its ID all at one. Once each peer has the target random value, it
@@ -5428,7 +5428,7 @@ peers closest to the target value start broadcasting their ID the first.
5428@node Controlled Flooding 5428@node Controlled Flooding
5429@subsubsection Controlled Flooding 5429@subsubsection Controlled Flooding
5430 5430
5431@c %**end of header 5431
5432 5432
5433When a peer receives a value, first it verifies that it is closer than the 5433When a peer receives a value, first it verifies that it is closer than the
5434closest value it had so far, otherwise it answers the incoming message 5434closest value it had so far, otherwise it answers the incoming message
@@ -5447,7 +5447,7 @@ to the neighbors.
5447@node Calculating the estimate 5447@node Calculating the estimate
5448@subsubsection Calculating the estimate 5448@subsubsection Calculating the estimate
5449 5449
5450@c %**end of header 5450
5451 5451
5452Once the closest ID has been spread across the network each peer gets the 5452Once the closest ID has been spread across the network each peer gets the
5453exact distance between this ID and the target value of the round and 5453exact distance between this ID and the target value of the round and
@@ -5466,7 +5466,7 @@ means a factor of two in the size estimate.
5466@node libgnunetnse 5466@node libgnunetnse
5467@subsection libgnunetnse 5467@subsection libgnunetnse
5468 5468
5469@c %**end of header 5469
5470 5470
5471The NSE subsystem has the simplest API of all services, with only two 5471The NSE subsystem has the simplest API of all services, with only two
5472calls: @code{GNUNET_NSE_connect} and @code{GNUNET_NSE_disconnect}. 5472calls: @code{GNUNET_NSE_connect} and @code{GNUNET_NSE_disconnect}.
@@ -5492,7 +5492,7 @@ is no longer called with new estimates.
5492@node Results 5492@node Results
5493@subsubsection Results 5493@subsubsection Results
5494 5494
5495@c %**end of header 5495
5496 5496
5497The callback provides two values: the average and the 5497The callback provides two values: the average and the
5498@uref{http://en.wikipedia.org/wiki/Standard_deviation, standard deviation} 5498@uref{http://en.wikipedia.org/wiki/Standard_deviation, standard deviation}
@@ -5530,7 +5530,7 @@ changing rapidly).
5530@node libgnunetnse - Examples 5530@node libgnunetnse - Examples
5531@subsubsection libgnunetnse -Examples 5531@subsubsection libgnunetnse -Examples
5532 5532
5533@c %**end of header 5533
5534 5534
5535Let's close with a couple examples. 5535Let's close with a couple examples.
5536 5536
@@ -5557,7 +5557,7 @@ case a 5 sigma minimum would be 2 million and a 6 sigma minimum,
5557@node The NSE Client-Service Protocol 5557@node The NSE Client-Service Protocol
5558@subsection The NSE Client-Service Protocol 5558@subsection The NSE Client-Service Protocol
5559 5559
5560@c %**end of header 5560
5561 5561
5562As with the API, the client-service protocol is very simple, only has 2 5562As with the API, the client-service protocol is very simple, only has 2
5563different messages, defined in @code{src/nse/nse.h}: 5563different messages, defined in @code{src/nse/nse.h}:
@@ -5578,7 +5578,7 @@ simply disconnects from the service, with no message involved.
5578@node The NSE Peer-to-Peer Protocol 5578@node The NSE Peer-to-Peer Protocol
5579@subsection The NSE Peer-to-Peer Protocol 5579@subsection The NSE Peer-to-Peer Protocol
5580 5580
5581@c %**end of header 5581
5582 5582
5583The NSE subsystem only has one message in the P2P protocol, the 5583The NSE subsystem only has one message in the P2P protocol, the
5584@code{GNUNET_MESSAGE_TYPE_NSE_P2P_FLOOD} message. 5584@code{GNUNET_MESSAGE_TYPE_NSE_P2P_FLOOD} message.
@@ -5633,7 +5633,7 @@ traffic spikes and minimize cross-messages.
5633@node HOSTLIST Subsystem 5633@node HOSTLIST Subsystem
5634@section HOSTLIST Subsystem 5634@section HOSTLIST Subsystem
5635 5635
5636@c %**end of header 5636
5637 5637
5638Peers in the GNUnet overlay network need address information so that they 5638Peers in the GNUnet overlay network need address information so that they
5639can connect with other peers. GNUnet uses so called HELLO messages to 5639can connect with other peers. GNUnet uses so called HELLO messages to
@@ -5671,7 +5671,7 @@ manual effort or the use of a HOSTLIST to obtain HELLOs.
5671@node HELLOs 5671@node HELLOs
5672@subsection HELLOs 5672@subsection HELLOs
5673 5673
5674@c %**end of header 5674
5675 5675
5676The basic information peers require to connect to other peers are 5676The basic information peers require to connect to other peers are
5677contained in so called HELLO messages you can think of as a business card. 5677contained in so called HELLO messages you can think of as a business card.
@@ -5683,7 +5683,7 @@ contact other peers.
5683@node Overview for the HOSTLIST subsystem 5683@node Overview for the HOSTLIST subsystem
5684@subsection Overview for the HOSTLIST subsystem 5684@subsection Overview for the HOSTLIST subsystem
5685 5685
5686@c %**end of header 5686
5687 5687
5688The HOSTLIST subsystem provides a way to distribute and obtain contact 5688The HOSTLIST subsystem provides a way to distribute and obtain contact
5689information to connect to other peers using a simple HTTP GET request. 5689information to connect to other peers using a simple HTTP GET request.
@@ -5709,7 +5709,7 @@ service.
5709@node Features 5709@node Features
5710@subsubsection Features 5710@subsubsection Features
5711 5711
5712@c %**end of header 5712
5713 5713
5714The HOSTLIST daemon can: 5714The HOSTLIST daemon can:
5715 5715
@@ -5727,7 +5727,7 @@ peers
5727@node HOSTLIST - Limitations 5727@node HOSTLIST - Limitations
5728@subsubsection HOSTLIST - Limitations 5728@subsubsection HOSTLIST - Limitations
5729 5729
5730@c %**end of header 5730
5731 5731
5732The HOSTLIST daemon does not: 5732The HOSTLIST daemon does not:
5733 5733
@@ -5739,7 +5739,7 @@ The HOSTLIST daemon does not:
5739@node Interacting with the HOSTLIST daemon 5739@node Interacting with the HOSTLIST daemon
5740@subsection Interacting with the HOSTLIST daemon 5740@subsection Interacting with the HOSTLIST daemon
5741 5741
5742@c %**end of header 5742
5743 5743
5744The HOSTLIST subsystem is currently implemented as a daemon, so there is 5744The HOSTLIST subsystem is currently implemented as a daemon, so there is
5745no need for the user to interact with it and therefore there is no 5745no need for the user to interact with it and therefore there is no
@@ -5767,7 +5767,7 @@ download frequency).
5767@node Hostlist security address validation 5767@node Hostlist security address validation
5768@subsection Hostlist security address validation 5768@subsection Hostlist security address validation
5769 5769
5770@c %**end of header 5770
5771 5771
5772Since information obtained from other parties cannot be trusted without 5772Since information obtained from other parties cannot be trusted without
5773validation, we have to distinguish between @emph{validated} and 5773validation, we have to distinguish between @emph{validated} and
@@ -5788,7 +5788,7 @@ to the TRANSPORT server to validate the addresses.
5788@node The HOSTLIST daemon 5788@node The HOSTLIST daemon
5789@subsection The HOSTLIST daemon 5789@subsection The HOSTLIST daemon
5790 5790
5791@c %**end of header 5791
5792 5792
5793The hostlist daemon is the main component of the HOSTLIST subsystem. It is 5793The hostlist daemon is the main component of the HOSTLIST subsystem. It is
5794started by the ARM service and (if configured) starts the HOSTLIST client 5794started by the ARM service and (if configured) starts the HOSTLIST client
@@ -5818,7 +5818,7 @@ subsystems and disconnecting from CORE.
5818@node The HOSTLIST server 5818@node The HOSTLIST server
5819@subsection The HOSTLIST server 5819@subsection The HOSTLIST server
5820 5820
5821@c %**end of header 5821
5822 5822
5823The server provides a way for other peers to obtain HELLOs. Basically it 5823The server provides a way for other peers to obtain HELLOs. Basically it
5824is a small web server other peers can connect to and download a list of 5824is a small web server other peers can connect to and download a list of
@@ -5834,7 +5834,7 @@ to other peers connecting on CORE level.
5834@node The HTTP Server 5834@node The HTTP Server
5835@subsubsection The HTTP Server 5835@subsubsection The HTTP Server
5836 5836
5837@c %**end of header 5837
5838 5838
5839During startup, the server starts a web server listening on the port 5839During startup, the server starts a web server listening on the port
5840specified with the HTTPPORT value (default 8080). In addition it connects 5840specified with the HTTPPORT value (default 8080). In addition it connects
@@ -5860,7 +5860,7 @@ The connection will be closed immediately if no hostlist is available.
5860@node Advertising the URL 5860@node Advertising the URL
5861@subsubsection Advertising the URL 5861@subsubsection Advertising the URL
5862 5862
5863@c %**end of header 5863
5864 5864
5865The server also advertises the URL to download the hostlist to other peers 5865The server also advertises the URL to download the hostlist to other peers
5866if hostlist advertisement is enabled. 5866if hostlist advertisement is enabled.
@@ -5872,7 +5872,7 @@ peer using the CORE service.
5872@node The HOSTLIST client 5872@node The HOSTLIST client
5873@subsection The HOSTLIST client 5873@subsection The HOSTLIST client
5874 5874
5875@c %**end of header 5875
5876 5876
5877The client provides the functionality to download the list of HELLOs from 5877The client provides the functionality to download the list of HELLOs from
5878a set of URLs. 5878a set of URLs.
@@ -5896,7 +5896,7 @@ The client supports two modes of operation:
5896@node Bootstrapping 5896@node Bootstrapping
5897@subsubsection Bootstrapping 5897@subsubsection Bootstrapping
5898 5898
5899@c %**end of header 5899
5900 5900
5901For bootstrapping, it schedules a task to download the hostlist from the 5901For bootstrapping, it schedules a task to download the hostlist from the
5902set of known URLs. 5902set of known URLs.
@@ -5925,7 +5925,7 @@ quality of this URL is updated.
5925@node Learning 5925@node Learning
5926@subsubsection Learning 5926@subsubsection Learning
5927 5927
5928@c %**end of header 5928
5929 5929
5930The client also manages hostlist advertisements from other peers. The 5930The client also manages hostlist advertisements from other peers. The
5931HOSTLIST daemon forwards @code{GNUNET_MESSAGE_TYPE_HOSTLIST_ADVERTISEMENT} 5931HOSTLIST daemon forwards @code{GNUNET_MESSAGE_TYPE_HOSTLIST_ADVERTISEMENT}
@@ -5944,7 +5944,7 @@ never discarded.
5944@node Usage 5944@node Usage
5945@subsection Usage 5945@subsection Usage
5946 5946
5947@c %**end of header 5947
5948 5948
5949To start HOSTLIST by default, it has to be added to the DEFAULTSERVICES 5949To start HOSTLIST by default, it has to be added to the DEFAULTSERVICES
5950section for the ARM services. This is done in the default configuration. 5950section for the ARM services. This is done in the default configuration.
@@ -5958,7 +5958,7 @@ Configuring your peer to provide a hostlist
5958@node IDENTITY Subsystem 5958@node IDENTITY Subsystem
5959@section IDENTITY Subsystem 5959@section IDENTITY Subsystem
5960 5960
5961@c %**end of header 5961
5962 5962
5963Identities of "users" in GNUnet are called egos. 5963Identities of "users" in GNUnet are called egos.
5964Egos can be used as pseudonyms ("fake names") or be tied to an 5964Egos can be used as pseudonyms ("fake names") or be tied to an
@@ -6014,7 +6014,7 @@ between anonymous and pseudonymous egos.
6014@cindex libgnunetidentity 6014@cindex libgnunetidentity
6015@node libgnunetidentity 6015@node libgnunetidentity
6016@subsection libgnunetidentity 6016@subsection libgnunetidentity
6017@c %**end of header 6017
6018 6018
6019 6019
6020@menu 6020@menu
@@ -6028,7 +6028,7 @@ between anonymous and pseudonymous egos.
6028@node Connecting to the service 6028@node Connecting to the service
6029@subsubsection Connecting to the service 6029@subsubsection Connecting to the service
6030 6030
6031@c %**end of header 6031
6032 6032
6033First, typical clients connect to the identity service using 6033First, typical clients connect to the identity service using
6034@code{GNUNET_IDENTITY_connect}. This function takes a callback as a 6034@code{GNUNET_IDENTITY_connect}. This function takes a callback as a
@@ -6064,7 +6064,7 @@ ego's handle.
6064@node Operations on Egos 6064@node Operations on Egos
6065@subsubsection Operations on Egos 6065@subsubsection Operations on Egos
6066 6066
6067@c %**end of header 6067
6068 6068
6069Given an ego handle, the main operations are to get its associated private 6069Given an ego handle, the main operations are to get its associated private
6070key using @code{GNUNET_IDENTITY_ego_get_private_key} or its associated 6070key using @code{GNUNET_IDENTITY_ego_get_private_key} or its associated
@@ -6087,7 +6087,7 @@ only the continuation will no longer be called.
6087@node The anonymous Ego 6087@node The anonymous Ego
6088@subsubsection The anonymous Ego 6088@subsubsection The anonymous Ego
6089 6089
6090@c %**end of header 6090
6091 6091
6092A special way to obtain an ego handle is to call 6092A special way to obtain an ego handle is to call
6093@code{GNUNET_IDENTITY_ego_get_anonymous}, which returns an ego for the 6093@code{GNUNET_IDENTITY_ego_get_anonymous}, which returns an ego for the
@@ -6122,7 +6122,7 @@ using @code{GNUNET_IDENTITY_get}.
6122@node The IDENTITY Client-Service Protocol 6122@node The IDENTITY Client-Service Protocol
6123@subsection The IDENTITY Client-Service Protocol 6123@subsection The IDENTITY Client-Service Protocol
6124 6124
6125@c %**end of header 6125
6126 6126
6127A client connecting to the identity service first sends a message with 6127A client connecting to the identity service first sends a message with
6128type 6128type
@@ -6213,7 +6213,7 @@ private key.}
6213@node Editing Zone Information 6213@node Editing Zone Information
6214@subsubsection Editing Zone Information 6214@subsubsection Editing Zone Information
6215 6215
6216@c %**end of header 6216
6217 6217
6218NAMESTORE provides functions to lookup records stored under a label in a 6218NAMESTORE provides functions to lookup records stored under a label in a
6219zone and to store records under a label in a zone. 6219zone and to store records under a label in a zone.
@@ -6253,7 +6253,7 @@ the operation.
6253@node Iterating Zone Information 6253@node Iterating Zone Information
6254@subsubsection Iterating Zone Information 6254@subsubsection Iterating Zone Information
6255 6255
6256@c %**end of header 6256
6257 6257
6258A client can iterate over all information in a zone or all zones managed 6258A client can iterate over all information in a zone or all zones managed
6259by NAMESTORE. 6259by NAMESTORE.
@@ -6273,7 +6273,7 @@ NULL value to indicate.
6273@node Monitoring Zone Information 6273@node Monitoring Zone Information
6274@subsubsection Monitoring Zone Information 6274@subsubsection Monitoring Zone Information
6275 6275
6276@c %**end of header 6276
6277 6277
6278Clients can also monitor zones to be notified about changes. Here the 6278Clients can also monitor zones to be notified about changes. Here the
6279clients uses the @code{GNUNET_NAMESTORE_zone_monitor_start} function and 6279clients uses the @code{GNUNET_NAMESTORE_zone_monitor_start} function and
@@ -6294,7 +6294,7 @@ from the function to start the monitoring.
6294@node PEERINFO Subsystem 6294@node PEERINFO Subsystem
6295@section PEERINFO Subsystem 6295@section PEERINFO Subsystem
6296 6296
6297@c %**end of header 6297
6298 6298
6299The PEERINFO subsystem is used to store verified (validated) information 6299The PEERINFO subsystem is used to store verified (validated) information
6300about known peers in a persistent way. It obtains these addresses for 6300about known peers in a persistent way. It obtains these addresses for
@@ -6327,7 +6327,7 @@ service providing this functionality.
6327@node PEERINFO - Features 6327@node PEERINFO - Features
6328@subsection PEERINFO - Features 6328@subsection PEERINFO - Features
6329 6329
6330@c %**end of header 6330
6331 6331
6332@itemize @bullet 6332@itemize @bullet
6333@item Persistent storage 6333@item Persistent storage
@@ -6347,7 +6347,7 @@ service providing this functionality.
6347@node DeveloperPeer Information 6347@node DeveloperPeer Information
6348@subsection DeveloperPeer Information 6348@subsection DeveloperPeer Information
6349 6349
6350@c %**end of header 6350
6351 6351
6352The PEERINFO subsystem stores these information in the form of HELLO 6352The PEERINFO subsystem stores these information in the form of HELLO
6353messages you can think of as business cards. 6353messages you can think of as business cards.
@@ -6381,7 +6381,7 @@ subsystem using these information to maintain connections to other peers.
6381@node Startup 6381@node Startup
6382@subsection Startup 6382@subsection Startup
6383 6383
6384@c %**end of header 6384
6385 6385
6386During startup the PEERINFO services loads persistent HELLOs from disk. 6386During startup the PEERINFO services loads persistent HELLOs from disk.
6387First PEERINFO parses the directory configured in the HOSTS value of the 6387First PEERINFO parses the directory configured in the HOSTS value of the
@@ -6397,7 +6397,7 @@ The use of these HELLOs can be prevented by setting the
6397@node Managing Information 6397@node Managing Information
6398@subsection Managing Information 6398@subsection Managing Information
6399 6399
6400@c %**end of header 6400
6401 6401
6402The PEERINFO services stores information about known PEERS and a single 6402The PEERINFO services stores information about known PEERS and a single
6403HELLO message for every peer. 6403HELLO message for every peer.
@@ -6419,7 +6419,7 @@ from the disk.
6419@node Obtaining Information 6419@node Obtaining Information
6420@subsection Obtaining Information 6420@subsection Obtaining Information
6421 6421
6422@c %**end of header 6422
6423 6423
6424When a client requests information from PEERINFO, PEERINFO performs a 6424When a client requests information from PEERINFO, PEERINFO performs a
6425lookup for the respective peer or all peers if desired and transmits this 6425lookup for the respective peer or all peers if desired and transmits this
@@ -6436,7 +6436,7 @@ merge for example) or a new peer was added.
6436@node The PEERINFO Client-Service Protocol 6436@node The PEERINFO Client-Service Protocol
6437@subsection The PEERINFO Client-Service Protocol 6437@subsection The PEERINFO Client-Service Protocol
6438 6438
6439@c %**end of header 6439
6440 6440
6441To connect and disconnect to and from the PEERINFO Service PEERINFO 6441To connect and disconnect to and from the PEERINFO Service PEERINFO
6442utilizes the util client/server infrastructure, so no special messages 6442utilizes the util client/server infrastructure, so no special messages
@@ -6468,7 +6468,7 @@ message, it can proceed with the next request if any is pending.
6468@node libgnunetpeerinfo 6468@node libgnunetpeerinfo
6469@subsection libgnunetpeerinfo 6469@subsection libgnunetpeerinfo
6470 6470
6471@c %**end of header 6471
6472 6472
6473The PEERINFO API consists mainly of three different functionalities: 6473The PEERINFO API consists mainly of three different functionalities:
6474 6474
@@ -6487,7 +6487,7 @@ The PEERINFO API consists mainly of three different functionalities:
6487@node Connecting to the PEERINFO Service 6487@node Connecting to the PEERINFO Service
6488@subsubsection Connecting to the PEERINFO Service 6488@subsubsection Connecting to the PEERINFO Service
6489 6489
6490@c %**end of header 6490
6491 6491
6492To connect to the PEERINFO service the function 6492To connect to the PEERINFO service the function
6493@code{GNUNET_PEERINFO_connect} is used, taking a configuration handle as 6493@code{GNUNET_PEERINFO_connect} is used, taking a configuration handle as
@@ -6498,7 +6498,7 @@ handle returned from the connect function has to be called.
6498@node Adding Information to the PEERINFO Service 6498@node Adding Information to the PEERINFO Service
6499@subsubsection Adding Information to the PEERINFO Service 6499@subsubsection Adding Information to the PEERINFO Service
6500 6500
6501@c %**end of header 6501
6502 6502
6503@code{GNUNET_PEERINFO_add_peer} adds a new peer to the PEERINFO subsystem 6503@code{GNUNET_PEERINFO_add_peer} adds a new peer to the PEERINFO subsystem
6504storage. This function takes the PEERINFO handle as an argument, the HELLO 6504storage. This function takes the PEERINFO handle as an argument, the HELLO
@@ -6513,7 +6513,7 @@ can tell PEERINFO to notify if new peer information are available.
6513@node Obtaining Information from the PEERINFO Service 6513@node Obtaining Information from the PEERINFO Service
6514@subsubsection Obtaining Information from the PEERINFO Service 6514@subsubsection Obtaining Information from the PEERINFO Service
6515 6515
6516@c %**end of header 6516
6517 6517
6518To iterate over information in PEERINFO you use 6518To iterate over information in PEERINFO you use
6519@code{GNUNET_PEERINFO_iterate}. 6519@code{GNUNET_PEERINFO_iterate}.
@@ -6538,7 +6538,7 @@ with @code{GNUNET_PEERINFO_notify_cancel}.
6538@node PEERSTORE Subsystem 6538@node PEERSTORE Subsystem
6539@section PEERSTORE Subsystem 6539@section PEERSTORE Subsystem
6540 6540
6541@c %**end of header 6541
6542 6542
6543GNUnet's PEERSTORE subsystem offers persistent per-peer storage for other 6543GNUnet's PEERSTORE subsystem offers persistent per-peer storage for other
6544GNUnet subsystems. GNUnet subsystems can use PEERSTORE to persistently 6544GNUnet subsystems. GNUnet subsystems can use PEERSTORE to persistently
@@ -6562,7 +6562,7 @@ Each data record stored with PEERSTORE contains the following fields:
6562@node Functionality 6562@node Functionality
6563@subsection Functionality 6563@subsection Functionality
6564 6564
6565@c %**end of header 6565
6566 6566
6567Subsystems can store any type of value under a (subsystem, peerid, key) 6567Subsystems can store any type of value under a (subsystem, peerid, key)
6568combination. A "replace" flag set during store operations forces the 6568combination. A "replace" flag set during store operations forces the
@@ -6588,7 +6588,7 @@ request to PEERSTORE.
6588@node Architecture 6588@node Architecture
6589@subsection Architecture 6589@subsection Architecture
6590 6590
6591@c %**end of header 6591
6592 6592
6593PEERSTORE implements the following components: 6593PEERSTORE implements the following components:
6594 6594
@@ -6604,7 +6604,7 @@ only an "sqlite" plugin is implemented.
6604@node libgnunetpeerstore 6604@node libgnunetpeerstore
6605@subsection libgnunetpeerstore 6605@subsection libgnunetpeerstore
6606 6606
6607@c %**end of header 6607
6608 6608
6609libgnunetpeerstore is the library containing the PEERSTORE API. Subsystems 6609libgnunetpeerstore is the library containing the PEERSTORE API. Subsystems
6610wishing to communicate with the PEERSTORE service use this API to open a 6610wishing to communicate with the PEERSTORE service use this API to open a
@@ -6652,7 +6652,7 @@ destroyed as well.
6652@node SET Subsystem 6652@node SET Subsystem
6653@section SET Subsystem 6653@section SET Subsystem
6654 6654
6655@c %**end of header 6655
6656 6656
6657The SET service implements efficient set operations between two peers 6657The SET service implements efficient set operations between two peers
6658over a mesh tunnel. 6658over a mesh tunnel.
@@ -6675,7 +6675,7 @@ The size of an element's data is limited to around 62 KB.
6675@node Local Sets 6675@node Local Sets
6676@subsection Local Sets 6676@subsection Local Sets
6677 6677
6678@c %**end of header 6678
6679 6679
6680Sets created by a local client can be modified and reused for multiple 6680Sets created by a local client can be modified and reused for multiple
6681operations. As each set operation requires potentially expensive special 6681operations. As each set operation requires potentially expensive special
@@ -6689,7 +6689,7 @@ type.
6689@node Set Modifications 6689@node Set Modifications
6690@subsection Set Modifications 6690@subsection Set Modifications
6691 6691
6692@c %**end of header 6692
6693 6693
6694Even when set operations are active, one can add to and remove elements 6694Even when set operations are active, one can add to and remove elements
6695from a set. 6695from a set.
@@ -6702,7 +6702,7 @@ attaching @emph{generation information} to each element and operation.
6702@node Set Operations 6702@node Set Operations
6703@subsection Set Operations 6703@subsection Set Operations
6704 6704
6705@c %**end of header 6705
6706 6706
6707Set operations can be started in two ways: Either by accepting an 6707Set operations can be started in two ways: Either by accepting an
6708operation request from a remote peer, or by requesting a set operation 6708operation request from a remote peer, or by requesting a set operation
@@ -6719,7 +6719,7 @@ request (providing a local set for the operation) or reject it.
6719@node Result Elements 6719@node Result Elements
6720@subsection Result Elements 6720@subsection Result Elements
6721 6721
6722@c %**end of header 6722
6723 6723
6724The SET service has three @emph{result modes} that determine how an 6724The SET service has three @emph{result modes} that determine how an
6725operation's result set is delivered to the client: 6725operation's result set is delivered to the client:
@@ -6744,7 +6744,7 @@ actually interested in the result of the set operation.
6744@node libgnunetset 6744@node libgnunetset
6745@subsection libgnunetset 6745@subsection libgnunetset
6746 6746
6747@c %**end of header 6747
6748 6748
6749@menu 6749@menu
6750* Sets:: 6750* Sets::
@@ -6757,7 +6757,7 @@ actually interested in the result of the set operation.
6757@node Sets 6757@node Sets
6758@subsubsection Sets 6758@subsubsection Sets
6759 6759
6760@c %**end of header 6760
6761 6761
6762New sets are created with @code{GNUNET_SET_create}. Both the local peer's 6762New sets are created with @code{GNUNET_SET_create}. Both the local peer's
6763configuration (as each set has its own client connection) and the 6763configuration (as each set has its own client connection) and the
@@ -6773,7 +6773,7 @@ Elements are added and removed with @code{GNUNET_SET_add_element} and
6773@node Listeners 6773@node Listeners
6774@subsubsection Listeners 6774@subsubsection Listeners
6775 6775
6776@c %**end of header 6776
6777 6777
6778Listeners are created with @code{GNUNET_SET_listen}. Each time time a 6778Listeners are created with @code{GNUNET_SET_listen}. Each time time a
6779remote peer suggests a set operation with an application id and operation 6779remote peer suggests a set operation with an application id and operation
@@ -6786,7 +6786,7 @@ until the client calls @code{GNUNET_SET_commit}
6786@node Operations 6786@node Operations
6787@subsubsection Operations 6787@subsubsection Operations
6788 6788
6789@c %**end of header 6789
6790 6790
6791Operations to be initiated by the local peer are created with 6791Operations to be initiated by the local peer are created with
6792@code{GNUNET_SET_prepare}. Note that the operation will not be started 6792@code{GNUNET_SET_prepare}. Note that the operation will not be started
@@ -6796,7 +6796,7 @@ until the client calls @code{GNUNET_SET_commit}
6796@node Supplying a Set 6796@node Supplying a Set
6797@subsubsection Supplying a Set 6797@subsubsection Supplying a Set
6798 6798
6799@c %**end of header 6799
6800 6800
6801To create symmetry between the two ways of starting a set operation 6801To create symmetry between the two ways of starting a set operation
6802(accepting and initiating it), the operation handles returned by 6802(accepting and initiating it), the operation handles returned by
@@ -6810,7 +6810,7 @@ operation.
6810@node The Result Callback 6810@node The Result Callback
6811@subsubsection The Result Callback 6811@subsubsection The Result Callback
6812 6812
6813@c %**end of header 6813
6814 6814
6815Clients must specify both a result mode and a result callback with 6815Clients must specify both a result mode and a result callback with
6816@code{GNUNET_SET_accept} and @code{GNUNET_SET_prepare}. The result 6816@code{GNUNET_SET_accept} and @code{GNUNET_SET_prepare}. The result
@@ -6824,7 +6824,7 @@ or if it is in the difference between the original set and the final set.
6824@node The SET Client-Service Protocol 6824@node The SET Client-Service Protocol
6825@subsection The SET Client-Service Protocol 6825@subsection The SET Client-Service Protocol
6826 6826
6827@c %**end of header 6827
6828 6828
6829@menu 6829@menu
6830* Creating Sets:: 6830* Creating Sets::
@@ -6838,7 +6838,7 @@ or if it is in the difference between the original set and the final set.
6838@node Creating Sets 6838@node Creating Sets
6839@subsubsection Creating Sets 6839@subsubsection Creating Sets
6840 6840
6841@c %**end of header 6841
6842 6842
6843For each set of a client, there exists a client connection to the service. 6843For each set of a client, there exists a client connection to the service.
6844Sets are created by sending the @code{GNUNET_SERVICE_SET_CREATE} message 6844Sets are created by sending the @code{GNUNET_SERVICE_SET_CREATE} message
@@ -6849,7 +6849,7 @@ the client.
6849@node Listeners2 6849@node Listeners2
6850@subsubsection Listeners2 6850@subsubsection Listeners2
6851 6851
6852@c %**end of header 6852
6853 6853
6854Each listener also requires a seperate client connection. By sending the 6854Each listener also requires a seperate client connection. By sending the
6855@code{GNUNET_SERVICE_SET_LISTEN} message, the client notifies the service 6855@code{GNUNET_SERVICE_SET_LISTEN} message, the client notifies the service
@@ -6863,7 +6863,7 @@ is supplied for the set operation.
6863@node Initiating Operations 6863@node Initiating Operations
6864@subsubsection Initiating Operations 6864@subsubsection Initiating Operations
6865 6865
6866@c %**end of header 6866
6867 6867
6868Operations with remote peers are initiated by sending a 6868Operations with remote peers are initiated by sending a
6869@code{GNUNET_SERVICE_SET_EVALUATE} message to the service. The@ client 6869@code{GNUNET_SERVICE_SET_EVALUATE} message to the service. The@ client
@@ -6872,7 +6872,7 @@ connection that this message is sent by determines the set to use.
6872@node Modifying Sets 6872@node Modifying Sets
6873@subsubsection Modifying Sets 6873@subsubsection Modifying Sets
6874 6874
6875@c %**end of header 6875
6876 6876
6877Sets are modified with the @code{GNUNET_SERVICE_SET_ADD} and 6877Sets are modified with the @code{GNUNET_SERVICE_SET_ADD} and
6878@code{GNUNET_SERVICE_SET_REMOVE} messages. 6878@code{GNUNET_SERVICE_SET_REMOVE} messages.
@@ -6885,7 +6885,7 @@ Sets are modified with the @code{GNUNET_SERVICE_SET_ADD} and
6885 6885
6886@node Results and Operation Status 6886@node Results and Operation Status
6887@subsubsection Results and Operation Status 6887@subsubsection Results and Operation Status
6888@c %**end of header 6888
6889 6889
6890The service notifies the client of result elements and success/failure of 6890The service notifies the client of result elements and success/failure of
6891a set operation with the @code{GNUNET_SERVICE_SET_RESULT} message. 6891a set operation with the @code{GNUNET_SERVICE_SET_RESULT} message.
@@ -6893,7 +6893,7 @@ a set operation with the @code{GNUNET_SERVICE_SET_RESULT} message.
6893@node Iterating Sets 6893@node Iterating Sets
6894@subsubsection Iterating Sets 6894@subsubsection Iterating Sets
6895 6895
6896@c %**end of header 6896
6897 6897
6898All elements of a set can be requested by sending 6898All elements of a set can be requested by sending
6899@code{GNUNET_SERVICE_SET_ITER_REQUEST}. The server responds with 6899@code{GNUNET_SERVICE_SET_ITER_REQUEST}. The server responds with
@@ -6906,7 +6906,7 @@ iteration may be active for a set at any given time.
6906@node The SET Intersection Peer-to-Peer Protocol 6906@node The SET Intersection Peer-to-Peer Protocol
6907@subsection The SET Intersection Peer-to-Peer Protocol 6907@subsection The SET Intersection Peer-to-Peer Protocol
6908 6908
6909@c %**end of header 6909
6910 6910
6911The intersection protocol operates over CADET and starts with a 6911The intersection protocol operates over CADET and starts with a
6912GNUNET_MESSAGE_TYPE_SET_P2P_OPERATION_REQUEST being sent by the peer 6912GNUNET_MESSAGE_TYPE_SET_P2P_OPERATION_REQUEST being sent by the peer
@@ -6938,7 +6938,7 @@ just the initial handshake.
6938@node The Bloom filter exchange 6938@node The Bloom filter exchange
6939@subsubsection The Bloom filter exchange 6939@subsubsection The Bloom filter exchange
6940 6940
6941@c %**end of header 6941
6942 6942
6943In this phase, each peer transmits a Bloom filter over the remaining 6943In this phase, each peer transmits a Bloom filter over the remaining
6944keys of the local set to the other peer using a 6944keys of the local set to the other peer using a
@@ -6965,7 +6965,7 @@ this time as the sender.
6965@node Salt 6965@node Salt
6966@subsubsection Salt 6966@subsubsection Salt
6967 6967
6968@c %**end of header 6968
6969 6969
6970Bloomfilter operations are probabilistic: With some non-zero probability 6970Bloomfilter operations are probabilistic: With some non-zero probability
6971the test may incorrectly say an element is in the set, even though it is 6971the test may incorrectly say an element is in the set, even though it is
@@ -6985,7 +6985,7 @@ sets of the same size, and where the XOR over all keys computes the same
6985@node The SET Union Peer-to-Peer Protocol 6985@node The SET Union Peer-to-Peer Protocol
6986@subsection The SET Union Peer-to-Peer Protocol 6986@subsection The SET Union Peer-to-Peer Protocol
6987 6987
6988@c %**end of header 6988
6989 6989
6990The SET union protocol is based on Eppstein's efficient set reconciliation 6990The SET union protocol is based on Eppstein's efficient set reconciliation
6991without prior context. You should read this paper first if you want to 6991without prior context. You should read this paper first if you want to
@@ -7028,7 +7028,7 @@ succeeding if they failed due to collisions before.
7028@node STATISTICS Subsystem 7028@node STATISTICS Subsystem
7029@section STATISTICS Subsystem 7029@section STATISTICS Subsystem
7030 7030
7031@c %**end of header 7031
7032 7032
7033In GNUnet, the STATISTICS subsystem offers a central place for all 7033In GNUnet, the STATISTICS subsystem offers a central place for all
7034subsystems to publish unsigned 64-bit integer run-time statistics. 7034subsystems to publish unsigned 64-bit integer run-time statistics.
@@ -7080,7 +7080,7 @@ to STATISTICS during shutdown.
7080@node libgnunetstatistics 7080@node libgnunetstatistics
7081@subsection libgnunetstatistics 7081@subsection libgnunetstatistics
7082 7082
7083@c %**end of header 7083
7084 7084
7085@strong{libgnunetstatistics} is the library containing the API for the 7085@strong{libgnunetstatistics} is the library containing the API for the
7086STATISTICS subsystem. Any process requiring to use STATISTICS should use 7086STATISTICS subsystem. Any process requiring to use STATISTICS should use
@@ -7111,7 +7111,7 @@ functions from the API can be used.
7111@node Statistics retrieval 7111@node Statistics retrieval
7112@subsubsection Statistics retrieval 7112@subsubsection Statistics retrieval
7113 7113
7114@c %**end of header 7114
7115 7115
7116Once a connection to the statistics service is obtained, information 7116Once a connection to the statistics service is obtained, information
7117about any other system which uses statistics can be retrieved with the 7117about any other system which uses statistics can be retrieved with the
@@ -7134,7 +7134,7 @@ when we want to shutdown and cleanup everything.
7134@node Setting statistics and updating them 7134@node Setting statistics and updating them
7135@subsubsection Setting statistics and updating them 7135@subsubsection Setting statistics and updating them
7136 7136
7137@c %**end of header 7137
7138 7138
7139So far we have seen how to retrieve statistics, here we will learn how we 7139So far we have seen how to retrieve statistics, here we will learn how we
7140can set statistics and update them so that other subsystems can retrieve 7140can set statistics and update them so that other subsystems can retrieve
@@ -7164,7 +7164,7 @@ to worry about sending requests too quickly.
7164@node Watches 7164@node Watches
7165@subsubsection Watches 7165@subsubsection Watches
7166 7166
7167@c %**end of header 7167
7168 7168
7169As interesting feature of STATISTICS lies in serving notifications 7169As interesting feature of STATISTICS lies in serving notifications
7170whenever a statistic of our interest is modified. 7170whenever a statistic of our interest is modified.
@@ -7184,7 +7184,7 @@ parameters that are used for registering the watch.
7184 7184
7185@node The STATISTICS Client-Service Protocol 7185@node The STATISTICS Client-Service Protocol
7186@subsection The STATISTICS Client-Service Protocol 7186@subsection The STATISTICS Client-Service Protocol
7187@c %**end of header 7187
7188 7188
7189 7189
7190@menu 7190@menu
@@ -7196,7 +7196,7 @@ parameters that are used for registering the watch.
7196@node Statistics retrieval2 7196@node Statistics retrieval2
7197@subsubsection Statistics retrieval2 7197@subsubsection Statistics retrieval2
7198 7198
7199@c %**end of header 7199
7200 7200
7201To retrieve statistics, the client transmits a message of type 7201To retrieve statistics, the client transmits a message of type
7202@code{GNUNET_MESSAGE_TYPE_STATISTICS_GET} containing the given subsystem 7202@code{GNUNET_MESSAGE_TYPE_STATISTICS_GET} containing the given subsystem
@@ -7210,7 +7210,7 @@ type @code{GNUNET_MESSAGE_TYPE_STATISTICS_END}.
7210@node Setting and updating statistics 7210@node Setting and updating statistics
7211@subsubsection Setting and updating statistics 7211@subsubsection Setting and updating statistics
7212 7212
7213@c %**end of header 7213
7214 7214
7215The subsystem name, parameter name, its value and the persistence flag are 7215The subsystem name, parameter name, its value and the persistence flag are
7216communicated to the service through the message 7216communicated to the service through the message
@@ -7233,7 +7233,7 @@ the message should be treated as an update value.
7233@node Watching for updates 7233@node Watching for updates
7234@subsubsection Watching for updates 7234@subsubsection Watching for updates
7235 7235
7236@c %**end of header 7236
7237 7237
7238The function registers the watch at the service by sending a message of 7238The function registers the watch at the service by sending a message of
7239type @code{GNUNET_MESSAGE_TYPE_STATISTICS_WATCH}. The service then sends 7239type @code{GNUNET_MESSAGE_TYPE_STATISTICS_WATCH}. The service then sends
@@ -7246,7 +7246,7 @@ parameter's value is changed.
7246@node Distributed Hash Table (DHT) 7246@node Distributed Hash Table (DHT)
7247@section Distributed Hash Table (DHT) 7247@section Distributed Hash Table (DHT)
7248 7248
7249@c %**end of header 7249
7250 7250
7251GNUnet includes a generic distributed hash table that can be used by 7251GNUnet includes a generic distributed hash table that can be used by
7252developers building P2P applications in the framework. 7252developers building P2P applications in the framework.
@@ -7292,7 +7292,7 @@ loss of performance or quality of service is expected in this case).
7292@node Block library and plugins 7292@node Block library and plugins
7293@subsection Block library and plugins 7293@subsection Block library and plugins
7294 7294
7295@c %**end of header 7295
7296 7296
7297@menu 7297@menu
7298* What is a Block?:: 7298* What is a Block?::
@@ -7305,7 +7305,7 @@ loss of performance or quality of service is expected in this case).
7305@node What is a Block? 7305@node What is a Block?
7306@subsubsection What is a Block? 7306@subsubsection What is a Block?
7307 7307
7308@c %**end of header 7308
7309 7309
7310Blocks are small (< 63k) pieces of data stored under a key (struct 7310Blocks are small (< 63k) pieces of data stored under a key (struct
7311GNUNET_HashCode). Blocks have a type (enum GNUNET_BlockType) which defines 7311GNUNET_HashCode). Blocks have a type (enum GNUNET_BlockType) which defines
@@ -7322,7 +7322,7 @@ available for any type of block.
7322@node The API of libgnunetblock 7322@node The API of libgnunetblock
7323@subsubsection The API of libgnunetblock 7323@subsubsection The API of libgnunetblock
7324 7324
7325@c %**end of header 7325
7326 7326
7327The block library requires for each (family of) block type(s) a block 7327The block library requires for each (family of) block type(s) a block
7328plugin (implementing @file{gnunet_block_plugin.h}) that provides basic 7328plugin (implementing @file{gnunet_block_plugin.h}) that provides basic
@@ -7354,7 +7354,7 @@ If a plugin fails to do this, responses may loop in the network.
7354 7354
7355@node Queries 7355@node Queries
7356@subsubsection Queries 7356@subsubsection Queries
7357@c %**end of header 7357
7358 7358
7359The query format for any block in GNUnet consists of four main components. 7359The query format for any block in GNUnet consists of four main components.
7360First, the type of the desired block must be specified. Second, the query 7360First, the type of the desired block must be specified. Second, the query
@@ -7382,7 +7382,7 @@ Depending on the results from the plugin, the DHT will then discard the
7382@node Sample Code 7382@node Sample Code
7383@subsubsection Sample Code 7383@subsubsection Sample Code
7384 7384
7385@c %**end of header 7385
7386 7386
7387The source code in @strong{plugin_block_test.c} is a good starting point 7387The source code in @strong{plugin_block_test.c} is a good starting point
7388for new block plugins --- it does the minimal work by implementing a 7388for new block plugins --- it does the minimal work by implementing a
@@ -7393,7 +7393,7 @@ block plugin.
7393@node Conclusion2 7393@node Conclusion2
7394@subsubsection Conclusion2 7394@subsubsection Conclusion2
7395 7395
7396@c %**end of header 7396
7397 7397
7398In conclusion, GNUnet subsystems that want to use the DHT need to define a 7398In conclusion, GNUnet subsystems that want to use the DHT need to define a
7399block format and write a plugin to match queries and replies. For testing, 7399block format and write a plugin to match queries and replies. For testing,
@@ -7407,7 +7407,7 @@ of error checking that results from this primitive implementation.
7407@node libgnunetdht 7407@node libgnunetdht
7408@subsection libgnunetdht 7408@subsection libgnunetdht
7409 7409
7410@c %**end of header 7410
7411 7411
7412The DHT API itself is pretty simple and offers the usual GET and PUT 7412The DHT API itself is pretty simple and offers the usual GET and PUT
7413functions that work as expected. The specified block type refers to the 7413functions that work as expected. The specified block type refers to the
@@ -7425,7 +7425,7 @@ data stored in the network.
7425@node GET 7425@node GET
7426@subsubsection GET 7426@subsubsection GET
7427 7427
7428@c %**end of header 7428
7429 7429
7430When using GET, the main consideration for developers (other than the 7430When using GET, the main consideration for developers (other than the
7431block library) should be that after issuing a GET, the DHT will 7431block library) should be that after issuing a GET, the DHT will
@@ -7453,7 +7453,7 @@ bandwidth consumption.
7453@node PUT 7453@node PUT
7454@subsubsection PUT 7454@subsubsection PUT
7455 7455
7456@c %**end of header 7456
7457 7457
7458@c inconsistent use of ``must'' above it's written ``MUST'' 7458@c inconsistent use of ``must'' above it's written ``MUST''
7459In contrast to GET operations, developers @strong{must} manually re-run 7459In contrast to GET operations, developers @strong{must} manually re-run
@@ -7475,7 +7475,7 @@ DHT PUT operations should be repeated at least every 1-2 hours.
7475@node MONITOR 7475@node MONITOR
7476@subsubsection MONITOR 7476@subsubsection MONITOR
7477 7477
7478@c %**end of header 7478
7479 7479
7480The DHT API also allows applications to monitor messages crossing the 7480The DHT API also allows applications to monitor messages crossing the
7481local DHT service. 7481local DHT service.
@@ -7498,7 +7498,7 @@ number of workers will process the distributed workload.
7498@node DHT Routing Options 7498@node DHT Routing Options
7499@subsubsection DHT Routing Options 7499@subsubsection DHT Routing Options
7500 7500
7501@c %**end of header 7501
7502 7502
7503There are two important options for GET and PUT requests: 7503There are two important options for GET and PUT requests:
7504 7504
@@ -7528,7 +7528,7 @@ in the future offer performance improvements for clique topologies.
7528@node The DHT Client-Service Protocol 7528@node The DHT Client-Service Protocol
7529@subsection The DHT Client-Service Protocol 7529@subsection The DHT Client-Service Protocol
7530 7530
7531@c %**end of header 7531
7532 7532
7533@menu 7533@menu
7534* PUTting data into the DHT:: 7534* PUTting data into the DHT::
@@ -7539,7 +7539,7 @@ in the future offer performance improvements for clique topologies.
7539@node PUTting data into the DHT 7539@node PUTting data into the DHT
7540@subsubsection PUTting data into the DHT 7540@subsubsection PUTting data into the DHT
7541 7541
7542@c %**end of header 7542
7543 7543
7544To store (PUT) data into the DHT, the client sends a 7544To store (PUT) data into the DHT, the client sends a
7545@code{struct GNUNET_DHT_ClientPutMessage} to the service. 7545@code{struct GNUNET_DHT_ClientPutMessage} to the service.
@@ -7560,7 +7560,7 @@ in the P2P interaction.
7560@node GETting data from the DHT 7560@node GETting data from the DHT
7561@subsubsection GETting data from the DHT 7561@subsubsection GETting data from the DHT
7562 7562
7563@c %**end of header 7563
7564 7564
7565To retrieve (GET) data from the DHT, the client sends a 7565To retrieve (GET) data from the DHT, the client sends a
7566@code{struct GNUNET_DHT_ClientGetMessage} to the service. The message 7566@code{struct GNUNET_DHT_ClientGetMessage} to the service. The message
@@ -7599,7 +7599,7 @@ service --- and to stop them individually.
7599@node Monitoring the DHT 7599@node Monitoring the DHT
7600@subsubsection Monitoring the DHT 7600@subsubsection Monitoring the DHT
7601 7601
7602@c %**end of header 7602
7603 7603
7604To begin monitoring, the client sends a 7604To begin monitoring, the client sends a
7605@code{struct GNUNET_DHT_MonitorStartStop} message to the DHT service. 7605@code{struct GNUNET_DHT_MonitorStartStop} message to the DHT service.
@@ -7614,7 +7614,7 @@ these messages contains all of the information about the event.
7614 7614
7615@node The DHT Peer-to-Peer Protocol 7615@node The DHT Peer-to-Peer Protocol
7616@subsection The DHT Peer-to-Peer Protocol 7616@subsection The DHT Peer-to-Peer Protocol
7617@c %**end of header 7617
7618 7618
7619 7619
7620@menu 7620@menu
@@ -7626,7 +7626,7 @@ these messages contains all of the information about the event.
7626@node Routing GETs or PUTs 7626@node Routing GETs or PUTs
7627@subsubsection Routing GETs or PUTs 7627@subsubsection Routing GETs or PUTs
7628 7628
7629@c %**end of header 7629
7630 7630
7631When routing GETs or PUTs, the DHT service selects a suitable subset of 7631When routing GETs or PUTs, the DHT service selects a suitable subset of
7632neighbours for forwarding. The exact number of neighbours can be zero or 7632neighbours for forwarding. The exact number of neighbours can be zero or
@@ -7641,7 +7641,7 @@ traversed; those peers are also excluded from the selection.
7641@node PUTting data into the DHT2 7641@node PUTting data into the DHT2
7642@subsubsection PUTting data into the DHT2 7642@subsubsection PUTting data into the DHT2
7643 7643
7644@c %**end of header 7644
7645 7645
7646To PUT data into the DHT, the service sends a @code{struct PeerPutMessage} 7646To PUT data into the DHT, the service sends a @code{struct PeerPutMessage}
7647of type @code{GNUNET_MESSAGE_TYPE_DHT_P2P_PUT} to the respective 7647of type @code{GNUNET_MESSAGE_TYPE_DHT_P2P_PUT} to the respective
@@ -7663,7 +7663,7 @@ its own identity (this is done to reduce bandwidth).
7663@node GETting data from the DHT2 7663@node GETting data from the DHT2
7664@subsubsection GETting data from the DHT2 7664@subsubsection GETting data from the DHT2
7665 7665
7666@c %**end of header 7666
7667 7667
7668A peer can search the DHT by sending @code{struct PeerGetMessage}s of type 7668A peer can search the DHT by sending @code{struct PeerGetMessage}s of type
7669@code{GNUNET_MESSAGE_TYPE_DHT_P2P_GET} to other peers. In addition to the 7669@code{GNUNET_MESSAGE_TYPE_DHT_P2P_GET} to other peers. In addition to the
@@ -7702,7 +7702,7 @@ The DHT service may also cache forwarded results locally if the
7702@node GNU Name System (GNS) 7702@node GNU Name System (GNS)
7703@section GNU Name System (GNS) 7703@section GNU Name System (GNS)
7704 7704
7705@c %**end of header 7705
7706 7706
7707The GNU Name System (GNS) is a decentralized database that enables users 7707The GNU Name System (GNS) is a decentralized database that enables users
7708to securely resolve names to values. 7708to securely resolve names to values.
@@ -7757,7 +7757,7 @@ record types.
7757@node libgnunetgns 7757@node libgnunetgns
7758@subsection libgnunetgns 7758@subsection libgnunetgns
7759 7759
7760@c %**end of header 7760
7761 7761
7762The GNS API itself is extremely simple. Clients first connect to the 7762The GNS API itself is extremely simple. Clients first connect to the
7763GNS service using @code{GNUNET_GNS_connect}. 7763GNS service using @code{GNUNET_GNS_connect}.
@@ -7775,7 +7775,7 @@ Once finished, clients disconnect using @code{GNUNET_GNS_disconnect}.
7775@node Looking up records 7775@node Looking up records
7776@subsubsection Looking up records 7776@subsubsection Looking up records
7777 7777
7778@c %**end of header 7778
7779 7779
7780@code{GNUNET_GNS_lookup} takes a number of arguments: 7780@code{GNUNET_GNS_lookup} takes a number of arguments:
7781 7781
@@ -7817,7 +7817,7 @@ must no longer be canceled.
7817@node Accessing the records 7817@node Accessing the records
7818@subsubsection Accessing the records 7818@subsubsection Accessing the records
7819 7819
7820@c %**end of header 7820
7821 7821
7822The @code{libgnunetgnsrecord} library provides an API to manipulate the 7822The @code{libgnunetgnsrecord} library provides an API to manipulate the
7823GNS record array that is given to proc. In particular, it offers 7823GNS record array that is given to proc. In particular, it offers
@@ -7831,7 +7831,7 @@ functions for parsing (and serializing) common types of DNS records.
7831@node Creating records 7831@node Creating records
7832@subsubsection Creating records 7832@subsubsection Creating records
7833 7833
7834@c %**end of header 7834
7835 7835
7836Creating GNS records is typically done by building the respective record 7836Creating GNS records is typically done by building the respective record
7837information (possibly with the help of @code{libgnunetgnsrecord} and 7837information (possibly with the help of @code{libgnunetgnsrecord} and
@@ -7842,7 +7842,7 @@ operation.
7842@node Future work 7842@node Future work
7843@subsubsection Future work 7843@subsubsection Future work
7844 7844
7845@c %**end of header 7845
7846 7846
7847In the future, we want to expand @code{libgnunetgns} to allow 7847In the future, we want to expand @code{libgnunetgns} to allow
7848applications to observe shortening operations performed during GNS 7848applications to observe shortening operations performed during GNS
@@ -7852,7 +7852,7 @@ this happens.
7852@node libgnunetgnsrecord 7852@node libgnunetgnsrecord
7853@subsection libgnunetgnsrecord 7853@subsection libgnunetgnsrecord
7854 7854
7855@c %**end of header 7855
7856 7856
7857The @code{libgnunetgnsrecord} library is used to manipulate GNS 7857The @code{libgnunetgnsrecord} library is used to manipulate GNS
7858records (in plaintext or in their encrypted format). 7858records (in plaintext or in their encrypted format).
@@ -7878,7 +7878,7 @@ standard GNS record types.
7878@node Value handling 7878@node Value handling
7879@subsubsection Value handling 7879@subsubsection Value handling
7880 7880
7881@c %**end of header 7881
7882 7882
7883@code{GNUNET_GNSRECORD_value_to_string} can be used to convert 7883@code{GNUNET_GNSRECORD_value_to_string} can be used to convert
7884the (binary) representation of a GNS record value to a human readable, 7884the (binary) representation of a GNS record value to a human readable,
@@ -7893,7 +7893,7 @@ a GNS record value.
7893@node Type handling 7893@node Type handling
7894@subsubsection Type handling 7894@subsubsection Type handling
7895 7895
7896@c %**end of header 7896
7897 7897
7898@code{GNUNET_GNSRECORD_typename_to_number} can be used to obtain the 7898@code{GNUNET_GNSRECORD_typename_to_number} can be used to obtain the
7899numeric value associated with a given typename. For example, given the 7899numeric value associated with a given typename. For example, given the
@@ -7911,7 +7911,7 @@ typename "A".
7911@node GNS plugins 7911@node GNS plugins
7912@subsection GNS plugins 7912@subsection GNS plugins
7913 7913
7914@c %**end of header 7914
7915 7915
7916Adding a new GNS record type typically involves writing (or extending) a 7916Adding a new GNS record type typically involves writing (or extending) a
7917GNSRECORD plugin. The plugin needs to implement the 7917GNSRECORD plugin. The plugin needs to implement the
@@ -7937,7 +7937,7 @@ typenames and numbers documented in the previous subsection.
7937 7937
7938@node The GNS Client-Service Protocol 7938@node The GNS Client-Service Protocol
7939@subsection The GNS Client-Service Protocol 7939@subsection The GNS Client-Service Protocol
7940@c %**end of header 7940
7941 7941
7942The GNS client-service protocol consists of two simple messages, the 7942The GNS client-service protocol consists of two simple messages, the
7943@code{LOOKUP} message and the @code{LOOKUP_RESULT}. Each @code{LOOKUP} 7943@code{LOOKUP} message and the @code{LOOKUP_RESULT}. Each @code{LOOKUP}
@@ -7957,7 +7957,7 @@ They can thus be deserialized using
7957@node Hijacking the DNS-Traffic using gnunet-service-dns 7957@node Hijacking the DNS-Traffic using gnunet-service-dns
7958@subsection Hijacking the DNS-Traffic using gnunet-service-dns 7958@subsection Hijacking the DNS-Traffic using gnunet-service-dns
7959 7959
7960@c %**end of header 7960
7961 7961
7962This section documents how the gnunet-service-dns (and the 7962This section documents how the gnunet-service-dns (and the
7963gnunet-helper-dns) intercepts DNS queries from the local system. 7963gnunet-helper-dns) intercepts DNS queries from the local system.
@@ -7994,7 +7994,7 @@ interface with the original nameserver as source address.
7994@node Network Setup Details 7994@node Network Setup Details
7995@subsubsection Network Setup Details 7995@subsubsection Network Setup Details
7996 7996
7997@c %**end of header 7997
7998 7998
7999The DNS interceptor adds the following rules to the Linux kernel: 7999The DNS interceptor adds the following rules to the Linux kernel:
8000@example 8000@example
@@ -8015,7 +8015,7 @@ arbitrarily). The third line adds a routing policy based on this mark
8015@node Serving DNS lookups via GNS on W32 8015@node Serving DNS lookups via GNS on W32
8016@subsection Serving DNS lookups via GNS on W32 8016@subsection Serving DNS lookups via GNS on W32
8017 8017
8018@c %**end of header 8018
8019 8019
8020This section documents how the libw32nsp (and 8020This section documents how the libw32nsp (and
8021gnunet-gns-helper-service-w32) do DNS resolutions of DNS queries on the 8021gnunet-gns-helper-service-w32) do DNS resolutions of DNS queries on the
@@ -8085,7 +8085,7 @@ This includes some of well known utilities, like "ping" and "nslookup".
8085@node Importing DNS Zones into GNS 8085@node Importing DNS Zones into GNS
8086@subsection Importing DNS Zones into GNS 8086@subsection Importing DNS Zones into GNS
8087 8087
8088@c %**end of header 8088
8089 8089
8090This section discusses the challenges and problems faced when writing the 8090This section discusses the challenges and problems faced when writing the
8091Ascension tool. It also takes a look at possible improvements in the future. 8091Ascension tool. It also takes a look at possible improvements in the future.
@@ -8242,7 +8242,7 @@ that uses the C API would be cleaner and better.
8242@node GNS Namecache 8242@node GNS Namecache
8243@section GNS Namecache 8243@section GNS Namecache
8244 8244
8245@c %**end of header 8245
8246 8246
8247The NAMECACHE subsystem is responsible for caching (encrypted) resolution 8247The NAMECACHE subsystem is responsible for caching (encrypted) resolution
8248results of the GNU Name System (GNS). GNS makes zone information available 8248results of the GNU Name System (GNS). GNS makes zone information available
@@ -8281,7 +8281,7 @@ plugin API.
8281@node libgnunetnamecache 8281@node libgnunetnamecache
8282@subsection libgnunetnamecache 8282@subsection libgnunetnamecache
8283 8283
8284@c %**end of header 8284
8285 8285
8286The NAMECACHE API consists of five simple functions. First, there is 8286The NAMECACHE API consists of five simple functions. First, there is
8287@code{GNUNET_NAMECACHE_connect} to connect to the NAMECACHE service. 8287@code{GNUNET_NAMECACHE_connect} to connect to the NAMECACHE service.
@@ -8304,7 +8304,7 @@ The maximum size of a block that can be stored in the NAMECACHE is
8304@node The NAMECACHE Client-Service Protocol 8304@node The NAMECACHE Client-Service Protocol
8305@subsection The NAMECACHE Client-Service Protocol 8305@subsection The NAMECACHE Client-Service Protocol
8306 8306
8307@c %**end of header 8307
8308 8308
8309All messages in the NAMECACHE IPC protocol start with the 8309All messages in the NAMECACHE IPC protocol start with the
8310@code{struct GNUNET_NAMECACHE_Header} which adds a request 8310@code{struct GNUNET_NAMECACHE_Header} which adds a request
@@ -8322,7 +8322,7 @@ out-of-order.
8322@node Lookup 8322@node Lookup
8323@subsubsection Lookup 8323@subsubsection Lookup
8324 8324
8325@c %**end of header 8325
8326 8326
8327The @code{struct LookupBlockMessage} is used to lookup a block stored in 8327The @code{struct LookupBlockMessage} is used to lookup a block stored in
8328the cache. 8328the cache.
@@ -8336,7 +8336,7 @@ of the block.
8336@node Store 8336@node Store
8337@subsubsection Store 8337@subsubsection Store
8338 8338
8339@c %**end of header 8339
8340 8340
8341The @code{struct BlockCacheMessage} is used to cache a block in the 8341The @code{struct BlockCacheMessage} is used to cache a block in the
8342NAMECACHE. 8342NAMECACHE.
@@ -8348,7 +8348,7 @@ message as well.
8348 8348
8349@node The NAMECACHE Plugin API 8349@node The NAMECACHE Plugin API
8350@subsection The NAMECACHE Plugin API 8350@subsection The NAMECACHE Plugin API
8351@c %**end of header 8351
8352 8352
8353The NAMECACHE plugin API consists of two functions, @code{cache_block} to 8353The NAMECACHE plugin API consists of two functions, @code{cache_block} to
8354store a block in the database, and @code{lookup_block} to lookup a block 8354store a block in the database, and @code{lookup_block} to lookup a block
@@ -8363,7 +8363,7 @@ in the database.
8363@node Lookup2 8363@node Lookup2
8364@subsubsection Lookup2 8364@subsubsection Lookup2
8365 8365
8366@c %**end of header 8366
8367 8367
8368The @code{lookup_block} function is expected to return at most one block 8368The @code{lookup_block} function is expected to return at most one block
8369to the iterator, and return @code{GNUNET_NO} if there were no non-expired 8369to the iterator, and return @code{GNUNET_NO} if there were no non-expired
@@ -8374,7 +8374,7 @@ supposed to return the result with the largest expiration time.
8374@node Store2 8374@node Store2
8375@subsubsection Store2 8375@subsubsection Store2
8376 8376
8377@c %**end of header 8377
8378 8378
8379The @code{cache_block} function is expected to try to store the block in 8379The @code{cache_block} function is expected to try to store the block in
8380the database, and return @code{GNUNET_SYSERR} if this was not possible 8380the database, and return @code{GNUNET_SYSERR} if this was not possible
@@ -8391,7 +8391,7 @@ block is more recent during the store operation.
8391@cindex REVOCATION Subsystem 8391@cindex REVOCATION Subsystem
8392@node REVOCATION Subsystem 8392@node REVOCATION Subsystem
8393@section REVOCATION Subsystem 8393@section REVOCATION Subsystem
8394@c %**end of header 8394
8395 8395
8396The REVOCATION subsystem is responsible for key revocation of Egos. 8396The REVOCATION subsystem is responsible for key revocation of Egos.
8397If a user learns that theis private key has been compromised or has lost 8397If a user learns that theis private key has been compromised or has lost
@@ -8411,7 +8411,7 @@ propagate revocation messages.
8411@node Dissemination 8411@node Dissemination
8412@subsection Dissemination 8412@subsection Dissemination
8413 8413
8414@c %**end of header 8414
8415 8415
8416When a revocation is performed, the revocation is first of all 8416When a revocation is performed, the revocation is first of all
8417disseminated by flooding the overlay network. 8417disseminated by flooding the overlay network.
@@ -8435,7 +8435,7 @@ The SET service is used to perform this operation efficiently.
8435@node Revocation Message Design Requirements 8435@node Revocation Message Design Requirements
8436@subsection Revocation Message Design Requirements 8436@subsection Revocation Message Design Requirements
8437 8437
8438@c %**end of header 8438
8439 8439
8440However, flooding is also quite costly, creating O(|E|) messages on a 8440However, flooding is also quite costly, creating O(|E|) messages on a
8441network with |E| edges. 8441network with |E| edges.
@@ -8457,7 +8457,7 @@ revocation message ahead of time and store it in a secure location.
8457@node libgnunetrevocation 8457@node libgnunetrevocation
8458@subsection libgnunetrevocation 8458@subsection libgnunetrevocation
8459 8459
8460@c %**end of header 8460
8461 8461
8462The REVOCATION API consists of two parts, to query and to issue 8462The REVOCATION API consists of two parts, to query and to issue
8463revocations. 8463revocations.
@@ -8472,7 +8472,7 @@ revocations.
8472@node Querying for revoked keys 8472@node Querying for revoked keys
8473@subsubsection Querying for revoked keys 8473@subsubsection Querying for revoked keys
8474 8474
8475@c %**end of header 8475
8476 8476
8477@code{GNUNET_REVOCATION_query} is used to check if a given ECDSA public 8477@code{GNUNET_REVOCATION_query} is used to check if a given ECDSA public
8478key has been revoked. 8478key has been revoked.
@@ -8483,7 +8483,7 @@ the return value.
8483@node Preparing revocations 8483@node Preparing revocations
8484@subsubsection Preparing revocations 8484@subsubsection Preparing revocations
8485 8485
8486@c %**end of header 8486
8487 8487
8488It is often desirable to create a revocation record ahead-of-time and 8488It is often desirable to create a revocation record ahead-of-time and
8489store it in an off-line location to be used later in an emergency. 8489store it in an off-line location to be used later in an emergency.
@@ -8551,7 +8551,7 @@ successfully.
8551@node The REVOCATION Peer-to-Peer Protocol 8551@node The REVOCATION Peer-to-Peer Protocol
8552@subsection The REVOCATION Peer-to-Peer Protocol 8552@subsection The REVOCATION Peer-to-Peer Protocol
8553 8553
8554@c %**end of header 8554
8555 8555
8556Revocation uses two disjoint ways to spread revocation information among 8556Revocation uses two disjoint ways to spread revocation information among
8557peers. 8557peers.
@@ -8586,7 +8586,7 @@ larger hashed peer identity.
8586@node File-sharing (FS) Subsystem 8586@node File-sharing (FS) Subsystem
8587@section File-sharing (FS) Subsystem 8587@section File-sharing (FS) Subsystem
8588 8588
8589@c %**end of header 8589
8590 8590
8591This chapter describes the details of how the file-sharing service works. 8591This chapter describes the details of how the file-sharing service works.
8592As with all services, it is split into an API (libgnunetfs), the service 8592As with all services, it is split into an API (libgnunetfs), the service
@@ -8624,7 +8624,7 @@ NOTE: The documentation in this chapter is quite incomplete.
8624@node Encoding for Censorship-Resistant Sharing (ECRS) 8624@node Encoding for Censorship-Resistant Sharing (ECRS)
8625@subsection Encoding for Censorship-Resistant Sharing (ECRS) 8625@subsection Encoding for Censorship-Resistant Sharing (ECRS)
8626 8626
8627@c %**end of header 8627
8628 8628
8629When GNUnet shares files, it uses a content encoding that is called ECRS, 8629When GNUnet shares files, it uses a content encoding that is called ECRS,
8630the Encoding for Censorship-Resistant Sharing. 8630the Encoding for Censorship-Resistant Sharing.
@@ -8646,7 +8646,7 @@ thus did not warrant space in the research report.
8646@node Namespace Advertisements 8646@node Namespace Advertisements
8647@subsubsection Namespace Advertisements 8647@subsubsection Namespace Advertisements
8648 8648
8649@c %**end of header 8649
8650@c %**FIXME: all zeroses -> ? 8650@c %**FIXME: all zeroses -> ?
8651 8651
8652An @code{SBlock} with identifier all zeros is a signed 8652An @code{SBlock} with identifier all zeros is a signed
@@ -8661,7 +8661,7 @@ can search for @code{SBlock}s in order to find out more about a namespace.
8661@node KSBlocks 8661@node KSBlocks
8662@subsubsection KSBlocks 8662@subsubsection KSBlocks
8663 8663
8664@c %**end of header 8664
8665 8665
8666GNUnet implements @code{KSBlocks} which are @code{KBlocks} that, instead 8666GNUnet implements @code{KSBlocks} which are @code{KBlocks} that, instead
8667of encrypting a CHK and metadata, encrypt an @code{SBlock} instead. 8667of encrypting a CHK and metadata, encrypt an @code{SBlock} instead.
@@ -8687,7 +8687,7 @@ Collections are also advertised using @code{KSBlock}s.
8687@node File-sharing persistence directory structure 8687@node File-sharing persistence directory structure
8688@subsection File-sharing persistence directory structure 8688@subsection File-sharing persistence directory structure
8689 8689
8690@c %**end of header 8690
8691 8691
8692This section documents how the file-sharing library implements 8692This section documents how the file-sharing library implements
8693persistence of file-sharing operations and specifically the resulting 8693persistence of file-sharing operations and specifically the resulting
@@ -8773,7 +8773,7 @@ Note that unindex operations cannot have associated child operations.
8773@node REGEX Subsystem 8773@node REGEX Subsystem
8774@section REGEX Subsystem 8774@section REGEX Subsystem
8775 8775
8776@c %**end of header 8776
8777 8777
8778Using the REGEX subsystem, you can discover peers that offer a particular 8778Using the REGEX subsystem, you can discover peers that offer a particular
8779service using regular expressions. 8779service using regular expressions.
@@ -8796,7 +8796,7 @@ thesis.
8796@node How to run the regex profiler 8796@node How to run the regex profiler
8797@subsection How to run the regex profiler 8797@subsection How to run the regex profiler
8798 8798
8799@c %**end of header 8799
8800 8800
8801The gnunet-regex-profiler can be used to profile the usage of mesh/regex 8801The gnunet-regex-profiler can be used to profile the usage of mesh/regex
8802for a given set of regular expressions and strings. 8802for a given set of regular expressions and strings.
@@ -8929,7 +8929,7 @@ regular expressions.
8929@node REST Subsystem 8929@node REST Subsystem
8930@section REST Subsystem 8930@section REST Subsystem
8931 8931
8932@c %**end of header 8932
8933 8933
8934Using the REST subsystem, you can expose REST-based APIs or services. 8934Using the REST subsystem, you can expose REST-based APIs or services.
8935The REST service is designed as a pluggable architecture. 8935The REST service is designed as a pluggable architecture.
diff --git a/doc/handbook/chapters/installation.texi b/doc/handbook/chapters/installation.texi
index c35ce5276..9c9c38a2d 100644
--- a/doc/handbook/chapters/installation.texi
+++ b/doc/handbook/chapters/installation.texi
@@ -261,7 +261,7 @@ PLUGINS = tcp
261 261
262@node Checking the Installation 262@node Checking the Installation
263@section Checking the Installation 263@section Checking the Installation
264@c %**end of header 264
265 265
266This section describes a quick, casual way to check if your GNUnet 266This section describes a quick, casual way to check if your GNUnet
267installation works. However, if it does not, we do not cover 267installation works. However, if it does not, we do not cover
@@ -283,7 +283,7 @@ as part of this handbook!.
283@cindex GTK user interface 283@cindex GTK user interface
284@node gnunet-gtk 284@node gnunet-gtk
285@subsection gnunet-gtk 285@subsection gnunet-gtk
286@c %**end of header 286
287 287
288The @command{gnunet-gtk} package contains several graphical 288The @command{gnunet-gtk} package contains several graphical
289user interfaces for the respective GNUnet applications. 289user interfaces for the respective GNUnet applications.
@@ -307,7 +307,7 @@ for filesharing, etc).
307 307
308@node Statistics 308@node Statistics
309@subsection Statistics 309@subsection Statistics
310@c %**end of header 310
311 311
312We 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
313system-provided method for starting services. 313system-provided method for starting services.
@@ -340,7 +340,7 @@ whatever it is you are looking at the Gtk+ interface describes a
340 340
341@node Peer Information 341@node Peer Information
342@subsection Peer Information 342@subsection Peer Information
343@c %**end of header 343
344 344
345First, you should launch the peer information graphical user interface. 345First, you should launch the peer information graphical user interface.
346You can do this from the command-line by typing 346You can do this from the command-line by typing
@@ -887,7 +887,7 @@ a @code{gn090} table here, it probably works.
887 887
888@node Configuring the datacache 888@node Configuring the datacache
889@subsection Configuring the datacache 889@subsection Configuring the datacache
890@c %**end of header 890
891 891
892The 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
893expected to be wiped completely each time GNUnet is restarted (or the 893expected to be wiped completely each time GNUnet is restarted (or the
diff --git a/doc/handbook/chapters/user.texi b/doc/handbook/chapters/user.texi
index bce16edae..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
@@ -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,7 +638,7 @@ 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-namestore-gtk}. Add a new label www in your 644@command{gnunet-namestore-gtk}. Add a new label www in your
@@ -658,7 +658,7 @@ exit @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.