gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[www] branch master updated: - updated L2O NGI project page with milesto


From: gnunet
Subject: [www] branch master updated: - updated L2O NGI project page with milestones 4 info, and added EBNF for the configuration syntax.
Date: Mon, 10 Oct 2022 21:12:31 +0200

This is an automated email from the git hooks/post-receive script.

t3sserakt pushed a commit to branch master
in repository www.

The following commit(s) were added to refs/heads/master by this push:
     new 4b749f2  - updated L2O NGI project page with milestones 4 info, and 
added EBNF for the configuration syntax.
4b749f2 is described below

commit 4b749f2dde3c05df25354535688d803e3b2057b5
Author: t3sserakt <t3ss@posteo.de>
AuthorDate: Mon Oct 10 21:12:17 2022 +0200

    - updated L2O NGI project page with milestones 4 info, and added EBNF for 
the configuration syntax.
---
 template/l2o/index.html.j2  |  79 +++++++++++++--------------
 template/l2o/mile4.html.j2  | 107 +++++++++++++++++++++++++++++++++++++
 template/l2o/testng.html.j2 | 126 ++++++++++++++------------------------------
 3 files changed, 188 insertions(+), 124 deletions(-)

diff --git a/template/l2o/index.html.j2 b/template/l2o/index.html.j2
index 2c529f5..751ab5b 100644
--- a/template/l2o/index.html.j2
+++ b/template/l2o/index.html.j2
@@ -25,16 +25,16 @@
       <section>
         <p>
         {% trans %}
-          This project was funded through the NGI Assure Fund, a fund 
established by <a href="https://nlnet.nl/project/GNUnet-L2/";>NLnet</a>.
+          This project was funded through the NGI Assure Fund, a fund 
established by <a href="https://nlnet.nl/project/GNUnet-L2/";>NLnet</a>.</br>
         {% endtrans %}
         </p>
       </section>
 
 
-      <h2><a name="idea" class="subnav-anchor"></a>{{ _("Project motivation") 
}}</h2>
+      <h2><a name="idea" class="subnav-anchor"></a>{{ _("Project motivation") 
}}</h2></br>
 
       <section>
-        <h4>The GNUnet transport subsystem</h4>
+        <h4>The GNUnet transport subsystem</h4></br>
         <p>
           {% trans %}
          The <a 
href="https://docs.gnunet.org/handbook/gnunet.html#TRANSPORT-Subsystem";>current</a>
 GNUnet TRANSPORT architecture with its pluggable transport mechanism (TCP, 
UDP, HTTP(S) and other protocols) together with the ATS subsystem for bandwidth 
allocation and choosing plugins has several <a 
href="https://docs.gnunet.org/handbook/gnunet.html#TRANSPORT_002dNG-Subsystem";>issues</a>
 with its design.
@@ -44,38 +44,38 @@
          One major change in the design is to separate the protocol plugins 
into processes (now called communicators) detached from the main transport 
service. Three communicators were already implemented (TCP, UDP and UNIX 
sockets).
          The old transport code is hard to maintain, because it is cluttered 
with "manipulation" support code for TESTBED (the actual testing framework). 
Testing TRANSPORT is a hard task, especially with TESTBED which has its own 
design flaws, and test code which is very hard to read to get an idea what the 
test code is doing. Therefore the first task (milestone 1) is to implement a 
new testing framework which uses network namespaces to make testing of TNG much 
easier. Have a look into what is [...]
           {% endtrans %}
-        </p>
+        </p></br>
       </section>
 
-      <h2><a name="testframework" class="subnav-anchor"></a>{{ _("New Test 
Framwork") }}</h2>
+      <h2><a name="testframework" class="subnav-anchor"></a>{{ _("New Test 
Framwork") }}</h2></br>
 
-      <p>The new testing framework consists of two major parts. First the 
command style pattern borrowed from the GNU Taler project, second a network 
namespace setup, to have a suitable test setup for testing several network 
topologies with lossy connections, firewalls, etc..</p>
+      <p>The new testing framework consists of two major parts. First the 
command style pattern borrowed from the GNU Taler project, second a network 
namespace setup, to have a suitable test setup for testing several network 
topologies with lossy connections, firewalls, etc..</p></br>
 
-      <h3><a name="cmd" class="subnav-anchor"></a>{{ _("Command Style 
Pattern") }}</h3>
+      <h3><a name="cmd" class="subnav-anchor"></a>{{ _("Command Style 
Pattern") }}</h3></br>
       
       <section>
         <p>
           {% trans %}
          The new style of writing tests in GNUnet is borrowed from the <a 
href="https://docs.taler.net/developers-manual.html#testing-library";>GNU Taler 
testing library</a>. In <a href="#milestone1">milestone 1</a> we implemented 
commands to setup the <a href="#netjails">netjails</a>, the test environment 
for each peer, to start a single peers and sending a simple test message. 
Because some commands depend on other commands to be finished, and those 
commands are asynchronous, we needed additio [...]
             {% endtrans %}
-        </p>
+        </p></br>
       </section>
 
-      <h3><a name="netjails" class="subnav-anchor"></a>{{ _("Netjails") }}</h3>
+      <h3><a name="netjails" class="subnav-anchor"></a>{{ _("Netjails") 
}}</h3></br>
       
       <section>
         <p>
           {% trans %}
                  To do extensive testing of the new transport implementation 
one needs to simulate various network topologies to enable faking network 
characteristics like lossy connections or firewalls. To achieve this we are 
working with <a 
href="https://www.man7.org/linux/man-pages/man8/ip-netns.8.html";>network 
namespace</a>. We have commands for starting and stopping network namespaces. 
Those commands are scripts, which are using several shell commands to setup the 
network namespace. A [...]
             {% endtrans %}
-        </p>
+        </p></br>
       </section>
 
-      <h2><a name="milestones" class="subnav-anchor"></a>{{ _("Milestones") 
}}</h2>
+      <h2><a name="milestones" class="subnav-anchor"></a>{{ _("Milestones") 
}}</h2></br>
 
-      <p>The next milestone to be reached is milestone 4.</p>
+      <p>The next milestone to be reached is milestone 5.</p></br>
 
-      <h3><a name="milestone1" class="subnav-anchor"></a>{{ _("Milestone 1 
Test Infrastructure and minimal Test Case") }}</h3>
+      <h3><a name="milestone1" class="subnav-anchor"></a>{{ _("Milestone 1 
Test Infrastructure and minimal Test Case") }}</h3></br>
       <section>
         <p>
           {% trans %}
@@ -85,20 +85,20 @@
     <li>SUID helpers to setup network namespace and starting peers with 
network namespace.</li>
     <li>Basic transport-level operations (get address, send, receive, 
connect).</li>
     <li>Peers connected through test and transfer data.</li>
-    </ul>
+    </ul></br>
             {% endtrans %}
         </p>
-       <h4>Deliverable</h4>
+       <h4>Deliverable</h4></br>
        <p>
           {% trans %}
          First MVP which uses the TCP communicator to send messages between 
peers. The deliverable can be verified through out the specific test cases 
running in the GNUnet CI.
 
          <a href="mile1.html">Details</a>
          {% endtrans %}
-        </p>
+        </p></br>
       </section>
 
-      <h3><a name="milestone2" class="subnav-anchor"></a>{{ _("Milestone 2 
Enhancing Test Framework") }}</h3>
+      <h3><a name="milestone2" class="subnav-anchor"></a>{{ _("Milestone 2 
Enhancing Test Framework") }}</h3></br>
       <section>
         <p>
           {% trans %}
@@ -108,18 +108,18 @@
     <li>Block execution of commands at a peer. (Barriers).</li>
     </ul>
             {% endtrans %}
-        </p>
-       <h4>Deliverable</h4>
+        </p></br>
+       <h4>Deliverable</h4></br>
        <p>
           {% trans %}
-         Outcome of this deliverable are advanced test case (again verifiable 
in the GNUnet continuous integration (CI)).
+         Outcome of this deliverable are advanced test cases (again verifiable 
in the GNUnet continuous integration (CI)).
 
 <a href="mile2.html">Details</a>
          {% endtrans %}
-        </p>
+        </p></br>
       </section>
 
-      <h3><a name="milestone3" class="subnav-anchor"></a>{{ _("Milestone 3 UDP 
integration") }}</h3>
+      <h3><a name="milestone3" class="subnav-anchor"></a>{{ _("Milestone 3 UDP 
integration") }}</h3></br>
       <section>
         <p>
           {% trans %}
@@ -129,33 +129,34 @@
     <li>UDP broadcast.</li>
     </ul>
             {% endtrans %}
-        </p>
+        </p></br>
        <h4>Deliverable</h4>
        <p>
           {% trans %}
-         The CI contains test case which uses the UDP protocol to message 
between peers and to learn about “foreign” peers.
+         The CI contains test cases which uses the UDP protocol to message 
between peers and to learn about “foreign” peers.
 
          <a href="mile3.html">Details</a>
          {% endtrans %}
-        </p>
+        </p></br>
       </section>
 
-      <h3><a name="milestone4" class="subnav-anchor"></a>{{ _("Milestone 4 
Distance Vector") }}</h3>
+      <h3><a name="milestone4" class="subnav-anchor"></a>{{ _("Milestone 4 
Distance Vector") }}</h3></br>
       <section>
         <p>
           {% trans %}
-            In this subtask I will enhance connectivity to peers not directly 
connected. Therefore peers have to act as relay. To achieve this I will 
implement the distance vector protocol.
+            In this subtask I will enhance connectivity to peers not directly 
connected. Therefore peers have to act as relay. To achieve this there is the 
distance vector protocol. The DV algorithm sends out so called learn messages 
to other peers. If those learn messages are coming back to the initiating peer 
via some other peer and the path does not return to any other peer we have a 
circle path. If there are bidirectional connections between peers somewhere in 
the DV path and the lea [...]
             {% endtrans %}
-        </p>
-       <h4>Deliverable</h4>
+        </p></br>
+       <h4>Deliverable</h4></br>
        <p>
           {% trans %}
-         The CI contains test cases with a setup of peers not connected 
directly. The test cases proof that each peer can reach any other peer.
+         The CI contains test cases with a setup of peers not connected 
directly. The test cases proof that each peer can reach any other peer. We have 
test cases for the circle path and for the inverse path.
+         <a href="mile4.html">Details</a>
          {% endtrans %}
-        </p>
+        </p></br>
       </section>
 
-      <h3><a name="milestone5" class="subnav-anchor"></a>{{ _("Milestone 5 NAT 
Traversal") }}</h3>
+      <h3><a name="milestone5" class="subnav-anchor"></a>{{ _("Milestone 5 NAT 
Traversal") }}</h3><br/>
       <section>
         <p>
           {% trans %}
@@ -165,17 +166,17 @@
     <li>Autonomous NAT Traversal using fake ICMP messages.</li>
     </ul>
             {% endtrans %}
-        </p>
-       <h4>Deliverable</h4>
+        </p><br/>
+       <h4>Deliverable</h4><br/>
        <p>
           {% trans %}
          The CI contains test case with a peer setup containing peer behind a 
NAT. The test cases 
        proof that each peer can be reached, even if that peer is behind a NAT. 
The test case are       measuring the performance. This measurement is used to 
compare with the outcome of the  next milestone. This result of this milestone 
will be a first stable release. 
          {% endtrans %}
-        </p>
+        </p><br/>
       </section>
 
-      <h3><a name="milestone6" class="subnav-anchor"></a>{{ _("Milestone 6 
Optimization") }}</h3>
+      <h3><a name="milestone6" class="subnav-anchor"></a>{{ _("Milestone 6 
Optimization") }}</h3><br/>
       <section>
         <p>
           {% trans %}
@@ -195,15 +196,15 @@ I will finish the project with a performance analysis to 
optimize the selection
     <li>Performance analysis.</li>
     </ul>
             {% endtrans %}
-        </p>
-       <h4>Deliverable</h4>
+        </p><br/>
+       <h4>Deliverable</h4><br/>
        <p>
           {% trans %}
                The test cases in the CI are measuring the performance gains. 
This measurement can be compared with the measurement of milestone 5. Again one 
outcome of this milestone will be a stable release.
 
       Documentation of the interpeer project analysis.
          {% endtrans %}
-        </p>
+        </p><br/>
       </section>
 
       
diff --git a/template/l2o/mile4.html.j2 b/template/l2o/mile4.html.j2
new file mode 100644
index 0000000..5e7d3a1
--- /dev/null
+++ b/template/l2o/mile4.html.j2
@@ -0,0 +1,107 @@
+{% extends "common/base.j2" %}
+{% block body_content %}
+<article class="container">
+
+  <header>
+    <h1>{{ _("NGI Assure project: Layer-2-Overlay") }}</h1>
+  </header>
+
+  <div class="row">
+    <div class="col-2 d-none d-lg-block"><!-- for large viewports show menu 
for better orientation -->
+      <nav class="nav subnav position-fixed flex-column border-right" 
style="position:fixed">
+      <a class="nav-link" href="index.html#idea">{{ _("Project main page") 
}}</a>
+      </nav>
+    </div>
+    <div class="col">
+
+      <h2>Implementation details milestone 4</h2><br/>
+
+      <section>
+        <h4><a name="netjail" class="subnav-anchor"></a>{{ _("TNG Service") 
}}</h4><br/>
+        <p>
+          {% trans %}
+         <ul>
+               <li>Added caching for Core messages, if confirmed virtual link 
is missing.</li>
+               <li>Addd caching for DV forwarding, if confirmed virtual link 
is missing.</li>
+               <li>Fixed bugs in fragmentation logic.</li>
+               <li>Fixed bugs in fragmentation logic.</li>
+               <li>Fixed bugs in flow control logic.</li>
+               <li>Fixed Bug with lifetime of DV learn message. (Validation 
against replay attack still missing.)</li>
+               <li>Fixed Bug in rekeying logic of the TCP communicator</li>
+         </ul>
+         {% endtrans %}
+        </p>
+       <p>
+       Even more details in commits fc99f54070e04c043c14f2244f85833ecf6b00c4, 
95a1edacccd9b3bf769a144a12d41946d0ac25dc and 
247230d737e3e4709392148bfabbde25871b6914
+       </p>
+      </section>
+
+      <section>
+        <h4><a name="netjail" class="subnav-anchor"></a>{{ _("Master Loop") 
}}</h4>
+        <p>
+          {% trans %}
+         <table width="100%">
+               <tr>
+                       <td width="60%" style="vertical-align: 
top;">src/transport/test_transport_simple_send_dv_inverse.sh</td><td 
width="55%" style="vertical-align: top;">Added script to start the inverse 
distance vector test case.</td>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="60%" style="vertical-align: 
top;">src/transport/test_transport_simple_send_dv_circle.sh</td><td width="55%" 
style="vertical-align: top;">Added script to start the circle distance vector 
test case.</td>
+               <tr>
+         </table>
+          {% endtrans %}
+        </p>
+       <h4><a name="netjail" class="subnav-anchor"></a>{{ _("Local Loop") 
}}</h4>
+        <p>
+          {% trans %}
+         <table width="100%">
+                <tr>
+                       <td width="60%" style="vertical-align: 
top;">src/transport/transport_api_cmd_connecting_peers.c</td><td width="40%" 
style="vertical-align: top;">Added logic to handle counting additonal 
connection per peer.</td>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="60%" style="vertical-align: 
top;">src/transport/test_transport_plugin_cmd_simple_send_dv.c</td><td 
width="40%" style="vertical-align: top;">Added plugin which creates the 
commands for the distance vector test cases.</td>
+               <tr>
+         </table>
+          {% endtrans %}
+        </p>
+       <h4><a name="netjail" class="subnav-anchor"></a>{{ _("Configuration") 
}}</h4>
+        <p>
+          {% trans %}
+         <table width="100%">
+                <tr>
+                       <td width="60%" style="vertical-align: 
top;">src/transport/test_transport_distance_vector_inverse_topo.conf</td><td 
width="40%" style="vertical-align: top;">Configuration for the DV inverse path 
test case.</td>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="60%" style="vertical-align: 
top;">src/transport/test_transport_distance_vector_circle_topo.conf</td><td 
width="40%" style="vertical-align: top;">Configuration for the DV circle path 
test case.</td>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="60%" style="vertical-align: 
top;">src/testing/netjail_start.sh</td><td width="40%" style="vertical-align: 
top;">Enhanced port forwarding configuration to restrict port forwarding to 
specific source IPs.</td>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="60%" style="vertical-align: 
top;">contrib/netjail/topo.sh</td><td width="40%" style="vertical-align: 
top;">Make specific nodes configurable as source node for IP forwarding.</td>
+               <tr>
+                       <td></td><td> </td>
+               </tr>
+               <tr>
+                       <td width="60%" style="vertical-align: 
top;">src/testing/testing.c</td><td width="40%" style="vertical-align: 
top;">Helper methods to retrieve the number of additional connections globally 
and per peer, and which peer is allowed as source for IP forwarding.</td>
+               <tr>
+         </table>
+          {% endtrans %}
+        </p>
+      </section>
+
+      
+    </div>
+  </div>
+
+</article>
+{% endblock body_content %}
\ No newline at end of file
diff --git a/template/l2o/testng.html.j2 b/template/l2o/testng.html.j2
index 08f0119..5b56746 100644
--- a/template/l2o/testng.html.j2
+++ b/template/l2o/testng.html.j2
@@ -14,10 +14,10 @@
     </div>
     <div class="col">
 
-      <h2>The next generation testing framework</h2>
+      <h2>The next generation testing framework</h2><br/>
 
       <section>
-        <h4><a name="netjail" class="subnav-anchor"></a>{{ _("Netjail setup 
and execution") }}</h4>
+        <h4><a name="netjail" class="subnav-anchor"></a>{{ _("Netjail setup 
and execution") }}</h4><br/>
         <p>
           {% trans %}
          Netjail is the GNUnet naming for having several <a 
href="https://www.man7.org/linux/man-pages/man8/ip-netns.8.html";>network 
namespaces</a>, being isolated from each other to test how GNUnet nodes with 
limited connectivity behave, and how the new transport next generation 
implementation can help to circumvent the connectivity obstacles. The network 
namespaces are span a network with globally known nodes and several subnets 
separated from each other via a single router.
@@ -32,10 +32,10 @@
 
            The is a generic test binary (test_transport_start_with_config) 
which will start the above mentioned scripts. Because creating network 
namespaces is only permitted for privileged users the generic test binary is 
not start directly, but via scripts. This script starts the generic binary 
using the command unshare. Using unshare one can create a namespace with its 
own user namespace, where creating network namespaces is allowed. Precondition 
to do this with unshare, is to set the kerne [...]
           {% endtrans %}
-        </p>
+        </p><br/>
       </section>
 
-      <h4><a name="cmdhelper" class="subnav-anchor"></a>{{ _("CMD helper and 
testcase plugins") }}</h4>
+      <h4><a name="cmdhelper" class="subnav-anchor"></a>{{ _("CMD helper and 
testcase plugins") }}</h4><br/>
       
       <section>
         <p>
@@ -43,18 +43,18 @@
          Although netjail_exec.sh can execute an arbitrary command in the ng 
testing framework a special command is used: gnunet-cmds-helper
          This commands itself is of a special kind named helper processes 
which communicates via GNUNET_MessageHeaders on stdin/stdout with the process 
that started the helper. The gnunet-cmds-helper is used to load testcase 
plugins. Those plugins are implementations of an api which is used to start 
different test cases. Those plugins are dynamically loaded by 
gnunet-cmds-helper. Each plugin defines the commands which are running in a 
local interpreter loop started by the helper on that specif [...]
             {% endtrans %}
-        </p>
+        </p><br/>
       </section>
-      <h4><a name="cmdpattern" class="subnav-anchor"></a>{{ _("Command 
Pattern") }}</h4>
+      <h4><a name="cmdpattern" class="subnav-anchor"></a>{{ _("Command 
Pattern") }}</h4><br/>
       
       <section>
         <p>
           {% trans %}
          The testing framework borrowed from the <a 
href="https://docs.taler.net/developers-manual.html#testing-library";>GNU Taler 
testing library</a> was extended to handle asychronous commands. Therefore a 
struct GNUNET_TESTING_AsyncContext was added to struct GNUNET_TESTING_Command. 
By default the continuation function of GNUNET_TESTING_AsyncContext is the 
interpreter_next function of the interpreter loop (blocking asynchronous 
command) which will be executed calling GNUNET_TESTING_async_fi [...]
           {% endtrans %}
-        </p>
+        </p><br/>
       </section>
-      <h4><a name="cmdpattern" class="subnav-anchor"></a>{{ _("Topology 
Configuration") }}</h4>
+      <h4><a name="cmdpattern" class="subnav-anchor"></a>{{ _("Topology 
Configuration") }}</h4><br/>
       
       <section>
         <p>
@@ -71,83 +71,39 @@ test_transport_send_simple_string.sh</br></br>
 
 The Syntax of the configuration is as follows.</br></br> 
 
-The configuration string is structured by lines and the delimiter ':' used for 
seperating key/value(s) pairs and the chars '{' and '}' for grouping several 
key/value pairs as value and '|' to separate a group of values from the 
key/value(s) pair identifying a line.</br></br>
-
-Keys are</br></br>
-
-<table width="100%">
-               <tr>
-                       <td width="10%" style="vertical-align: top;">M</td><td 
width="90%" style="vertical-align: top;">The number of natted subnets in the 
topology.</td>
-               </tr>
-               <tr>
-                       <td></td><td> </td>
-               </tr>
-               <tr>
-                       <td width="10%" style="vertical-align: top;">N</td><td 
width="90%" style="vertical-align: top;">The number of nodes in each 
subnet.</td>
-               </tr>
-               <tr>
-                       <td></td><td> </td>
-               </tr>
-               <tr>
-                       <td width="10%" style="vertical-align: top;">X</td><td 
width="90%" style="vertical-align: top;">The Number of globally known (not 
natted) nodes.</td>
-               </tr>
-               <tr>
-                       <td></td><td> </td>
-               </tr>
-               <tr>
-                       <td width="10%" style="vertical-align: top;">K</td><td 
width="90%" style="vertical-align: top;"> A globally known (not natted) node. 
The number value identifies the node.</td>
-               </tr>
-               <tr>
-                       <td></td><td> </td>
-               </tr>
-               <tr>
-                       <td width="10%" style="vertical-align: top;">T</td><td 
width="90%" style="vertical-align: top;">The default test plugin to 
execute.</td>
-               </tr>
-               <tr>
-                       <td></td><td> </td>
-               </tr>
-               <tr>
-                       <td width="10%" style="vertical-align: top;">R</td><td 
width="90%" style="vertical-align: top;">A router of a subnet.</td>
-               </tr>
-               <tr>
-                       <td></td><td> </td>
-               </tr>
-               <tr>
-                       <td width="10%" style="vertical-align: top;">P</td><td 
width="90%" style="vertical-align: top;">A subnet node with two key values, the 
first one for identifying the subnet and the second for identifying the node in 
the subnet.</td>
-               </tr>
-               <tr>
-                       <td></td><td> </td>
-               </tr>
-               <tr>
-                       <td width="10%" style="vertical-align: 
top;">connect</td><td width="90%" style="vertical-align: top;">Can be one of 
several grouped values of the P, K or R key. Configuring a connection to 
another node. </br></br>
-
-            The value of the connect key is a node key (P or K) with two resp. 
one number value identifying the node, and an additional value    
-            configuring a protocol. </br></br>
-
-            If the connect key is used in a line configuring a node it is used 
to configure a connection, which will result in the node identified by the 
-            line P or K key will try to connect nodes also identified with the 
P or K key via the configured protocol.</td>
-               </tr>
-               <tr>
-                       <td></td><td> </td>
-               </tr>
-               <tr>
-                       <td width="10%" style="vertical-align: 
top;">tcp_port</td><td width="90%" style="vertical-align: top;">Can be a 
grouped value of the R key. The value of the tcp_port can be 0 or 1, if a port 
forwarding to the first (index 1) node of a subnet is not or is configured for 
the 
-           tcp protocol.</td>
-               </tr>
-               <tr>
-                       <td></td><td> </td>
-               </tr>
-               <tr>
-                       <td width="10%" style="vertical-align: 
top;">udp_port</td><td width="90%" style="vertical-align: top;">Can be a 
grouped value of the R key. The value of the tcp_port can be 0 or 1, if a port 
forwarding to the first (index 1) node of a subnet is not or is configured for 
the 
-           udp protocol.</td>
-               </tr>
-               <tr>
-                       <td></td><td> </td>
-               </tr>
-               <tr>
-                       <td width="10%" style="vertical-align: 
top;">plugin</td><td width="90%" style="vertical-align: top;">Can be a grouped 
value of the P or K key. The value is the name of a plugin which will run on 
that peer instead of the default plugin defined by key K.</td>
-               </tr>
-           </table>    
+The configuration string is structured by lines and the delimiter ':' used for 
seperating key/value(s) pairs and the chars '{' and '}' for grouping several 
key/value pairs as value and '|' to separate a group of values from the 
key/value(s) pair identifying a line. Below you find the EBNF of the 
configuration syntax.</br></br>
+
+config = line, {line} ;<br/><br/>
+line = ( "M:", NumberOfNodesPerSubnet ) | ( "N:", NumberOfSubnets ) | ( "X:", 
NumberOfGlobalNodes ) | NumberOfAdditionalConnections | ( "T:", 
GlobalPluginName ) | ( GlobalPeer, "|", KValue ) | ( "R:", IndexOfSubnetRouter, 
"|", RValue ) | ( SubnetPeer, "|", PValue ) ;<br/><br/>
+NumberOfNodesPerSubnet = Zero | NaturalNumber ;<br/><br/>
+NumberOfSubnets = NaturalNumber ;<br/><br/>
+NumberOfGlobalNodes = NaturalNumber ;<br/><br/>
+NumberOfAdditionalConnections = "AC:", NaturalNumber 
+GlobalPluginName = "libgnunet_test_transport_plugin_cmd_", PluginName 
;<br/><br/>
+GlobalPeer = "K", ":", IndexOfGlobalNode ;<br/><br/>
+KValue = EstablishConnectionToPeerViaProtocol ;<br/><br/>
+IndexOfSubnetRouter = Zero | NaturalNumber ;<br/><br/>
+RValue = "{", ProtocolPortToOpen, ":", switch, "}" ;<br/><br/>
+SubnetPeer = "P:", SubnetIndex, ":", NodeIndexInSubnet ;<br/><br/>
+PValue = EstablishConnectionToPeerViaProtocol, "|", { "{", 
NumberOfAdditionalConnections, "}" } ;<br/><br/>
+Zero = "0" ;<br/><br/>
+NaturalNumber = NumeralWithoutZero, { Numeral } ;<br/><br/>
+PluginName = Letter , { ( Letter | "_" ) } ;<br/><br/>
+IndexOfGlobalNode = Zero | NaturalNumber ;<br/><br/>
+EstablishConnectionToPeerViaProtocol = "{" "connect", ":" 
EstablishConnectionToPeerViaProtocolValue "}" ;<br/><br/>
+ProtocolPortToOpen = "tcp_port" | "udp_port" ;<br/><br/>
+switch = On | Off ;<br/><br/>
+SubnetIndex = NaturalNumber ;<br/><br/>
+NodeIndexInSubnet = NaturalNumber ;<br/><br/>
+NumeralWithoutZero = "0" | Numeral ;<br/><br/>
+Numeral = "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;<br/><br/>
+Letter = "A" | "B" | ... | "Z" | "a" | ... | "z";<br/><br/>
+EstablishConnectionToPeerViaProtocolValue = "{", ( GlobalPeer | SubnetPeer ), 
":", Protocol, "}" ;<br/><br/>
+On = 1 ;<br/><br/>
+Off = 0 ;<br/><br/>
+Protocol = "tcp" | "udp" ;<br/><br/>
+on = "1" ;<br/><br/>
+off = "0" ;<br/><br/>
           {% endtrans %}
         </p>
       </section>

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]