diff options
-rw-r--r-- | doc/handbook/chapters/developer.texi | 390 | ||||
-rw-r--r-- | doc/handbook/chapters/installation.texi | 10 | ||||
-rw-r--r-- | doc/handbook/chapters/user.texi | 104 | ||||
-rw-r--r-- | doc/tutorial/gnunet-tutorial.texi | 2 |
4 files changed, 253 insertions, 253 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 | ||
2838 | At first, on the client side, the underlying API is employed to create a | 2838 | At 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 | ||
2852 | When the connection is ready, we initialize the message. In this step, | 2852 | When the connection is ready, we initialize the message. In this step, |
2853 | all the fields of the message should be properly initialized, namely the | 2853 | all 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 | ||
2920 | in the function above the argument @code{run} is used to initiate | 2920 | in the function above the argument @code{run} is used to initiate |
2921 | transport service,and defined like this: | 2921 | transport 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 | ||
2978 | After the initialization of transport service, the request message would | 2978 | After the initialization of transport service, the request message would |
2979 | be processed. Before handling the main message data, the validity of this | 2979 | be 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 | ||
3029 | Once the processing of current request is done, the server should give the | 3029 | Once the processing of current request is done, the server should give the |
3030 | response to the client. A new @code{struct AddressLookupMessage} would be | 3030 | response 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 | ||
3065 | Often a service needs to (repeatedly) transmit notifications to a client | 3065 | Often a service needs to (repeatedly) transmit notifications to a client |
3066 | or a group of clients. In these cases, the client typically has once | 3066 | or 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 | ||
3094 | Here we can simply comprehend big endian and little endian as Network Byte | 3094 | Here we can simply comprehend big endian and little endian as Network Byte |
3095 | Order and Host Byte Order respectively. What is the difference between | 3095 | Order 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 | ||
3150 | The gnunetutil APIs provides the cryptographic primitives used in GNUnet. | 3150 | The gnunetutil APIs provides the cryptographic primitives used in GNUnet. |
3151 | GNUnet uses 2048 bit RSA keys for the session key exchange and for signing | 3151 | GNUnet 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 }@ |
3188 | Often, applications need to queue messages that | 3188 | Often, 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 | ||
3331 | Most GNUnet code lives in the form of services. Services are processes | 3331 | Most GNUnet code lives in the form of services. Services are processes |
3332 | that offer an API for other components of the system to build on. Those | 3332 | that 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 | ||
3407 | A commonly used data structure in GNUnet is a (multi-)hash map. It is most | 3407 | A commonly used data structure in GNUnet is a (multi-)hash map. It is most |
3408 | often used to map a peer identity to some data structure, but also to map | 3408 | often 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 | ||
3431 | The main reason for the "excessive" memory consumption by the hash map is | 3431 | The main reason for the "excessive" memory consumption by the hash map is |
3432 | that GNUnet uses 512-bit cryptographic hash codes --- and the | 3432 | that 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 | ||
3482 | The solution that has now been implemented is to @strong{optionally} | 3482 | The solution that has now been implemented is to @strong{optionally} |
3483 | allow the hash map to not make a (deep) copy of the hash but instead have | 3483 | allow 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 | ||
3500 | To use the new feature, first check that the values contain the respective | 3500 | To use the new feature, first check that the values contain the respective |
3501 | key (and never modify it). Then, all calls to | 3501 | key (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 | ||
3549 | The new optimization can is often applicable and can result in a | 3549 | The new optimization can is often applicable and can result in a |
3550 | reduction in memory consumption of up to 30% in practice. However, it | 3550 | reduction 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 | ||
3562 | The new multi hash map code was committed in SVN 24319 (which made its | 3562 | The new multi hash map code was committed in SVN 24319 (which made its |
3563 | way into GNUnet version 0.9.4). | 3563 | way 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 | ||
3575 | This text documents the GNUNET_CONTAINER_MDLL API. The | 3575 | This text documents the GNUNET_CONTAINER_MDLL API. The |
3576 | GNUNET_CONTAINER_MDLL API is similar to the GNUNET_CONTAINER_DLL API in | 3576 | GNUNET_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 | ||
3641 | GNUnet's Automated Restart Manager (ARM) is the GNUnet service responsible | 3641 | GNUnet's Automated Restart Manager (ARM) is the GNUnet service responsible |
3642 | for system initialization and service babysitting. ARM starts and halts | 3642 | for 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 | ||
3686 | Configurations for ARM and services should be available in a .conf file | 3686 | Configurations 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 | ||
3755 | As mentioned before, one of the features provided by ARM is starting | 3755 | As mentioned before, one of the features provided by ARM is starting |
3756 | services on demand. Consider the example of one service "client" that | 3756 | services 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 | ||
3843 | This chapter documents how the GNUnet transport subsystem works. The | 3843 | This chapter documents how the GNUnet transport subsystem works. The |
3844 | GNUnet transport subsystem consists of three main components: the | 3844 | GNUnet 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 | ||
3901 | This section documents how the GNUnet transport service validates | 3901 | This section documents how the GNUnet transport service validates |
3902 | connections with other peers. It is a high-level description of the | 3902 | connections 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 | ||
3964 | The goal of the GNUnet NAT library is to provide a general-purpose API for | 3964 | The goal of the GNUnet NAT library is to provide a general-purpose API for |
3965 | NAT traversal @strong{without} third-party support. So protocols that | 3965 | NAT 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 | ||
4011 | The Distance Vector (DV) transport is a transport mechanism that allows | 4011 | The Distance Vector (DV) transport is a transport mechanism that allows |
4012 | peers to act as relays for each other, thereby connecting peers that would | 4012 | peers 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 | ||
4081 | This section describes the new SMTP transport plugin for GNUnet as it | 4081 | This 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 | ||
4113 | There are many reasons why one would not want to use SMTP: | 4113 | There 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 | ||
4148 | When a GNUnet peer needs to send a message to another GNUnet peer that has | 4148 | When a GNUnet peer needs to send a message to another GNUnet peer that has |
4149 | advertised (only) an SMTP transport address, GNUnet base64-encodes the | 4149 | advertised (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 | ||
4161 | First, you need to configure @code{procmail} to filter your inbound E-mail | 4161 | First, you need to configure @code{procmail} to filter your inbound E-mail |
4162 | for GNUnet traffic. The GNUnet messages must be delivered into a pipe, for | 4162 | for 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 | ||
4206 | Any transport can be subjected to some rudimentary tests using the | 4206 | Any 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 | ||
4229 | We have measured the performance of the UDP, TCP and SMTP transport layer | 4229 | We have measured the performance of the UDP, TCP and SMTP transport layer |
4230 | directly and when used from an application using the GNUnet core. | 4230 | directly 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 | ||
4296 | This page describes the new Bluetooth transport plugin for GNUnet. The | 4296 | This page describes the new Bluetooth transport plugin for GNUnet. The |
4297 | plugin is still in the testing stage so don't expect it to work | 4297 | plugin 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 | ||
4322 | If you are a GNU/Linux user and you want to use the Bluetooth | 4322 | If you are a GNU/Linux user and you want to use the Bluetooth |
4323 | transport plugin you should install the | 4323 | transport 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 | ||
4349 | The Bluetooth transport plugin uses virtually the same code as the WLAN | 4349 | The Bluetooth transport plugin uses virtually the same code as the WLAN |
4350 | plugin and only the helper binary is different. The helper takes a single | 4350 | plugin 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 | ||
4418 | On GNU/Linux, you just have to be sure that the interface name | 4418 | On GNU/Linux, you just have to be sure that the interface name |
4419 | corresponds to the one that you want to use. | 4419 | corresponds 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 | ||
4452 | If you have two Bluetooth devices on the same machine and you are using | 4452 | If you have two Bluetooth devices on the same machine and you are using |
4453 | GNU/Linux you must: | 4453 | GNU/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 | ||
4499 | This page describes the implementation of the Bluetooth transport plugin. | 4499 | This 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 | ||
4533 | In order to implement the plugin functionality on GNU/Linux I | 4533 | In order to implement the plugin functionality on GNU/Linux I |
4534 | used the BlueZ stack. | 4534 | used 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 | ||
4629 | First I want to point out that the broadcast functionality for the CONTROL | 4629 | First I want to point out that the broadcast functionality for the CONTROL |
4630 | messages is not implemented in a conventional way. Since the inquiry scan | 4630 | messages 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 | ||
4676 | For Windows I decided to use the Microsoft Bluetooth stack which has the | 4676 | For Windows I decided to use the Microsoft Bluetooth stack which has the |
4677 | advantage of coming standard from Windows XP SP2. The main disadvantage is | 4677 | advantage 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 | ||
4747 | This section documents how the wlan transport plugin works. Parts which | 4747 | This section documents how the wlan transport plugin works. Parts which |
4748 | are not implemented yet or could be better implemented are described at | 4748 | are 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 | ||
4756 | ATS stands for "automatic transport selection", and the function of ATS in | 4756 | ATS stands for "automatic transport selection", and the function of ATS in |
4757 | GNUnet is to decide on which address (and thus transport plugin) should | 4757 | GNUnet 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 | ||
4779 | The CORE subsystem in GNUnet is responsible for securing link-layer | 4779 | The CORE subsystem in GNUnet is responsible for securing link-layer |
4780 | communications between nodes in the GNUnet overlay network. CORE builds | 4780 | communications 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 | ||
4823 | CORE does not perform | 4823 | CORE 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 | ||
4857 | In addition to the security features mentioned above, CORE also provides | 4857 | In addition to the security features mentioned above, CORE also provides |
4858 | one additional key feature to applications using it, and that is a | 4858 | one 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 | ||
4890 | The CORE API (defined in @file{gnunet_core_service.h}) is the basic | 4890 | The CORE API (defined in @file{gnunet_core_service.h}) is the basic |
4891 | messaging API used by P2P applications built using GNUnet. It provides | 4891 | messaging 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 | ||
4955 | This section describes the protocol between an application using the CORE | 4955 | This section describes the protocol between an application using the CORE |
4956 | service (the client) and the CORE service process itself. | 4956 | service (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 | ||
4969 | When a client connects to the CORE service, it first sends a | 4969 | When 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 | ||
4998 | The CORE will send @code{ConnectNotifyMessage}s and | 4998 | The 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 | ||
5014 | When a client wants to transmit a message, it first requests a | 5014 | When a client wants to transmit a message, it first requests a |
5015 | transmission slot by sending a @code{SendMessageRequest} which specifies | 5015 | transmission 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 | ||
5047 | When the CORE service starts, each peer creates a fresh ephemeral (ECC) | 5047 | When the CORE service starts, each peer creates a fresh ephemeral (ECC) |
5048 | public-private key pair and signs the corresponding | 5048 | public-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 | ||
5088 | Peers begin their interaction by sending a @code{EphemeralKeyMessage} to | 5088 | Peers begin their interaction by sending a @code{EphemeralKeyMessage} to |
5089 | the other peer once the TRANSPORT service notifies the CORE service about | 5089 | the 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 | ||
5106 | All functions related to the key exchange and encryption/decryption of | 5106 | All functions related to the key exchange and encryption/decryption of |
5107 | messages can be found in @file{gnunet-service-core_kx.c} (except for the | 5107 | messages 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 | ||
5134 | Once an encrypted connection has been established, peers begin to exchange | 5134 | Once an encrypted connection has been established, peers begin to exchange |
5135 | type maps. Type maps are used to allow the CORE service to determine which | 5135 | type 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 | ||
5406 | The target value itself is generated by hashing the current time, rounded | 5406 | The target value itself is generated by hashing the current time, rounded |
5407 | down to an agreed value. If the rounding amount is 1h (default) and the | 5407 | down 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 | ||
5416 | The NSE subsystem has some timing control to avoid everybody broadcasting | 5416 | The NSE subsystem has some timing control to avoid everybody broadcasting |
5417 | its ID all at one. Once each peer has the target random value, it | 5417 | its 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 | ||
5433 | When a peer receives a value, first it verifies that it is closer than the | 5433 | When a peer receives a value, first it verifies that it is closer than the |
5434 | closest value it had so far, otherwise it answers the incoming message | 5434 | closest 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 | ||
5452 | Once the closest ID has been spread across the network each peer gets the | 5452 | Once the closest ID has been spread across the network each peer gets the |
5453 | exact distance between this ID and the target value of the round and | 5453 | exact 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 | ||
5471 | The NSE subsystem has the simplest API of all services, with only two | 5471 | The NSE subsystem has the simplest API of all services, with only two |
5472 | calls: @code{GNUNET_NSE_connect} and @code{GNUNET_NSE_disconnect}. | 5472 | calls: @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 | ||
5497 | The callback provides two values: the average and the | 5497 | The 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 | ||
5535 | Let's close with a couple examples. | 5535 | Let'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 | ||
5562 | As with the API, the client-service protocol is very simple, only has 2 | 5562 | As with the API, the client-service protocol is very simple, only has 2 |
5563 | different messages, defined in @code{src/nse/nse.h}: | 5563 | different 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 | ||
5583 | The NSE subsystem only has one message in the P2P protocol, the | 5583 | The 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 | ||
5638 | Peers in the GNUnet overlay network need address information so that they | 5638 | Peers in the GNUnet overlay network need address information so that they |
5639 | can connect with other peers. GNUnet uses so called HELLO messages to | 5639 | can 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 | ||
5676 | The basic information peers require to connect to other peers are | 5676 | The basic information peers require to connect to other peers are |
5677 | contained in so called HELLO messages you can think of as a business card. | 5677 | contained 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 | ||
5688 | The HOSTLIST subsystem provides a way to distribute and obtain contact | 5688 | The HOSTLIST subsystem provides a way to distribute and obtain contact |
5689 | information to connect to other peers using a simple HTTP GET request. | 5689 | information 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 | ||
5714 | The HOSTLIST daemon can: | 5714 | The 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 | ||
5732 | The HOSTLIST daemon does not: | 5732 | The 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 | ||
5744 | The HOSTLIST subsystem is currently implemented as a daemon, so there is | 5744 | The HOSTLIST subsystem is currently implemented as a daemon, so there is |
5745 | no need for the user to interact with it and therefore there is no | 5745 | no 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 | ||
5772 | Since information obtained from other parties cannot be trusted without | 5772 | Since information obtained from other parties cannot be trusted without |
5773 | validation, we have to distinguish between @emph{validated} and | 5773 | validation, 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 | ||
5793 | The hostlist daemon is the main component of the HOSTLIST subsystem. It is | 5793 | The hostlist daemon is the main component of the HOSTLIST subsystem. It is |
5794 | started by the ARM service and (if configured) starts the HOSTLIST client | 5794 | started 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 | ||
5823 | The server provides a way for other peers to obtain HELLOs. Basically it | 5823 | The server provides a way for other peers to obtain HELLOs. Basically it |
5824 | is a small web server other peers can connect to and download a list of | 5824 | is 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 | ||
5839 | During startup, the server starts a web server listening on the port | 5839 | During startup, the server starts a web server listening on the port |
5840 | specified with the HTTPPORT value (default 8080). In addition it connects | 5840 | specified 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 | ||
5865 | The server also advertises the URL to download the hostlist to other peers | 5865 | The server also advertises the URL to download the hostlist to other peers |
5866 | if hostlist advertisement is enabled. | 5866 | if 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 | ||
5877 | The client provides the functionality to download the list of HELLOs from | 5877 | The client provides the functionality to download the list of HELLOs from |
5878 | a set of URLs. | 5878 | a 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 | ||
5901 | For bootstrapping, it schedules a task to download the hostlist from the | 5901 | For bootstrapping, it schedules a task to download the hostlist from the |
5902 | set of known URLs. | 5902 | set 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 | ||
5930 | The client also manages hostlist advertisements from other peers. The | 5930 | The client also manages hostlist advertisements from other peers. The |
5931 | HOSTLIST daemon forwards @code{GNUNET_MESSAGE_TYPE_HOSTLIST_ADVERTISEMENT} | 5931 | HOSTLIST 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 | ||
5949 | To start HOSTLIST by default, it has to be added to the DEFAULTSERVICES | 5949 | To start HOSTLIST by default, it has to be added to the DEFAULTSERVICES |
5950 | section for the ARM services. This is done in the default configuration. | 5950 | section 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 | ||
5963 | Identities of "users" in GNUnet are called egos. | 5963 | Identities of "users" in GNUnet are called egos. |
5964 | Egos can be used as pseudonyms ("fake names") or be tied to an | 5964 | Egos 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 | ||
6033 | First, typical clients connect to the identity service using | 6033 | First, 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 | ||
6069 | Given an ego handle, the main operations are to get its associated private | 6069 | Given an ego handle, the main operations are to get its associated private |
6070 | key using @code{GNUNET_IDENTITY_ego_get_private_key} or its associated | 6070 | key 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 | ||
6092 | A special way to obtain an ego handle is to call | 6092 | A 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 | ||
6127 | A client connecting to the identity service first sends a message with | 6127 | A client connecting to the identity service first sends a message with |
6128 | type | 6128 | type |
@@ -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 | ||
6218 | NAMESTORE provides functions to lookup records stored under a label in a | 6218 | NAMESTORE provides functions to lookup records stored under a label in a |
6219 | zone and to store records under a label in a zone. | 6219 | zone 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 | ||
6258 | A client can iterate over all information in a zone or all zones managed | 6258 | A client can iterate over all information in a zone or all zones managed |
6259 | by NAMESTORE. | 6259 | by 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 | ||
6278 | Clients can also monitor zones to be notified about changes. Here the | 6278 | Clients can also monitor zones to be notified about changes. Here the |
6279 | clients uses the @code{GNUNET_NAMESTORE_zone_monitor_start} function and | 6279 | clients 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 | ||
6299 | The PEERINFO subsystem is used to store verified (validated) information | 6299 | The PEERINFO subsystem is used to store verified (validated) information |
6300 | about known peers in a persistent way. It obtains these addresses for | 6300 | about 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 | ||
6352 | The PEERINFO subsystem stores these information in the form of HELLO | 6352 | The PEERINFO subsystem stores these information in the form of HELLO |
6353 | messages you can think of as business cards. | 6353 | messages 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 | ||
6386 | During startup the PEERINFO services loads persistent HELLOs from disk. | 6386 | During startup the PEERINFO services loads persistent HELLOs from disk. |
6387 | First PEERINFO parses the directory configured in the HOSTS value of the | 6387 | First 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 | ||
6402 | The PEERINFO services stores information about known PEERS and a single | 6402 | The PEERINFO services stores information about known PEERS and a single |
6403 | HELLO message for every peer. | 6403 | HELLO 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 | ||
6424 | When a client requests information from PEERINFO, PEERINFO performs a | 6424 | When a client requests information from PEERINFO, PEERINFO performs a |
6425 | lookup for the respective peer or all peers if desired and transmits this | 6425 | lookup 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 | ||
6441 | To connect and disconnect to and from the PEERINFO Service PEERINFO | 6441 | To connect and disconnect to and from the PEERINFO Service PEERINFO |
6442 | utilizes the util client/server infrastructure, so no special messages | 6442 | utilizes 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 | ||
6473 | The PEERINFO API consists mainly of three different functionalities: | 6473 | The 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 | ||
6492 | To connect to the PEERINFO service the function | 6492 | To 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 |
6504 | storage. This function takes the PEERINFO handle as an argument, the HELLO | 6504 | storage. 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 | ||
6518 | To iterate over information in PEERINFO you use | 6518 | To 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 | ||
6543 | GNUnet's PEERSTORE subsystem offers persistent per-peer storage for other | 6543 | GNUnet's PEERSTORE subsystem offers persistent per-peer storage for other |
6544 | GNUnet subsystems. GNUnet subsystems can use PEERSTORE to persistently | 6544 | GNUnet 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 | ||
6567 | Subsystems can store any type of value under a (subsystem, peerid, key) | 6567 | Subsystems can store any type of value under a (subsystem, peerid, key) |
6568 | combination. A "replace" flag set during store operations forces the | 6568 | combination. 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 | ||
6593 | PEERSTORE implements the following components: | 6593 | PEERSTORE 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 | ||
6609 | libgnunetpeerstore is the library containing the PEERSTORE API. Subsystems | 6609 | libgnunetpeerstore is the library containing the PEERSTORE API. Subsystems |
6610 | wishing to communicate with the PEERSTORE service use this API to open a | 6610 | wishing 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 | ||
6657 | The SET service implements efficient set operations between two peers | 6657 | The SET service implements efficient set operations between two peers |
6658 | over a mesh tunnel. | 6658 | over 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 | ||
6680 | Sets created by a local client can be modified and reused for multiple | 6680 | Sets created by a local client can be modified and reused for multiple |
6681 | operations. As each set operation requires potentially expensive special | 6681 | operations. 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 | ||
6694 | Even when set operations are active, one can add to and remove elements | 6694 | Even when set operations are active, one can add to and remove elements |
6695 | from a set. | 6695 | from 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 | ||
6707 | Set operations can be started in two ways: Either by accepting an | 6707 | Set operations can be started in two ways: Either by accepting an |
6708 | operation request from a remote peer, or by requesting a set operation | 6708 | operation 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 | ||
6724 | The SET service has three @emph{result modes} that determine how an | 6724 | The SET service has three @emph{result modes} that determine how an |
6725 | operation's result set is delivered to the client: | 6725 | operation'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 | ||
6762 | New sets are created with @code{GNUNET_SET_create}. Both the local peer's | 6762 | New sets are created with @code{GNUNET_SET_create}. Both the local peer's |
6763 | configuration (as each set has its own client connection) and the | 6763 | configuration (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 | ||
6778 | Listeners are created with @code{GNUNET_SET_listen}. Each time time a | 6778 | Listeners are created with @code{GNUNET_SET_listen}. Each time time a |
6779 | remote peer suggests a set operation with an application id and operation | 6779 | remote 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 | ||
6791 | Operations to be initiated by the local peer are created with | 6791 | Operations 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 | ||
6801 | To create symmetry between the two ways of starting a set operation | 6801 | To 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 | ||
6815 | Clients must specify both a result mode and a result callback with | 6815 | Clients 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 | ||
6843 | For each set of a client, there exists a client connection to the service. | 6843 | For each set of a client, there exists a client connection to the service. |
6844 | Sets are created by sending the @code{GNUNET_SERVICE_SET_CREATE} message | 6844 | Sets 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 | ||
6854 | Each listener also requires a seperate client connection. By sending the | 6854 | Each 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 | ||
6868 | Operations with remote peers are initiated by sending a | 6868 | Operations 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 | ||
6877 | Sets are modified with the @code{GNUNET_SERVICE_SET_ADD} and | 6877 | Sets 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 | ||
6890 | The service notifies the client of result elements and success/failure of | 6890 | The service notifies the client of result elements and success/failure of |
6891 | a set operation with the @code{GNUNET_SERVICE_SET_RESULT} message. | 6891 | a 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 | ||
6898 | All elements of a set can be requested by sending | 6898 | All 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 | ||
6911 | The intersection protocol operates over CADET and starts with a | 6911 | The intersection protocol operates over CADET and starts with a |
6912 | GNUNET_MESSAGE_TYPE_SET_P2P_OPERATION_REQUEST being sent by the peer | 6912 | GNUNET_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 | ||
6943 | In this phase, each peer transmits a Bloom filter over the remaining | 6943 | In this phase, each peer transmits a Bloom filter over the remaining |
6944 | keys of the local set to the other peer using a | 6944 | keys 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 | ||
6970 | Bloomfilter operations are probabilistic: With some non-zero probability | 6970 | Bloomfilter operations are probabilistic: With some non-zero probability |
6971 | the test may incorrectly say an element is in the set, even though it is | 6971 | the 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 | ||
6990 | The SET union protocol is based on Eppstein's efficient set reconciliation | 6990 | The SET union protocol is based on Eppstein's efficient set reconciliation |
6991 | without prior context. You should read this paper first if you want to | 6991 | without 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 | ||
7033 | In GNUnet, the STATISTICS subsystem offers a central place for all | 7033 | In GNUnet, the STATISTICS subsystem offers a central place for all |
7034 | subsystems to publish unsigned 64-bit integer run-time statistics. | 7034 | subsystems 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 |
7086 | STATISTICS subsystem. Any process requiring to use STATISTICS should use | 7086 | STATISTICS 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 | ||
7116 | Once a connection to the statistics service is obtained, information | 7116 | Once a connection to the statistics service is obtained, information |
7117 | about any other system which uses statistics can be retrieved with the | 7117 | about 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 | ||
7139 | So far we have seen how to retrieve statistics, here we will learn how we | 7139 | So far we have seen how to retrieve statistics, here we will learn how we |
7140 | can set statistics and update them so that other subsystems can retrieve | 7140 | can 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 | ||
7169 | As interesting feature of STATISTICS lies in serving notifications | 7169 | As interesting feature of STATISTICS lies in serving notifications |
7170 | whenever a statistic of our interest is modified. | 7170 | whenever 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 | ||
7201 | To retrieve statistics, the client transmits a message of type | 7201 | To 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 | ||
7215 | The subsystem name, parameter name, its value and the persistence flag are | 7215 | The subsystem name, parameter name, its value and the persistence flag are |
7216 | communicated to the service through the message | 7216 | communicated 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 | ||
7238 | The function registers the watch at the service by sending a message of | 7238 | The function registers the watch at the service by sending a message of |
7239 | type @code{GNUNET_MESSAGE_TYPE_STATISTICS_WATCH}. The service then sends | 7239 | type @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 | ||
7251 | GNUnet includes a generic distributed hash table that can be used by | 7251 | GNUnet includes a generic distributed hash table that can be used by |
7252 | developers building P2P applications in the framework. | 7252 | developers 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 | ||
7310 | Blocks are small (< 63k) pieces of data stored under a key (struct | 7310 | Blocks are small (< 63k) pieces of data stored under a key (struct |
7311 | GNUNET_HashCode). Blocks have a type (enum GNUNET_BlockType) which defines | 7311 | GNUNET_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 | ||
7327 | The block library requires for each (family of) block type(s) a block | 7327 | The block library requires for each (family of) block type(s) a block |
7328 | plugin (implementing @file{gnunet_block_plugin.h}) that provides basic | 7328 | plugin (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 | ||
7359 | The query format for any block in GNUnet consists of four main components. | 7359 | The query format for any block in GNUnet consists of four main components. |
7360 | First, the type of the desired block must be specified. Second, the query | 7360 | First, 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 | ||
7387 | The source code in @strong{plugin_block_test.c} is a good starting point | 7387 | The source code in @strong{plugin_block_test.c} is a good starting point |
7388 | for new block plugins --- it does the minimal work by implementing a | 7388 | for 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 | ||
7398 | In conclusion, GNUnet subsystems that want to use the DHT need to define a | 7398 | In conclusion, GNUnet subsystems that want to use the DHT need to define a |
7399 | block format and write a plugin to match queries and replies. For testing, | 7399 | block 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 | ||
7412 | The DHT API itself is pretty simple and offers the usual GET and PUT | 7412 | The DHT API itself is pretty simple and offers the usual GET and PUT |
7413 | functions that work as expected. The specified block type refers to the | 7413 | functions 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 | ||
7430 | When using GET, the main consideration for developers (other than the | 7430 | When using GET, the main consideration for developers (other than the |
7431 | block library) should be that after issuing a GET, the DHT will | 7431 | block 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'' |
7459 | In contrast to GET operations, developers @strong{must} manually re-run | 7459 | In 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 | ||
7480 | The DHT API also allows applications to monitor messages crossing the | 7480 | The DHT API also allows applications to monitor messages crossing the |
7481 | local DHT service. | 7481 | local 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 | ||
7503 | There are two important options for GET and PUT requests: | 7503 | There 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 | ||
7544 | To store (PUT) data into the DHT, the client sends a | 7544 | To 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 | ||
7565 | To retrieve (GET) data from the DHT, the client sends a | 7565 | To 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 | ||
7604 | To begin monitoring, the client sends a | 7604 | To 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 | ||
7631 | When routing GETs or PUTs, the DHT service selects a suitable subset of | 7631 | When routing GETs or PUTs, the DHT service selects a suitable subset of |
7632 | neighbours for forwarding. The exact number of neighbours can be zero or | 7632 | neighbours 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 | ||
7646 | To PUT data into the DHT, the service sends a @code{struct PeerPutMessage} | 7646 | To PUT data into the DHT, the service sends a @code{struct PeerPutMessage} |
7647 | of type @code{GNUNET_MESSAGE_TYPE_DHT_P2P_PUT} to the respective | 7647 | of 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 | ||
7668 | A peer can search the DHT by sending @code{struct PeerGetMessage}s of type | 7668 | A 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 | ||
7707 | The GNU Name System (GNS) is a decentralized database that enables users | 7707 | The GNU Name System (GNS) is a decentralized database that enables users |
7708 | to securely resolve names to values. | 7708 | to 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 | ||
7762 | The GNS API itself is extremely simple. Clients first connect to the | 7762 | The GNS API itself is extremely simple. Clients first connect to the |
7763 | GNS service using @code{GNUNET_GNS_connect}. | 7763 | GNS 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 | ||
7822 | The @code{libgnunetgnsrecord} library provides an API to manipulate the | 7822 | The @code{libgnunetgnsrecord} library provides an API to manipulate the |
7823 | GNS record array that is given to proc. In particular, it offers | 7823 | GNS 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 | ||
7836 | Creating GNS records is typically done by building the respective record | 7836 | Creating GNS records is typically done by building the respective record |
7837 | information (possibly with the help of @code{libgnunetgnsrecord} and | 7837 | information (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 | ||
7847 | In the future, we want to expand @code{libgnunetgns} to allow | 7847 | In the future, we want to expand @code{libgnunetgns} to allow |
7848 | applications to observe shortening operations performed during GNS | 7848 | applications 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 | ||
7857 | The @code{libgnunetgnsrecord} library is used to manipulate GNS | 7857 | The @code{libgnunetgnsrecord} library is used to manipulate GNS |
7858 | records (in plaintext or in their encrypted format). | 7858 | records (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 |
7884 | the (binary) representation of a GNS record value to a human readable, | 7884 | the (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 |
7899 | numeric value associated with a given typename. For example, given the | 7899 | numeric 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 | ||
7916 | Adding a new GNS record type typically involves writing (or extending) a | 7916 | Adding a new GNS record type typically involves writing (or extending) a |
7917 | GNSRECORD plugin. The plugin needs to implement the | 7917 | GNSRECORD 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 | ||
7942 | The GNS client-service protocol consists of two simple messages, the | 7942 | The 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 | ||
7962 | This section documents how the gnunet-service-dns (and the | 7962 | This section documents how the gnunet-service-dns (and the |
7963 | gnunet-helper-dns) intercepts DNS queries from the local system. | 7963 | gnunet-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 | ||
7999 | The DNS interceptor adds the following rules to the Linux kernel: | 7999 | The 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 | ||
8020 | This section documents how the libw32nsp (and | 8020 | This section documents how the libw32nsp (and |
8021 | gnunet-gns-helper-service-w32) do DNS resolutions of DNS queries on the | 8021 | gnunet-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 | ||
8090 | This section discusses the challenges and problems faced when writing the | 8090 | This section discusses the challenges and problems faced when writing the |
8091 | Ascension tool. It also takes a look at possible improvements in the future. | 8091 | Ascension 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 | ||
8247 | The NAMECACHE subsystem is responsible for caching (encrypted) resolution | 8247 | The NAMECACHE subsystem is responsible for caching (encrypted) resolution |
8248 | results of the GNU Name System (GNS). GNS makes zone information available | 8248 | results 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 | ||
8286 | The NAMECACHE API consists of five simple functions. First, there is | 8286 | The 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 | ||
8309 | All messages in the NAMECACHE IPC protocol start with the | 8309 | All 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 | ||
8327 | The @code{struct LookupBlockMessage} is used to lookup a block stored in | 8327 | The @code{struct LookupBlockMessage} is used to lookup a block stored in |
8328 | the cache. | 8328 | the 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 | ||
8341 | The @code{struct BlockCacheMessage} is used to cache a block in the | 8341 | The @code{struct BlockCacheMessage} is used to cache a block in the |
8342 | NAMECACHE. | 8342 | NAMECACHE. |
@@ -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 | ||
8353 | The NAMECACHE plugin API consists of two functions, @code{cache_block} to | 8353 | The NAMECACHE plugin API consists of two functions, @code{cache_block} to |
8354 | store a block in the database, and @code{lookup_block} to lookup a block | 8354 | store 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 | ||
8368 | The @code{lookup_block} function is expected to return at most one block | 8368 | The @code{lookup_block} function is expected to return at most one block |
8369 | to the iterator, and return @code{GNUNET_NO} if there were no non-expired | 8369 | to 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 | ||
8379 | The @code{cache_block} function is expected to try to store the block in | 8379 | The @code{cache_block} function is expected to try to store the block in |
8380 | the database, and return @code{GNUNET_SYSERR} if this was not possible | 8380 | the 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 | ||
8396 | The REVOCATION subsystem is responsible for key revocation of Egos. | 8396 | The REVOCATION subsystem is responsible for key revocation of Egos. |
8397 | If a user learns that theis private key has been compromised or has lost | 8397 | If 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 | ||
8416 | When a revocation is performed, the revocation is first of all | 8416 | When a revocation is performed, the revocation is first of all |
8417 | disseminated by flooding the overlay network. | 8417 | disseminated 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 | ||
8440 | However, flooding is also quite costly, creating O(|E|) messages on a | 8440 | However, flooding is also quite costly, creating O(|E|) messages on a |
8441 | network with |E| edges. | 8441 | network 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 | ||
8462 | The REVOCATION API consists of two parts, to query and to issue | 8462 | The REVOCATION API consists of two parts, to query and to issue |
8463 | revocations. | 8463 | revocations. |
@@ -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 |
8478 | key has been revoked. | 8478 | key 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 | ||
8488 | It is often desirable to create a revocation record ahead-of-time and | 8488 | It is often desirable to create a revocation record ahead-of-time and |
8489 | store it in an off-line location to be used later in an emergency. | 8489 | store 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 | ||
8556 | Revocation uses two disjoint ways to spread revocation information among | 8556 | Revocation uses two disjoint ways to spread revocation information among |
8557 | peers. | 8557 | peers. |
@@ -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 | ||
8591 | This chapter describes the details of how the file-sharing service works. | 8591 | This chapter describes the details of how the file-sharing service works. |
8592 | As with all services, it is split into an API (libgnunetfs), the service | 8592 | As 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 | ||
8629 | When GNUnet shares files, it uses a content encoding that is called ECRS, | 8629 | When GNUnet shares files, it uses a content encoding that is called ECRS, |
8630 | the Encoding for Censorship-Resistant Sharing. | 8630 | the 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 | ||
8652 | An @code{SBlock} with identifier all zeros is a signed | 8652 | An @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 | ||
8666 | GNUnet implements @code{KSBlocks} which are @code{KBlocks} that, instead | 8666 | GNUnet implements @code{KSBlocks} which are @code{KBlocks} that, instead |
8667 | of encrypting a CHK and metadata, encrypt an @code{SBlock} instead. | 8667 | of 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 | ||
8692 | This section documents how the file-sharing library implements | 8692 | This section documents how the file-sharing library implements |
8693 | persistence of file-sharing operations and specifically the resulting | 8693 | persistence 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 | ||
8778 | Using the REGEX subsystem, you can discover peers that offer a particular | 8778 | Using the REGEX subsystem, you can discover peers that offer a particular |
8779 | service using regular expressions. | 8779 | service 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 | ||
8801 | The gnunet-regex-profiler can be used to profile the usage of mesh/regex | 8801 | The gnunet-regex-profiler can be used to profile the usage of mesh/regex |
8802 | for a given set of regular expressions and strings. | 8802 | for 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 | ||
8934 | Using the REST subsystem, you can expose REST-based APIs or services. | 8934 | Using the REST subsystem, you can expose REST-based APIs or services. |
8935 | The REST service is designed as a pluggable architecture. | 8935 | The 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 | ||
266 | This section describes a quick, casual way to check if your GNUnet | 266 | This section describes a quick, casual way to check if your GNUnet |
267 | installation works. However, if it does not, we do not cover | 267 | installation 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 | ||
288 | The @command{gnunet-gtk} package contains several graphical | 288 | The @command{gnunet-gtk} package contains several graphical |
289 | user interfaces for the respective GNUnet applications. | 289 | user 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 | ||
312 | We assume that you have started gnunet via @code{gnunet-arm} or via your | 312 | We assume that you have started gnunet via @code{gnunet-arm} or via your |
313 | system-provided method for starting services. | 313 | system-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 | ||
345 | First, you should launch the peer information graphical user interface. | 345 | First, you should launch the peer information graphical user interface. |
346 | You can do this from the command-line by typing | 346 | You 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 | ||
892 | The datacache is what GNUnet uses for storing temporary data. This data is | 892 | The datacache is what GNUnet uses for storing temporary data. This data is |
893 | expected to be wiped completely each time GNUnet is restarted (or the | 893 | expected 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 | ||
5 | This tutorial is supposed to give a first introduction for users | 5 | This tutorial is supposed to give a first introduction for users |
6 | trying to do something real with GNUnet. Installation and | 6 | trying 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. |
71 | Use @code{gnunet-config -s gns} to view the GNS configuration, including | 71 | Use @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 | ||
111 | Maintaing your zones is through the NAMESTORE service and is discussed | 111 | Maintaing your zones is through the NAMESTORE service and is discussed |
112 | here. You can manage your zone using @command{gnunet-identity} and | 112 | here. 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 | ||
143 | We will begin by creating a simple record in your master zone. | 143 | We will begin by creating a simple record in your master zone. |
144 | To do this, click on the text "<new name>" in the table. The field is | 144 | To 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 | ||
173 | Next, you should try resolving your own GNS records. The method we | 173 | Next, you should try resolving your own GNS records. The method we |
174 | found to be the most uncomplicated is to do this by explicitly | 174 | found 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 | ||
196 | While we recommend integrating GNS using the NSS module in the | 196 | While we recommend integrating GNS using the NSS module in the |
197 | GNU libc Name Service Switch, you can also integrate GNS | 197 | GNU 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 | ||
307 | Next, you should print out your business card and be social. | 307 | Next, you should print out your business card and be social. |
308 | Find a friend, help them install GNUnet and exchange business cards with | 308 | Find 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 | ||
429 | This may seem not like much of an application yet, but you have | 429 | This may seem not like much of an application yet, but you have |
430 | just been one of the first to perform a decentralized secure name | 430 | just 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 | ||
448 | First, you should launch the graphical user interface. You can do | 448 | First, you should launch the graphical user interface. You can do |
449 | this from the command-line by typing | 449 | this 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 | ||
464 | First, you should use @code{gnunet-conversation-test} to check that your | 464 | First, you should use @code{gnunet-conversation-test} to check that your |
465 | microphone and speaker are working correctly. You will be prompted to | 465 | microphone 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 |
477 | you need to have a GNS zone created before using it. Information | 477 | you 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 | ||
490 | To make a call with @code{gnunet-conversation}, you first | 490 | To make a call with @code{gnunet-conversation}, you first |
491 | need to choose an identity. This identity is both the caller ID | 491 | need 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 | ||
547 | Now you can call a buddy. Obviously, your buddy will have to have GNUnet | 547 | Now you can call a buddy. Obviously, your buddy will have to have GNUnet |
548 | installed and must have performed the same steps. Also, you must have | 548 | installed 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 | ||
586 | To test the GNUnet VPN, we should first run a web server. | 586 | To test the GNUnet VPN, we should first run a web server. |
587 | The easiest way to do this is to just start @code{gnunet-bcd}, | 587 | The 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 | ||
627 | Stop your peer (as user @code{gnunet}, run @command{gnunet-arm -e}) and | 627 | Stop your peer (as user @code{gnunet}, run @command{gnunet-arm -e}) and |
628 | run @command{gnunet-setup}. In @command{gnunet-setup}, make sure to | 628 | run @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 | ||
643 | Now, using your normal user (not the @code{gnunet} system user), run | 643 | Now, 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 | ||
663 | You should now be able to access your webserver. Type in: | 663 | You 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 | ||
686 | Sadly, modern browsers tend to bypass the Name Services Switch and | 686 | Sadly, modern browsers tend to bypass the Name Services Switch and |
687 | attempt DNS resolution directly. You can either run | 687 | attempt 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 | ||
698 | This chapter documents the GNUnet file-sharing application. The original | 698 | This chapter documents the GNUnet file-sharing application. The original |
699 | file-sharing implementation for GNUnet was designed to provide | 699 | file-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 | ||
731 | The command @command{gnunet-search} can be used to search | 731 | The command @command{gnunet-search} can be used to search |
732 | for content on GNUnet. The format is: | 732 | for 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 | ||
789 | In order to download a file, you need the whole line returned by | 789 | In 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 | ||
828 | The command @command{gnunet-publish} can be used to add content | 828 | The command @command{gnunet-publish} can be used to add content |
829 | to the network. The basic format of the command is | 829 | to 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 | ||
849 | The option @code{-k} is used to specify keywords for the file that | 849 | The option @code{-k} is used to specify keywords for the file that |
850 | should be inserted. You can supply any number of keywords, | 850 | should 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 | ||
876 | By default, GNUnet indexes a file instead of making a full copy. | 876 | By default, GNUnet indexes a file instead of making a full copy. |
877 | This is much more efficient, but requires the file to stay unaltered | 877 | This 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 | ||
912 | For better results with filesharing it is useful to understand the | 912 | For better results with filesharing it is useful to understand the |
913 | following concepts. | 913 | following 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 | ||
941 | A file in GNUnet is just a sequence of bytes. Any file-format is allowed | 941 | A file in GNUnet is just a sequence of bytes. Any file-format is allowed |
942 | and the maximum file size is theoretically @math{2^64 - 1} bytes, except | 942 | and 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 | ||
951 | Keywords are the most simple mechanism to find files on GNUnet. | 951 | Keywords are the most simple mechanism to find files on GNUnet. |
952 | Keywords are @strong{case-sensitive} and the search string | 952 | Keywords 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 | ||
968 | A directory in GNUnet is a list of file identifiers with meta data. | 968 | A directory in GNUnet is a list of file identifiers with meta data. |
969 | The file identifiers provide sufficient information about the files | 969 | The 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 | ||
1050 | The anonymity level determines how hard it should be for an adversary to | 1050 | The anonymity level determines how hard it should be for an adversary to |
1051 | determine the identity of the publisher or the searcher/downloader. An | 1051 | determine 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 | ||
1064 | Depending on the peer's configuration, GNUnet peers migrate content | 1064 | Depending on the peer's configuration, GNUnet peers migrate content |
1065 | between peers. Content in this sense are individual blocks of a file, | 1065 | between 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 | ||
1081 | When peers migrate content to other systems, the replication level | 1081 | When peers migrate content to other systems, the replication level |
1082 | of a block is used to decide which blocks need to be migrated most | 1082 | of 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 | ||
1190 | GNUnet (currently) uses four different types of URIs for | 1190 | GNUnet (currently) uses four different types of URIs for |
1191 | file-sharing. They all begin with "gnunet://fs/". | 1191 | file-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 | ||
1212 | Most URIs include some hash values. Hashes are encoded using | 1212 | Most URIs include some hash values. Hashes are encoded using |
1213 | base32hex (RFC 2938). | 1213 | base32hex (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 | ||
1220 | A chk-URI is used to (uniquely) identify a file or directory | 1220 | A chk-URI is used to (uniquely) identify a file or directory |
1221 | and to allow peers to download the file. Files are stored in | 1221 | and 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 | ||
1237 | For non-anonymous file-sharing, loc-URIs are used to specify which | 1237 | For non-anonymous file-sharing, loc-URIs are used to specify which |
1238 | peer is offering the data (in addition to specifying all of the | 1238 | peer 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 | ||
1253 | A keyword-URI is used to specify that the desired operation | 1253 | A keyword-URI is used to specify that the desired operation |
1254 | is the search using a particular keyword. The format is simply | 1254 | is 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 | ||
1303 | To publish a file, select "File Sharing" in the menu bar just below the | 1303 | To 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 | ||
1366 | Below the menu bar, there are four entry widges labeled "Namespace", | 1366 | Below 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 | ||
1391 | In the downloading area, you can select the target directory (default is | 1391 | In 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 | ||
1419 | The GNU Name System (GNS) is secure and decentralized naming system. | 1419 | The GNU Name System (GNS) is secure and decentralized naming system. |
diff --git a/doc/tutorial/gnunet-tutorial.texi b/doc/tutorial/gnunet-tutorial.texi index ef3318cad..1dbed928c 100644 --- a/doc/tutorial/gnunet-tutorial.texi +++ b/doc/tutorial/gnunet-tutorial.texi | |||
@@ -4,7 +4,7 @@ | |||
4 | @documentencoding UTF-8 | 4 | @documentencoding UTF-8 |
5 | @settitle GNUnet Tutorial | 5 | @settitle GNUnet Tutorial |
6 | @c @exampleindent 2 | 6 | @c @exampleindent 2 |
7 | @c %**end of header | 7 | |
8 | 8 | ||
9 | @include version.texi | 9 | @include version.texi |
10 | 10 | ||