From 7a331a8b607280dc4aa1060ec043d24e64799cca Mon Sep 17 00:00:00 2001
From: Mark Qvist
Date: Fri, 13 May 2022 20:19:54 +0200
Subject: [PATCH] Added interface modes to documentation
---
docs/manual/.buildinfo | 2 +-
docs/manual/_sources/interfaces.rst.txt | 54 ++++++++++++++
docs/manual/_sources/understanding.rst.txt | 35 ++++++++++
docs/manual/_static/documentation_options.js | 2 +-
docs/manual/examples.html | 8 +--
docs/manual/genindex.html | 8 +--
docs/manual/gettingstartedfast.html | 8 +--
docs/manual/index.html | 10 +--
docs/manual/interfaces.html | 70 +++++++++++++++++--
docs/manual/networks.html | 8 +--
docs/manual/objects.inv | Bin 1879 -> 1906 bytes
docs/manual/reference.html | 8 +--
docs/manual/search.html | 8 +--
docs/manual/searchindex.js | 2 +-
docs/manual/understanding.html | 37 ++++++++--
docs/manual/using.html | 8 +--
docs/manual/whatis.html | 8 +--
docs/source/conf.py | 4 +-
docs/source/interfaces.rst | 54 ++++++++++++++
docs/source/understanding.rst | 35 ++++++++++
20 files changed, 320 insertions(+), 49 deletions(-)
diff --git a/docs/manual/.buildinfo b/docs/manual/.buildinfo
index 255df31..cd725d4 100644
--- a/docs/manual/.buildinfo
+++ b/docs/manual/.buildinfo
@@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
-config: d4939f555bda9c488f47cdcede85949d
+config: cb185315f69a86407f1dca0f5d7d25ef
tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/docs/manual/_sources/interfaces.rst.txt b/docs/manual/_sources/interfaces.rst.txt
index c0c613a..25b7669 100644
--- a/docs/manual/_sources/interfaces.rst.txt
+++ b/docs/manual/_sources/interfaces.rst.txt
@@ -84,6 +84,60 @@ These can be used to control various aspects of interface behaviour.
option, to set the interface speed in *bits per second*.
+.. _interfaces-modes:
+
+Interface Modes
+===============
+
+The optional ``mode`` option is available on all interfaces, and allows
+selecting the high-level behaviour of the interface from a number of modes.
+These modes affect how Reticulum selects paths in the network, how announces
+are propagated and how long paths are valid.
+
+Configuring modes on interfaces is not strictly necessary, but can be useful
+when building or connecting to more complex networks. When not running a
+Transport Node, it is rarely useful to configure an interface mode.
+
+ * | The default value is ``full``. In this mode, all discovery,
+ meshing and transport functionality is activated.
+
+ * | In the ``access_point`` (or shorthand ``ap``) mode, the
+ interface will operate as a network access point. In this
+ mode, announces will not be automatically broadcasted on
+ the interface, and paths to destinations on the interface
+ will have a much shorter expiry time. This mode is useful
+ for creating interfaces that are mostly quiet, unless when
+ someone is actually using them. An example of this could
+ be a radio interface serving a wide area, where users are
+ expected to connect momentarily, use the network, and then
+ disappear again.
+
+ * | The ``roaming`` mode should be used on interfaces that are
+ roaming (physically mobile), seen from the perspective of
+ other nodes in the network. As an example, if a vehicle is
+ equipped with an external LoRa interface, and an internal,
+ WiFi-based interface, that serves devices that are moving
+ _with_ the vehicle, the external LoRa interface should be
+ configured as ``roaming``, and the internal interface can
+ be left in the default mode. With transport enabled, such
+ a setup will allow all internal devices to reach each other,
+ and all other devices that are available on the LoRa side
+ of the network, when they are in range. Devices on the LoRa
+ side of the network will also be able to reach devices
+ internal to the vehicle, when it is in range. Paths via
+ ``roaming`` interfaces also expire faster.
+
+ * | The purpose of the ``boundary`` mode is to specify interfaces
+ that establish connectivity with network segments that are
+ significantly different than the one this node exists on.
+ As an example, if a Reticulum instance is part of a LoRa-based
+ network, but also has a high-speed connection to a
+ public Transport Node available on the Internet, the interface
+ connecting over the Internet should be set to ``boundary`` mode.
+
+For a table describing the impact of all modes on announce propagation,
+please see the :ref:`Announce Propagation Rules` section.
+
.. _interfaces-auto:
Auto Interface
diff --git a/docs/manual/_sources/understanding.rst.txt b/docs/manual/_sources/understanding.rst.txt
index c2bdab9..a32ad5c 100644
--- a/docs/manual/_sources/understanding.rst.txt
+++ b/docs/manual/_sources/understanding.rst.txt
@@ -802,3 +802,38 @@ Wire Format
- Link Proof : 77 bytes
- Link RTT packet : 83 bytes
- Link keepalive : 14 bytes
+
+
+.. _understanding-announcepropagation:
+
+Announce Propagation Rules
+--------------------------
+
+The following table illustrates the rules for automatically propagating announces
+from one interface type to another, for all possible combinations. See the
+:ref:`Interface Modes` section for a conceptual overview of the
+different interface modes, and how they are configured.
+
+.. code-block:: text
+
+ Full ────── ✓ ──┐ ┌── ✓ ── Full
+ AP ──────── ✓ ──┼──── Full ────┼── ✕ ── AP
+ Boundary ── ✓ ──┤ ├── ✓ ── Boundary
+ Roaming ─── ✓ ──┘ └── ✓ ── Roaming
+
+ Full ────── ✕ ──┐ ┌── ✓ ── Full
+ AP ──────── ✕ ──┼───── AP ─────┼── ✕ ── AP
+ Boundary ── ✕ ──┤ ├── ✓ ── Boundary
+ Roaming ─── ✕ ──┘ └── ✓ ── Roaming
+
+ Full ────── ✓ ──┐ ┌── ✓ ── Full
+ AP ──────── ✓ ──┼── Roaming ───┼── ✕ ── AP
+ Boundary ── ✕ ──┤ ├── ✕ ── Boundary
+ Roaming ─── ✕ ──┘ └── ✕ ── Roaming
+
+ Full ────── ✓ ──┐ ┌── ✓ ── Full
+ AP ──────── ✓ ──┼── Boundary ──┼── ✕ ── AP
+ Boundary ── ✓ ──┤ ├── ✓ ── Boundary
+ Roaming ─── ✕ ──┘ └── ✕ ── Roaming
+
+
diff --git a/docs/manual/_static/documentation_options.js b/docs/manual/_static/documentation_options.js
index 943ff2b..8f973da 100644
--- a/docs/manual/_static/documentation_options.js
+++ b/docs/manual/_static/documentation_options.js
@@ -1,6 +1,6 @@
var DOCUMENTATION_OPTIONS = {
URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
- VERSION: '0.3.5 beta',
+ VERSION: '0.3.6 beta',
LANGUAGE: 'None',
COLLAPSE_INDEX: false,
BUILDER: 'html',
diff --git a/docs/manual/examples.html b/docs/manual/examples.html
index 7d478e0..f569668 100644
--- a/docs/manual/examples.html
+++ b/docs/manual/examples.html
@@ -5,7 +5,7 @@
- Code Examples — Reticulum Network Stack 0.3.5 beta documentation
+ Code Examples — Reticulum Network Stack 0.3.6 beta documentation
@@ -27,7 +27,7 @@
previous |
- Reticulum Network Stack 0.3.5 beta documentation »
+ Reticulum Network Stack 0.3.6 beta documentation »
Code Examples
@@ -2366,12 +2366,12 @@ interface to efficiently pass files of any size over a Reticulum
previous |
- Reticulum Network Stack 0.3.5 beta documentation »
+ Reticulum Network Stack 0.3.6 beta documentation »
Code Examples
diff --git a/docs/manual/genindex.html b/docs/manual/genindex.html
index ba1395e..f9b61e9 100644
--- a/docs/manual/genindex.html
+++ b/docs/manual/genindex.html
@@ -5,7 +5,7 @@
- Index — Reticulum Network Stack 0.3.5 beta documentation
+ Index — Reticulum Network Stack 0.3.6 beta documentation
@@ -23,7 +23,7 @@
index
- Reticulum Network Stack 0.3.5 beta documentation »
+ Reticulum Network Stack 0.3.6 beta documentation »
Index
@@ -418,12 +418,12 @@
index
- Reticulum Network Stack 0.3.5 beta documentation »
+ Reticulum Network Stack 0.3.6 beta documentation »
Index
diff --git a/docs/manual/gettingstartedfast.html b/docs/manual/gettingstartedfast.html
index ca0a6d1..697f050 100644
--- a/docs/manual/gettingstartedfast.html
+++ b/docs/manual/gettingstartedfast.html
@@ -5,7 +5,7 @@
- Getting Started Fast — Reticulum Network Stack 0.3.5 beta documentation
+ Getting Started Fast — Reticulum Network Stack 0.3.6 beta documentation
@@ -31,7 +31,7 @@
previous |
- Reticulum Network Stack 0.3.5 beta documentation »
+ Reticulum Network Stack 0.3.6 beta documentation »
Getting Started Fast
@@ -384,12 +384,12 @@ and propose adding an interface for the hardware.
previous |
- Reticulum Network Stack 0.3.5 beta documentation »
+ Reticulum Network Stack 0.3.6 beta documentation »
Getting Started Fast
diff --git a/docs/manual/index.html b/docs/manual/index.html
index 5fb45e4..1a64ba7 100644
--- a/docs/manual/index.html
+++ b/docs/manual/index.html
@@ -5,7 +5,7 @@
- Reticulum Network Stack Manual — Reticulum Network Stack 0.3.5 beta documentation
+ Reticulum Network Stack Manual — Reticulum Network Stack 0.3.6 beta documentation
@@ -27,7 +27,7 @@
next |
- Reticulum Network Stack 0.3.5 beta documentation »
+ Reticulum Network Stack 0.3.6 beta documentation »
Reticulum Network Stack Manual
@@ -96,6 +96,7 @@ to participate in the development of Reticulum itself.
Supported Interfaces
@@ -218,12 +220,12 @@ to participate in the development of Reticulum itself.
next |
- Reticulum Network Stack 0.3.5 beta documentation »
+ Reticulum Network Stack 0.3.6 beta documentation »
Reticulum Network Stack Manual
diff --git a/docs/manual/interfaces.html b/docs/manual/interfaces.html
index f307b54..5d17aa8 100644
--- a/docs/manual/interfaces.html
+++ b/docs/manual/interfaces.html
@@ -5,7 +5,7 @@
- Supported Interfaces — Reticulum Network Stack 0.3.5 beta documentation
+ Supported Interfaces — Reticulum Network Stack 0.3.6 beta documentation
@@ -31,7 +31,7 @@
previous |
- Reticulum Network Stack 0.3.5 beta documentation »
+ Reticulum Network Stack 0.3.6 beta documentation »
Supported Interfaces
@@ -135,6 +135,67 @@ option, to set the interface speed in bits per second .
+
+
Interface Modes
+
The optional mode
option is available on all interfaces, and allows
+selecting the high-level behaviour of the interface from a number of modes.
+These modes affect how Reticulum selects paths in the network, how announces
+are propagated and how long paths are valid.
+
Configuring modes on interfaces is not strictly necessary, but can be useful
+when building or connecting to more complex networks. When not running a
+Transport Node, it is rarely useful to configure an interface mode.
+
+
+
+
The default value is full
. In this mode, all discovery,
+meshing and transport functionality is activated.
+
+
+
+
In the access_point
(or shorthand ap
) mode, the
+interface will operate as a network access point. In this
+mode, announces will not be automatically broadcasted on
+the interface, and paths to destinations on the interface
+will have a much shorter expiry time. This mode is useful
+for creating interfaces that are mostly quiet, unless when
+someone is actually using them. An example of this could
+be a radio interface serving a wide area, where users are
+expected to connect momentarily, use the network, and then
+disappear again.
+
+
+
+
The roaming
mode should be used on interfaces that are
+roaming (physically mobile), seen from the perspective of
+other nodes in the network. As an example, if a vehicle is
+equipped with an external LoRa interface, and an internal,
+WiFi-based interface, that serves devices that are moving
+_with_ the vehicle, the external LoRa interface should be
+configured as roaming
, and the internal interface can
+be left in the default mode. With transport enabled, such
+a setup will allow all internal devices to reach each other,
+and all other devices that are available on the LoRa side
+of the network, when they are in range. Devices on the LoRa
+side of the network will also be able to reach devices
+internal to the vehicle, when it is in range. Paths via
+roaming
interfaces also expire faster.
+
+
+
+
The purpose of the boundary
mode is to specify interfaces
+that establish connectivity with network segments that are
+significantly different than the one this node exists on.
+As an example, if a Reticulum instance is part of a LoRa-based
+network, but also has a high-speed connection to a
+public Transport Node available on the Internet, the interface
+connecting over the Internet should be set to boundary
mode.
+
+
+
+
+
For a table describing the impact of all modes on announce propagation,
+please see the Announce Propagation Rules section.
+
Auto Interface
The Auto Interface enables communication with other discoverable Reticulum
@@ -580,6 +641,7 @@ beaconing functionality described above.
diff --git a/docs/manual/networks.html b/docs/manual/networks.html
index afb889a..3343d67 100644
--- a/docs/manual/networks.html
+++ b/docs/manual/networks.html
@@ -5,7 +5,7 @@
- Building Networks — Reticulum Network Stack 0.3.5 beta documentation
+ Building Networks — Reticulum Network Stack 0.3.6 beta documentation
@@ -31,7 +31,7 @@
previous |
- Reticulum Network Stack 0.3.5 beta documentation »
+ Reticulum Network Stack 0.3.6 beta documentation »
Building Networks
@@ -272,12 +272,12 @@ connected outliers are now an integral part of the network.
previous |
- Reticulum Network Stack 0.3.5 beta documentation »
+ Reticulum Network Stack 0.3.6 beta documentation »
Building Networks
diff --git a/docs/manual/objects.inv b/docs/manual/objects.inv
index bb934129581bf9f844a336126fb06e5414296b05..0f080e0c230cef556076952ffd1cf213c16b5aba 100644
GIT binary patch
delta 546
zcmV+-0^R-B4)PALTm^q+kVAu0uxPN5@;XloxfTZ%
zz0fu4j|s<&v=?_zRJ5wsK}1C~#BZmoV44yrM`t~_iwDdD&J+C}WjvTyZx8jnf>+s7
z0E*+Nx}jGTyuvcYrWE9QWj2;zbxq6fOOnQN-J3Btoq>6-j?gsa
z&FR{WvOeGD?%C=`I7Tc=nnUSproQO=D|EnjC5*wK?&WIAwGkROH22ofo_6_$^vtf^
zwUg3)p^9PIv|{9eO^2NP5N@PCf-X^t6t>gV+I9HEdnV?W1YGL!3l=kV*wg
zI~``PJES6mx21m=*aPpSNAOrTX^m3rdvlakLBBjm{a-_t3OaAf{ruWNFgxMCWFl#|
zHN9Td7Wt@&wjD*O%Z$EAU5hn+KEW;qb1QDSyyIh)HyKD=yjJRuaKSS^+T>Aa%eh+$
zdfnVsO-6+$#9|9-#ZvX%Q
delta 518
zcmV+h0{Q*&4%ZH_Tm^s8LawF3Nla;$!RBN=f>+JetynJealmN3l%f~9M*YvkF(d88
z+4EFd)$1UlA{yei(^W7{36ztw9^AzP<^kt{evdL9%!{{&dR}BS?peUaaa7&VD`G+8
zGR0;o=Xzx|mQZy~%kN8)#&X@7MaV7FlRphq?h75bHl2Zau8x1u^yJOy+KsM0-{$Vu
z>L)lxEJ~U~>1(Dw==&>lz;`8#!JuyCYRa_{8aFie*3h1I>4x;ouG_Vf>5yQ%{RRuz
zK2c711}`0YHi1ama^4|MqCJS^GD2ymh3g#ya)m)S6$6{hz4Qnk>n5#HYK>)%vMMT<
z2dV$>#Zp1%O}T%cA8$FCt!7^`k+l1UUax8odelVQj-u3MMqi|^#hON%U>AeA6}Md8
z@v%yo3?wdIEA>~d;29rn`Y5#J++C}^Zf*Ew$VS}v@(qrmAYdj5|^2*F^Uoy97v$XajJf0$EctYP36A|$(GaURT?JP
zR8Y&*Ryux!Q)cEg+p1u0uqca;pFWYeJ-5-eJkA_R&UjQE-RXc*@^-Q1ry|Q6Sr|aR
zeTPW|8};}a?aORl&uAA99nbiJ&B*}q02x~C-voA>y=@c;k-
diff --git a/docs/manual/reference.html b/docs/manual/reference.html
index aab950a..4fbd4b1 100644
--- a/docs/manual/reference.html
+++ b/docs/manual/reference.html
@@ -5,7 +5,7 @@
- API Reference — Reticulum Network Stack 0.3.5 beta documentation
+ API Reference — Reticulum Network Stack 0.3.6 beta documentation
@@ -31,7 +31,7 @@
previous |
- Reticulum Network Stack 0.3.5 beta documentation »
+ Reticulum Network Stack 0.3.6 beta documentation »
API Reference
@@ -1258,12 +1258,12 @@ will announce it.
previous |
- Reticulum Network Stack 0.3.5 beta documentation »
+ Reticulum Network Stack 0.3.6 beta documentation »
API Reference
diff --git a/docs/manual/search.html b/docs/manual/search.html
index 623b762..722db83 100644
--- a/docs/manual/search.html
+++ b/docs/manual/search.html
@@ -5,7 +5,7 @@
- Search — Reticulum Network Stack 0.3.5 beta documentation
+ Search — Reticulum Network Stack 0.3.6 beta documentation
@@ -29,7 +29,7 @@
index
- Reticulum Network Stack 0.3.5 beta documentation »
+ Reticulum Network Stack 0.3.6 beta documentation »
Search
@@ -85,12 +85,12 @@
index
- Reticulum Network Stack 0.3.5 beta documentation »
+ Reticulum Network Stack 0.3.6 beta documentation »
Search
diff --git a/docs/manual/searchindex.js b/docs/manual/searchindex.js
index 48a6467..1d1e3ac 100644
--- a/docs/manual/searchindex.js
+++ b/docs/manual/searchindex.js
@@ -1 +1 @@
-Search.setIndex({docnames:["examples","gettingstartedfast","index","interfaces","networks","reference","understanding","using","whatis"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["examples.rst","gettingstartedfast.rst","index.rst","interfaces.rst","networks.rst","reference.rst","understanding.rst","using.rst","whatis.rst"],objects:{"RNS.Destination":{announce:[5,1,1,""],app_and_aspects_from_name:[5,1,1,""],clear_default_app_data:[5,1,1,""],create_keys:[5,1,1,""],decrypt:[5,1,1,""],deregister_request_handler:[5,1,1,""],encrypt:[5,1,1,""],full_name:[5,1,1,""],get_private_key:[5,1,1,""],hash:[5,1,1,""],hash_from_name_and_identity:[5,1,1,""],load_private_key:[5,1,1,""],register_request_handler:[5,1,1,""],set_default_app_data:[5,1,1,""],set_link_established_callback:[5,1,1,""],set_packet_callback:[5,1,1,""],set_proof_requested_callback:[5,1,1,""],set_proof_strategy:[5,1,1,""],sign:[5,1,1,""]},"RNS.Identity":{CURVE:[5,2,1,""],KEYSIZE:[5,2,1,""],TRUNCATED_HASHLENGTH:[5,2,1,""],decrypt:[5,1,1,""],encrypt:[5,1,1,""],from_bytes:[5,1,1,""],from_file:[5,1,1,""],full_hash:[5,1,1,""],get_private_key:[5,1,1,""],get_public_key:[5,1,1,""],get_random_hash:[5,1,1,""],load_private_key:[5,1,1,""],load_public_key:[5,1,1,""],recall:[5,1,1,""],recall_app_data:[5,1,1,""],sign:[5,1,1,""],to_file:[5,1,1,""],truncated_hash:[5,1,1,""],validate:[5,1,1,""]},"RNS.Link":{CURVE:[5,2,1,""],ESTABLISHMENT_TIMEOUT_PER_HOP:[5,2,1,""],KEEPALIVE:[5,2,1,""],get_remote_identity:[5,1,1,""],identify:[5,1,1,""],inactive_for:[5,1,1,""],no_inbound_for:[5,1,1,""],no_outbound_for:[5,1,1,""],request:[5,1,1,""],set_packet_callback:[5,1,1,""],set_remote_identified_callback:[5,1,1,""],set_resource_callback:[5,1,1,""],set_resource_concluded_callback:[5,1,1,""],set_resource_started_callback:[5,1,1,""],set_resource_strategy:[5,1,1,""],teardown:[5,1,1,""]},"RNS.Packet":{ENCRYPTED_MDU:[5,2,1,""],PLAIN_MDU:[5,2,1,""],resend:[5,1,1,""],send:[5,1,1,""]},"RNS.PacketReceipt":{get_rtt:[5,1,1,""],get_status:[5,1,1,""],set_delivery_callback:[5,1,1,""],set_timeout:[5,1,1,""],set_timeout_callback:[5,1,1,""]},"RNS.RequestReceipt":{get_progress:[5,1,1,""],get_request_id:[5,1,1,""],get_response:[5,1,1,""],get_response_time:[5,1,1,""],get_status:[5,1,1,""]},"RNS.Resource":{advertise:[5,1,1,""],cancel:[5,1,1,""],get_progress:[5,1,1,""]},"RNS.Reticulum":{ANNOUNCE_CAP:[5,2,1,""],MTU:[5,2,1,""],should_use_implicit_proof:[5,1,1,""],transport_enabled:[5,1,1,""]},"RNS.Transport":{PATHFINDER_M:[5,2,1,""],deregister_announce_handler:[5,1,1,""],has_path:[5,1,1,""],hops_to:[5,1,1,""],next_hop:[5,1,1,""],next_hop_interface:[5,1,1,""],register_announce_handler:[5,1,1,""],request_path:[5,1,1,""]},RNS:{Destination:[5,0,1,""],Identity:[5,0,1,""],Link:[5,0,1,""],Packet:[5,0,1,""],PacketReceipt:[5,0,1,""],RequestReceipt:[5,0,1,""],Resource:[5,0,1,""],Reticulum:[5,0,1,""],Transport:[5,0,1,""]}},objnames:{"0":["py","class","Python class"],"1":["py","method","Python method"],"2":["py","attribute","Python attribute"]},objtypes:{"0":"py:class","1":"py:method","2":"py:attribute"},terms:{"0":[0,3,5,6,8],"00":[6,7],"000":[],"00000000":6,"00000100":6,"00000111":6,"01":6,"01010000":6,"02":[],"05":0,"07":[],"1":[0,3,5,6,7],"10":[0,3,6,7],"100":[0,3,6],"1000":0,"10000000":6,"1024":0,"11":6,"115200":[3,7],"12":3,"1200":6,"125":3,"125000":3,"127":3,"128":[5,6,8],"13":7,"14":6,"141":[],"15":3,"150":[3,7],"150m":3,"151":6,"16":[3,7],"17":7,"18":[],"180":[],"182":[],"187":7,"2":[0,3,5,6,7],"20":[0,3,6,7],"200":[3,7],"2000000":[],"205":[],"211":[],"23":7,"237":[6,8],"24":3,"240":[],"25":[0,2,8],"255":3,"256":[5,6],"27":7,"270":[],"2f":0,"3":[0,6,7,8],"30":7,"323":[],"33":6,"34":[],"360":5,"3600":0,"367":[],"37":[],"37428":7,"38":7,"383":5,"3e12fc71692f8ec47bc5":1,"3w3lha":[],"4":[6,7],"409":[],"4242":3,"430":6,"45":0,"460":[],"469":7,"476":5,"477":6,"48555":3,"49":7,"49555":3,"4965":[1,7],"5":[0,3,5],"500":[5,6,8],"5001":3,"507":5,"512":[3,5,6],"5245a8efe1788c6a70e1":7,"55":3,"56b115c30cd386cad69c":7,"5urvjicpzi7q3ybztsef4i5ow2aq4soktfj7zedz53s47r54jnqq":3,"60":0,"600":3,"62":[6,8],"63":7,"64":[6,7],"7":3,"72":3,"74":7,"77":6,"7c565719ec7a8cdb1fe2":[],"7ca6f4e4dc26ae329e61":[],"8":[0,3,7],"80":[5,6,7],"8001":3,"80e29bf7cccaf31431b3":6,"83":[6,7],"86":7,"867":3,"867200000":3,"868":6,"88":3,"9":7,"900":6,"9382f334de63217a4278":7,"95":6,"\u00ec2pd":3,"abstract":6,"break":[5,6,8],"byte":[0,5,6,7,8],"case":[1,3,4,6,7],"class":[0,2,4,8],"default":[0,1,3,4,5,6],"do":[0,1,3,5,6,7,8],"export":1,"final":6,"float":[0,5],"function":[0,1,2,3,4,5,8],"import":[0,1,3,4,6],"int":0,"long":[0,3,6],"new":[0,3,4,5,6,7],"public":[0,2,3,5],"return":[0,5],"short":[6,7],"static":5,"switch":[3,6],"throw":[],"true":[0,1,3,5,7],"try":[0,2,3],"while":[0,1,3,4,5,6,8],A:[0,1,3,4,5,6,8],And:0,As:[1,4,5,6,8],At:[4,6],Be:[5,7],But:6,By:[0,1,3,5,6],For:[1,3,4,5,6,8],IF:[],IN:[0,5],If:[0,1,3,4,5,6,7,8],In:[0,1,3,4,5,6,7,8],It:[0,1,3,5,6,7,8],No:[3,6,8],On:[0,1,3,7],One:5,Or:3,That:6,The:[0,1,2,3,4,5,8],Then:1,There:[1,4,6,8],These:[1,3,6,7],To:[0,1,3,4,6,7,8],Will:5,With:[2,3,4,6,7],_:6,__:6,______:6,_______:6,________:6,________________:6,__init__:0,__main__:0,__name__:0,_exit:0,aarch64:1,ab:0,abil:1,abl:[0,1,4,5,6,7],about:[0,1,3,4,5,6],abov:[1,3,6],absolut:[1,8],accept:[5,6],accept_al:[0,5],accept_app:5,accept_non:5,access:[1,2,3,4,5,7],access_point:3,accomod:6,accord:6,accordingli:0,acheiv:[3,6],achiev:[5,6],acknowledg:8,across:4,act:[1,5,6],action:0,activ:[0,1,5,6],actor:6,actual:[0,1,3,6],ad:[0,2,4,5,6,8],adapt:4,add:[0,1,3,4,7],add_argu:0,addit:[6,8],addr1:[],addr2:[],address:[0,1,3,4,5,6,8],adher:5,admin:3,administr:7,adress:[0,1,4,5,6,8],advanc:6,advantag:5,adversari:1,advertis:[0,5],advis:6,ae:[6,8],after:[0,4,6,7],again:[1,3,6],against:6,agenc:6,agent:6,agnost:[4,6],agnostic:6,aim:[2,6],air:8,airtim:3,aliv:[5,6],all:[0,1,2,3,4,5,6,7,8],alloc:[3,5,6,7],allow:[0,1,3,4,5,6,7,8],allow_al:[0,5],allow_list:5,allow_non:5,allowed_list:5,almost:[3,6],alo:6,alon:3,along:[4,6],alreadi:[0,1,4,6],als:[],also:[0,1,3,4,5,6,7,8],alter:6,altern:[0,3,7],although:[6,8],alwai:[1,5,6,7],amateur:[3,8],amet:[],amount:[3,4,5,6,8],an:[0,1,3,4,5,6,7,8],android:2,ani:[0,1,3,4,5,6,7,8],announc:[2,3,5],announce_cap:[3,5],announce_handl:0,announced_ident:[0,5],announceloop:0,announcesampl:0,announec:[],anonym:[1,4,5,6,8],anoth:[1,5,6,7],answer:[6,7],anymor:1,anyon:[0,1,4,5,6],anyth:[3,6],anywher:[0,3],ap:3,apart:[],api:[1,2,6,8],apk:1,app:[0,1,5,6],app_and_aspects_from_nam:5,app_data:[0,5],app_nam:[0,5],app_timeout:0,append:[0,6],appli:[5,6],applic:[0,4,5,6,7],approach:[6,7],approv:6,approxim:[],apt:1,ar:[0,1,3,4,5,6,7,8],arbitrari:[5,6],arbritrari:8,architectur:1,area:[3,4,6,8],arg:0,argon:0,argpars:0,argument:[0,5,7],argumentpars:0,arm64:2,around:6,arriv:[0,6],ask:[0,5],aspect:[0,3,5,6],aspect_filt:[0,5],assign:[6,7],associ:[1,5,6],assum:[3,6],asymmetr:[6,8],attached_interfac:[],attack:1,attempt:5,attribut:5,audit:8,authent:[1,3,4,5,6,8],author:6,auto:[2,5,6],auto_compress:5,autoconfigur:[3,8],autodiscov:3,autointerfac:[3,7],autom:6,automat:[0,1,3,4,5,6,7,8],autonom:[4,6],autoomat:0,avail:[0,1,3,4,5,6,7,8],availadbl:[],averag:6,avoid:[6,7],awai:[0,4,6,7],awar:6,ax25kissinterfac:3,ax:[2,8],b32:[1,3],b:[0,4],back:[0,6,8],background:[1,3],backhaul:4,band:6,bandwidth:[1,3,4,5,6,8],bare:0,barrier:6,base32:3,base:[2,3,4,5,6,7,8],basi:[5,6,8],basic:[0,1,2],baud:3,beacon:3,beam:[],becaus:[4,6],becki:0,becom:[0,1,4,6],been:[0,1,3,4,5,6,8],befor:[0,1,5,6,7],begin:[0,5],begun:5,behaviour:3,behind:[1,6],being:[3,5,6],beings:6,belief:6,below:[1,3],benefici:7,best:[1,6,8],beta:8,better:3,between:[0,3,4,5,6],bgp:[],bi:6,bidirect:6,billion:[4,6],bin:7,binari:[0,1,6],bind:3,bit:[3,5,6,7,8],bitrat:3,blob:[0,6],block:3,board:[1,6,8],boot:7,both:[1,3,4,5,6,8],bp:[],bridg:2,briefli:6,bring:3,broadcast:[1,2,3,5,6],broadcast_destin:0,broadcastloop:0,brought:[3,7],browser:1,buffer:3,bug:8,build:[0,1,2,3,6,8],built:[1,6,8],bundl:0,c:[0,4],cabl:4,cad:[],calcul:[5,6],call:[0,4,5,6,8],callabl:5,callback:[0,5],callsign:3,can:[0,1,2,3,4,5,6,7],cancel:5,candid:4,cannot:0,capabl:6,capac:[5,6],carambola:0,care:[1,5,8],carefulli:1,cargo_build_target:1,carri:[3,5,6],carrier:[4,8],caution:3,caveat:2,cb:6,cbc:8,cd:1,cdma:3,censor:6,censorship:6,central:[4,6],centralis:6,certain:[0,3,4,6],challeng:6,chang:[0,1,3,5,6,7,8],channel:[0,3,4,6,8],channelarg:0,chapter:[1,3,4,6,8],charact:0,characterist:6,cheap:6,check:[0,1,5,6],checksum:[5,8],choos:[0,1,3,6],choosen:6,chose:6,chosen:4,chunk:0,ciphertext:5,ciphertext_token:5,circumst:6,cl:0,clear:[0,5,6],clear_default_app_data:5,clear_screen:0,client:[0,1,2,5],client_connect:0,client_disconnect:0,client_ident:0,client_loop:0,client_packet_receiv:0,client_request:0,clone:1,close:[0,4,5],closed_callback:5,closer:6,closest:6,cluster:6,co:8,code:[1,2,3],codingr:3,com:[0,1],combin:[1,4,6],come:[1,6],comma:3,command:[0,1,7],comment:3,common:[1,2,4,6,8],commun:[0,1,3,4,5,6,7,8],compat:[1,3,5,6],compil:1,complet:[0,1,4,5,6,8],complex:6,compon:6,compos:6,compress:[0,5,6],comput:[1,6,8],concaten:5,concept:[2,6],conclud:[0,5],concurr:[6,7],condit:6,config:[0,1,4,7],configarg:0,configdir:5,configpath:0,configur:[0,1,2,3,4,5,6,8],confirm:[6,8],confus:6,congest:6,conjunct:3,connect:[0,2,3,4,5,6,7,8],consequ:[],consid:[6,8],consider:[],consist:6,constant:5,constantli:6,construct:6,consumpt:[],contact:6,contain:[0,4,5,6],contend:6,content:[4,7],context:6,continu:8,control:[0,1,3,4,5,6],conveni:0,convent:0,converg:[2,6],coordin:[4,5,6,8],core:[4,6,8],correct:[0,6],correctli:0,correspond:6,cost:[6,8],could:[0,1,3,4,5,6,8],count:6,counter:0,cours:[3,6],cover:[6,8],coverag:4,cpu:0,creat:[0,2,3,4,5,6,7],create_kei:5,create_receipt:[0,5],creation:6,creator:6,critic:6,cryptograph:[4,8],cryptographi:[1,6,8],ctrl:0,cull:5,current:[0,1,2,3,5,6],current_download:0,current_filenam:0,curv:[4,5,6,8],curve25519:[4,5,6,8],custom:[3,5,6],custom_network_nam:3,customis:3,d:[4,7],daemon:[1,3,5,7],dai:4,data:[0,1,3,4,5,6,8],data_port:3,databit:[3,7],date:[0,1],db:0,dbm:[0,3],debian:[6,7],debug:[],decai:[],decid:[4,5,6],decod:0,decrypt:[5,6],dedic:6,deep:1,def:0,default_timeout:[],defin:[0,3,6],definit:6,degrad:4,degre:3,delai:[1,6,7],deliv:[0,5],deliveri:[0,1,5,8],demand:5,demonstr:[0,3],depend:[1,4,6,7],deploi:6,deregist:5,deregister_announce_handl:5,deregister_request_handl:5,deriv:[6,8],describ:[3,5,6],descript:[0,7],design:[1,4,6,8],desir:[0,3,6],destin:[0,1,2,3,4,7],destination_1:0,destination_2:0,destination_clos:0,destination_hash:[0,5,7],destination_hexhash:0,detail:[0,1,2,3,5,7,8],detect:0,determin:[1,5,6],dev:[1,3,7],develop:[2,6,8],devic:[1,2,3,4,5,6,7],dh:5,dhcp:3,did:0,differ:[0,1,3,4,5,6,7,8],diffi:[4,6,8],difficult:1,digit:[6,8],dir:0,direct:[0,1,4,5,6],directli:[3,5,6,7,8],directori:[0,7],disabl:[3,6],disable_encrypt:[],disappear:3,disassoci:6,discard:6,disconnect:0,discov:1,discover:3,discoveri:[3,6,7],discovery_port:3,discovery_scop:3,discrimin:4,discuss:[1,6],disk:[0,5],displai:[0,6],dissolv:4,distanc:6,distant:5,distinct:[3,6],distinguish:6,distribut:[0,1,4,5,6,7],divmod:0,document:6,doe:[0,1,2,3,4,5,6],doesn:3,dolor:[],domain:[1,3],don:[0,1,4,5],done:[0,1,4,6],dori:4,dot:[6,7],down:0,downgrad:[],download:[0,3],download_began:0,download_conclud:0,download_finish:0,download_start:0,download_tim:0,driver:[7,8],droid:1,drop:[5,6,7],due:4,duplex:[6,8],dynam:[1,7],e702c42ba8:7,e:[0,4],each:[0,1,3,4,6],earli:1,earlier:6,eas:[3,6],easi:[1,3,6,7,8],easier:[1,4,7],easiest:[1,3,6],easili:[4,6,7,8],eca6f4e4dc26ae329e61:7,ecdh:[6,8],echo:[1,2,7],echo_destin:0,echo_request:0,ed25519:[6,8],edit:1,effeci:[],effici:[0,1,3,6,8],ei:0,either:[3,4,6],elaps:3,elif:0,ellipt:[4,5,6,8],els:[0,4,6],emploi:6,emptor:2,emul:1,enabl:[1,3,4,5,6,7],enable_transport:6,encapsul:[3,8],encod:0,encrypt:[0,1,4,5,6,8],encrypted_mdu:5,encryptionless:[],end:[0,4,5,6,8],endless:3,endpoint:[0,4,5,6],energi:1,engin:[],enhanc:6,enough:[1,6],ensur:[5,6],enter:0,entir:[4,6],entiti:6,entri:[0,1,6],enumer:0,environ:[1,4,6],environment:6,environmentlogg:6,ephemer:[4,5,6,8],equal:[4,6],equip:[4,6],equival:3,equl:[],error:[0,1],especi:3,essenti:[1,6],establish:[0,1,3,4,5,8],established_callback:5,establishment_timeout_per_hop:5,etc:7,eth0:3,eth1:3,ethernet:[1,3,4,6,8],even:[1,4,6,7,8],event:3,eventu:5,everi:[0,3,4,5,6],everyon:[4,6],everyth:[0,4,6],evolv:4,exact:6,exactli:[5,6],exampl:[1,2,3,5,6,7,8],example_util:[0,7],exampleannouncehandl:0,exce:[0,5],except:[0,3],exchang:[4,5,6,8],exclud:6,execstart:7,execstartpr:7,execut:[0,1,5,7],exhaust:6,exist:[0,1,3,6,8],exit:[0,1,5,7],exit_handl:0,expand:6,expect:[0,3,5,6,7],experi:[1,6],experiment:[1,8],expiri:3,explain:5,explan:6,explicit:5,explicitli:[],explor:[0,6,8],expos:[3,5],extend:[0,1,5],extern:[1,3,5,8],extra:[1,3,4,7],extrem:[1,6,8],f:1,fa7ddfab5213f916dea:6,face:1,fact:8,factor:3,fail:[0,5],failed_callback:[0,5],failur:1,fals:[0,3,5],far:[4,6],fast:[2,5,6],faster:[1,6],fastest:[3,6],featur:[1,6,8],feed:5,feedback:0,feel:1,fernet:8,few:[1,3,4,6,7,8],fewer:5,fibr:8,field:6,file:[0,1,3,4,5,6,7,8],file_resourc:0,file_s:0,filelist:0,filelist_data:0,filelist_receiv:0,filelist_timeout_job:0,filenam:0,filetransf:[1,2,5],filter:[0,4,6],find:[4,6],firewal:[1,3],firmwar:[1,6],first:[0,1,3,5,6],fit:0,five:0,fix:[2,6],flag:[5,6],flexibl:[3,8],flow:[3,4],flow_control:3,flush:0,folder:1,follow:[0,1,3,6,7,8],forcibl:5,foreground:1,foremost:8,form:[1,3,4,5,6],format:[0,2,8],forth:0,forward:[3,5,6,8],forward_ip:3,forward_port:3,found:[0,1,3,4,6,7],four:4,frame:3,frankfurt:[1,7],free:[4,8],freedom:6,freeli:6,frequenc:[3,6],frequent:3,friendli:8,from:[0,1,3,4,5,6,7,8],from_byt:5,from_fil:5,fromhex:0,fruit:0,ftdi_ft230x_basic_uart_43891ckm:7,full:[0,3,5,6,7,8],full_hash:5,full_nam:[5,7],fulli:[6,8],funcion:5,fundament:6,further:[1,2],futur:[4,6],g:0,ga:0,gain:6,galact:6,gatekeep:6,gatewai:[1,4],gbp:7,gen:[],gener:[0,1,3,4,5,6,8],generalis:8,geograph:4,get:[0,2,3,5,8],get_packet_rssi:0,get_packet_snr:0,get_private_kei:5,get_progress:[0,5],get_public_kei:5,get_random_hash:[0,5],get_remote_ident:[0,5],get_request_id:5,get_respons:5,get_response_tim:5,get_rtt:[0,5],get_statu:5,geti2p:3,ghz:6,gi:0,gigabyt:8,gipsum:[],git:1,github:[0,1],give:[3,6,7],given:[3,4,5,6],global:[0,1,3,4,6,8],go:[0,1,6],goal:[2,3],good:[4,6],got:0,got_respons:0,govern:6,grape:0,graphic:1,great:6,greater:6,greatli:3,group:[3,5,6],group_id:3,grow:4,growth:2,guarante:[1,6],guess:3,guid:[1,5,6],h:[1,7],ha:[0,1,3,4,5,6,8],had:6,half:[6,8],hand:[0,1],handheld:6,handl:[0,3,4,5,6,7,8],handler:[0,5],happen:[0,5,6],hardlin:4,hardwar:[1,3,4,5,6,8],has_path:[0,5],hasattr:0,hash1:6,hash2:6,hash:[0,1,5,6,7],hash_from_name_and_ident:5,hashmap:0,have:[0,1,3,4,5,6,7],hazard:5,head:1,header:6,header_1:6,header_2:6,header_typ:[],hear:6,heard:[5,6],helium:0,hellman:[4,6,8],help:[0,4,6,7,8],her:4,here:[0,1,3,6,7],hexadecim:[0,6,7],hide:1,high:[3,6,8],higher:[4,8],highli:6,hill:4,hint:0,hit:0,hmac:8,hoc:8,hold:[5,6],home:4,homebrew:3,hop:[4,5,6,7,8],hops_to:5,host:[0,1,3,6,7],hostnam:3,hour:0,how:[0,1,3,4,6,8],howev:[1,4],http:[0,1],hub:3,huge:[],human:[0,5,6],i2p:[1,2,8],i2p_tunnel:3,i2pd:1,i2pinterfac:[1,3],i:0,id:[3,5,6,7],id_callsign:3,id_interv:3,idea:6,ideal:8,ident:[0,1,2,8],identif:[2,3,8],identifi:[0,3,5,6],identify:6,identifyexampl:0,ie:[],if00:7,ifac:[6,7],ifac_s:3,ifconfig:7,ignor:[3,5,6],ignored_devic:3,illustr:4,immedi:[1,7],impact:6,implement:[0,4,5,6,8],implic:3,implicit:[5,6],imposs:6,improv:[2,3],inactive_for:5,inbound:[3,5],includ:[0,2,3,5,6],incom:[0,3,5],incompat:[5,6],increas:3,incur:3,indefinit:[],independ:[5,6],independt:8,index:[0,1,2],indirectli:6,individu:[5,6],inevit:6,infer:6,info:[5,6],inform:[0,1,2,4,5,6],infrastructur:[1,3,4,6],ingo:5,initi:[0,4,5,6,8],initialis:[0,5,7],input:0,insert:6,insid:6,inspect:[1,3,4,6],instal:[1,3,4,7,8],instanc:[0,2,3,5,6,7],instanti:5,instead:[0,3,6,7],integr:[4,6],intend:[4,6],intention:6,inter:5,interact:[0,1,5,6],interchang:3,interconnect:[2,6],interest:6,interfac:[0,2,4,5,7],interface_en:[1,3,7],interface_mod:[],intermediari:6,intermitt:3,intern:[3,5],internet:[2,3,6,8],interoper:[1,4,6,8],interv:[3,5],intiat:0,introduc:6,introduct:2,intuit:8,invalid:[0,5],invers:6,investig:4,invis:[1,3],involv:4,io:[1,7],ip:[1,3,6,8],ipsum:[],ipv6:3,is_connected_to_shared_inst:0,is_request:[],is_respons:[],isdir:0,isfil:0,island:4,ism:6,isol:3,issu:4,its:[5,6],itself:[2,6],iv:8,job:0,join:[0,1,4,6],just:[0,1,3,4,6,8],k:0,kb:7,kbp:7,keep:[0,4,5,6,7,8],keepal:[5,6],kei:[0,2,4,5,8],kept:[3,4,5,6],kernel:[3,7,8],keyboardinterrupt:0,keyerror:5,keypair:6,keysiz:5,keystor:4,khz:3,ki:0,kill:[5,6],kilomet:[],kind:[3,4,6],kiss:[2,7,8],kiss_fram:3,kissinterfac:[3,7],know:[0,1,4,5,6],knowledg:[4,6],known:[0,5,6,7],krypton:0,lack:6,laid:6,lan:3,larg:[0,4,5,6,8],larger:[4,6],laser:3,last:[0,3,5],last_unit:0,latenc:[1,6,8],later:[0,1],latest:[0,1,3],latest_client_link:0,launch:1,lavg:[],layer:[3,4,6,8],lead:6,leak:1,learn:[0,1,6],least:[3,6,8],leav:[4,6],ledger:6,left:[5,6],legaci:4,len:0,length:[0,3,5,6],less:[3,6,8],let:[0,1,3,4,6,7],level:[3,6],libffi:1,librari:1,licens:6,light:7,like:[1,3,4,5,6,7,8],limit:[4,6],line:[0,1,4,6,8],link:[2,3,4,8],link_clos:0,link_establish:0,linkexampl:0,linux:[1,6],list:[0,3,5,6,8],list_deliv:0,list_fil:0,list_packet:0,list_receipt:0,list_timeout:0,listdir:0,listen:[0,3,6],listen_ip:3,listen_port:3,littl:6,lki:6,lkr:6,ll:[0,1,8],ln:[1,7],load:[0,5,7],load_private_kei:5,load_public_kei:5,local:[0,1,3,4,5,6,7,8],locat:[1,4,6,7],log:[0,3],log_error:0,log_info:0,loglevel:[0,5],longer:[0,4,6],longest:3,look:[0,1,3,6,7],loop:0,lora32:[],lora:[1,2,6,8],lorawan:6,lorem:[],lot:6,low:[1,3,4,6,8],lower:1,lxmf:1,m:[0,1,6,7],mac:6,machin:6,maco:1,made:[1,5,6],mai:[1,3,5,6],main:0,mainli:4,maintain:6,make:[1,6,7],malici:6,manag:[1,4,5,6],mani:[0,1,3,4,5,6,7,8],manipul:6,manner:4,manual:[0,1,3,4,5,7],mark:6,markqvist:[0,1],master:[0,5],match:[0,3,6],maximum:[3,5,6],mbp:7,mcu:[],mdu:0,mean:[4,6,7],measur:6,mechan:[2,3],medium:[3,4,5,6,8],member:4,memori:6,mention:6,menu:0,menu_mod:0,mesh:[1,3,4,8],messag:[0,1,5,6,7],messeng:6,metadata:1,metavar:0,method:[0,1,3,5,6],methodolog:[6,7],mhz:[3,6],mi:0,microcontrol:6,microwav:[],might:[1,3,4,6,7],millisecond:[0,7],mind:[4,8],minim:[2,6],minimalsampl:0,minimum:[0,4,6],minut:[0,1,3,6],mix:[1,3,4,7],mobil:6,mode:[0,1,3,6,7,8],modem:[3,4,5,6,8],modifi:6,modul:[0,1,6,7,8],moment:[6,8],momentarili:3,monitor:6,moon:0,mor:[],more:[1,3,4,5,6,8],morej:[],most:[1,3,4,6,7],mostli:[3,4,6],motiv:2,move:[1,6],mqtt:[],mtu:[5,6,8],much:[1,3,4],multi:[6,7,8],multicast:3,multilater:6,multipl:[0,3,4,6,7],multipoint:6,must:[0,1,3,4,5,6],mw:3,my:6,mycal:3,myriad:6,n:[0,6],name:[0,2,3,4,5],namespac:0,nano:1,narg:0,natur:3,nears:6,necesarri:4,necessari:[1,5,6],necessarili:6,need:[0,1,2,3,4,6,7,8],neglig:6,neither:6,neon:0,net:3,netifac:1,network:[0,3,5,6,7,8],network_nam:3,never:[3,5,6],newer:6,newest:6,newli:[4,6],next:[1,4,5,6],next_hop:5,next_hop_interfac:5,nicknam:6,no1cll:3,no_inbound_for:5,no_outbound_for:5,nobl:0,noble_ga:0,noble_gas:0,node:[1,2,3,4,7,8],nodet:[],nomad:2,nomadnet:1,non:[1,5,6],none:[0,3,5,6,7],normal:[0,3,5],notat:[6,7],note:[0,1,3,6,7],noth:8,notic:6,notif:[0,5],now:[0,1,4,6,7],nt:0,num:0,number:[0,1,3,4,5,6,7],obfusc:[],object:5,obtain:6,obviusli:6,occasion:1,occur:8,off:[6,8],offer:[1,2,3,5,6],offlin:1,often:[1,4,6,7],oganesson:0,old:6,on_interfac:5,onc:[0,1,4,5,6,8],one:[0,1,3,4,5,6,7,8],ones:3,oneself:6,onli:[0,1,3,4,5,6,7,8],onlin:[],onto:6,open:[0,3,4,5,6,7,8],openmodem:[3,8],openssl:1,oper:[3,4,5,6,8],opt:6,optic:8,optim:4,optimis:[],option:[0,1,2,4,5,6,7],order:7,orem:[],organ:4,organis:[3,4],orient:6,origin:[0,4,6],original_hash:[],os:[0,3,6,7,8],ospf:[],other:[1,3,4,5,6,7],otherwis:5,our:[0,6],out:[0,1,3,4,5,6,8],outbound:[5,6],outgo:[0,1,3,5,6,7],outli:4,outlier:4,outlin:[1,6],output:[3,7],outward:[],over:[0,2,3,5,6,7,8],overal:6,overcom:6,overhead:[3,6],overrid:0,oversight:6,overview:[2,3,6],overwhelm:5,own:[0,1,4,5,6],owner:[],p:0,pack:0,packag:[1,3],packb:0,packet:[0,1,2,3,4,7,8],packet_callback:0,packet_deliv:0,packet_hash:0,packet_receipt:[0,5],packet_timed_out:0,packet_typ:[],packetreceipt:[0,5],pad:8,page:[1,2,6],pair:[3,6],palm:[],parallel:1,paramet:[3,4,5,6],pariti:[3,7],pars:0,parse_arg:0,parser:0,part:[0,4,6],particip:[2,4,6],pass:[0,3,4,5,6],passphras:[3,6],past:[],path:[0,1,3,5,6,7],path_respons:5,pathfind:[],pathfinder_m:5,pattern:6,payload:[5,6],peach:0,peer:[0,1,3,5,6,7],peer_pub_byt:[],peer_sig_pub_byt:[],peopl:6,per:[3,5,6,8],percent:0,percentag:5,perfect:[],perform:[0,1,3,4,6],period:[3,6],perman:7,permissionless:6,persecut:6,persist:[3,7],person:6,perspect:6,pet:0,philosophi:6,physic:[1,3,6,7],pi:[0,4,6,7,8],pick:6,piec:6,ping:[1,7],pip3:[1,7],pip:[1,7],pkcs7:8,pkg:1,place:[4,6,7],plain:[0,3,5,6],plain_mdu:5,plaintext:[0,5],plan:[4,6],platform:[1,6],pleas:[0,1,3,7,8],plenti:6,plu:[],plug:7,pmr:6,point:[1,3,4,6,7],pomelo:0,poorli:4,popular:8,port0:7,port:[2,3,4,6,8],portabl:[3,6],posit:7,possess:6,possibl:[1,3,4,5,6,8],potenti:[0,3,6,7],power:[1,3,6],practic:[6,8],pre:[1,3,5,6],preambl:[3,7],precompil:1,predict:6,prefer:6,prepar:[0,4],prerequisit:5,presenc:5,preserv:[1,5],preshar:6,press:0,pretend:6,pretti:6,prettyhexrep:0,previou:0,previous:[4,5,6],primari:6,principl:[6,8],print:[0,3],print_filelist:0,print_help:0,print_menu:0,prioriti:6,prioritis:[2,4,5],privaci:8,privat:[1,3,5,6,8],privileg:7,probabl:[0,4,6,7,8],probe:7,problem:6,procedur:6,process:[1,3,5,6],product:[],program:[0,2,3,5,6],program_setup:0,programm:6,programmat:6,progress:[0,5,8],progress_callback:5,project:1,prompt:0,proof:[0,5,6,7],proof_packet:0,proof_requested_callback:5,proof_strategi:5,propag:[3,5,6],properli:1,properti:[4,5],proport:6,propos:1,protocol:[1,2,3,8],prove:[0,6],prove_al:[0,5],prove_app:5,prove_non:5,proven:[5,6],provid:[0,1,2,3,4,5,6,8],prv_byte:5,pub_byt:5,public_inform:0,publicli:1,purchas:[4,6,8],purg:5,purpos:[3,5,6],purposefulli:[],put:0,py:[0,1,7],pyseri:1,python3:[1,7],python:[1,6,7,8],q:[0,7],queri:[0,1],question:3,queu:5,queue:6,quickli:6,quiet:[3,7],quinc:0,quit:0,r:[0,6],radio:[2,3,4,5,6,7,8],radiu:[],radon:0,rais:[0,5],ram:3,rand:[],randint:0,random:[0,5,6],random_text_gener:0,randomis:6,randomli:[0,6],rang:[0,1,3,4,6,8],raspberri:[4,6,7,8],rate:[0,3,7],rather:1,rb:0,re:[0,3,5,6],reach:[2,3,4],reachabl:[0,1,3,4,5,6,7],read:[0,1,6],readabl:[0,5,6],readi:[0,1,3,4,5,8],readili:8,real:[4,8],realli:[3,5],reason:[3,6],reassembl:6,reboot:1,recal:[0,5],recall_app_data:5,recap:6,receipt:[0,2,6],receiv:[0,1,3,5,6,7],received_announc:[0,5],recent:6,reception_rssi:0,reception_snr:0,reception_stat:0,recip:1,recipi:6,recommend:[0,1,6],reconstruct:6,record:[1,6],recoveri:3,recreat:6,refer:[0,1,2],regard:6,regist:[0,5],register_announce_handl:[0,5],register_request_handl:[0,5],rel:[6,8],relai:1,relat:1,releas:[1,3,6],relev:[0,3,5,6],reli:6,reliabl:[3,4,6,8],rem:0,remain:[5,6],rememb:6,remot:[0,5],remote_ident:[0,5],remote_identifi:0,remote_identity_hash:[],remote_p:0,remotesensor:6,remov:7,render:1,repeat:1,replac:[1,6,7],repli:[0,7],replic:6,reply_data:0,reply_text:0,report:3,repositori:[1,6],repres:6,represent:[0,6],request:[2,6,7],request_destin:0,request_fail:0,request_id:[0,5],request_packet:0,request_path:[0,5],request_receipt:[0,5],request_receiv:0,requested_at:[0,5],requestexampl:0,requestreceipt:5,requir:[0,1,3,4,6,7,8],research:8,resend:5,reserv:6,resili:8,resourc:[0,1,2],resource_callback:5,resource_sending_conclud:0,resource_strategi:5,respect:3,respond:[0,5],respons:[2,5,6],response_callback:[0,5],response_gener:[0,5],response_tim:[],rest:[4,8],restart:7,restartsec:7,restrict:4,result:[0,6],retain:3,reticulum:[0,3,4],retiiculum:[],retransmiss:6,retransmit:6,retri:6,reveal:[1,5,6,8],review:8,ridicul:6,right:4,rn:[0,1,5,7],rnode:[1,2,6,7,8],rnodeinterfac:[3,7],rnpath:[1,2],rnprobe:[1,2],rnsconfig:1,rnsd:[1,2],rnstatu:[1,2,3,6],robot:6,rotat:6,round:[0,5,7],rout:[1,3,4,5,6,8],routabl:[],router:3,rprogress:0,rsa:[],rssi:0,rtt:[0,5,6],rttstring:0,rule:6,run:[0,1,3,4,5,6,7,8],runtim:6,rust:1,rw:[],rx:3,s:[0,1,3,4,6,7,8],said:6,same:[1,3,4,5,6,7],satisfi:6,save:[5,6],save_error:0,saved_filenam:0,scalabl:8,scale:6,scenario:[1,2,6],schedul:5,scope:3,screen:0,search:2,second:[0,3,5,6,7,8],secreci:[5,6,8],section:[1,3,4,6],secur:[1,6,8],see:[0,1,3,4,5,6,8],seek:6,seen:[],segment:[3,4,6,8],segment_index:[],select:[0,3],self:[0,4,8],send:[0,3,5,6,7],sender:[0,1,4,6],sendig:0,sensibl:1,sensor:6,sent:[0,1,5,6,7],sentiment:6,separ:[1,3,4,6,7],sequenc:[0,5,6,8],serial:[2,6,8],serialinterfac:3,serv:[0,3,4,6,7],serve_path:0,server:[0,1,2],server_callback:0,server_destin:0,server_fil:0,server_ident:0,server_link:0,server_loop:0,server_packet_receiv:0,servic:[1,2,4],session:6,set:[0,1,3,4,5,6,7,8],set_default_app_data:5,set_delivery_callback:[0,5],set_link_closed_callback:0,set_link_established_callback:[0,5],set_packet_callback:[0,5],set_proof_requested_callback:5,set_proof_strategi:[0,5],set_remote_identified_callback:[0,5],set_resource_callback:5,set_resource_concluded_callback:[0,5],set_resource_started_callback:[0,5],set_resource_strategi:[0,5],set_timeout:[0,5],set_timeout_callback:[0,5],setdaemon:0,setup:[0,1,2,3],sever:[1,4,5,7],sha256:8,sha:[5,6],shall:6,share:[1,4,5,6,7],she:4,shelf:[6,8],shop:0,shorter:3,shortest:6,shorthand:[3,7],should:[0,1,3,4,5,6,8],should_allow_unencrypt:[],should_quit:0,should_use_implicit_proof:5,show:7,shown:0,side:8,sideband:2,sight:4,sign:[5,6],signatur:[5,6,8],significantli:[],similar:[1,3,4,7,8],simpl:[0,6,7,8],simpler:3,simplest:[3,6],simpli:[0,1,3,4,6,7],simplic:6,simultan:6,sinc:[0,1,3,4,5,6],singl:[0,3,5,6,8],singular:6,sit:[],site:[2,3],situat:[1,3,4,6],size:[0,1,3,5,6],size_str:0,sleep:[0,7],slice:0,slightli:1,slottim:[3,7],slow:[0,3,6],slower:[5,6],small:[0,3,4,6,8],smaller:5,snr:0,so:[0,1,3,4,5,6,7,8],softwar:[1,3,6,8],solut:6,solv:6,some:[0,1,3,4,6,7],someon:[1,3],someth:6,somethign:0,soon:5,sort:[3,6],soundmodem:3,sourc:[0,1,4,6,8],space:[0,1,4,6,8],span:6,special:[6,7],specif:[0,2,3,5,8],specifi:[0,1,3,4,5,7],spectrum:[3,6],speed:[3,6,7],split:0,sponsor:8,spread:3,spreadingfactor:3,squelch:3,ssid:3,stabl:[6,8],stack:[0,1,4,6,7,8],stage:[1,6],stai:[0,6,7],standard:[1,6],start:[0,2,3,5,6,7],startlimitintervalsec:[],startup:0,state:0,station:3,stationari:4,statist:0,statu:[0,1,2,3,5,6,7],stdout:0,step:1,still:[0,4,6],stock:0,stop:8,stopbit:[3,7],store:[0,6],store_tru:0,str:0,strategi:5,stream:6,strength:8,strictli:6,string:[0,5],strong:6,structur:6,subject:[],subnet:[1,4],subsequ:6,succe:1,successful:5,successfulli:0,sucessfulli:6,sudo:[1,7],suffic:6,suffici:[1,3,6,7],suffix:0,suit:[1,6],suitabl:[0,1,3,4,6,8],suppli:[4,5,6],support:[0,1,2,4,6,8],sure:[1,7],surveil:6,surviv:6,sy:0,symlink:[1,7],symmetr:[5,6],system:[0,1,2,3,4,5,6,8],systemctl:7,systemd:7,t:[0,1,3,4,5,7],tabl:[1,4,6,7],tail:3,tailor:6,take:[0,1,3,6,8],taken:[0,6],tangerin:0,target:[0,7],target_host:[1,3],target_port:[1,3],tcp:[1,2,4,6,8],tcpclientinterfac:[1,3],tcpinterfac:7,tcpserverinterfac:[1,3],tdata:0,teardown:[0,5],teardown_reason:0,teffect:0,tell:[0,3],temperatur:6,ten:6,term:[4,6],termin:[1,5],terminolog:[4,6],termux:1,test:[1,3,6],testnet:[2,7],text:[0,1,4,6],tfile:0,than:[0,1,4,6],thei:[0,1,4,5,6],them:[0,1,3,4,6],thereaft:6,therefor:[6,8],thi:[0,1,2,3,4,5,6,7],thing:1,think:1,those:[4,6],though:[1,6],thourough:8,thousand:6,thread:0,three:[4,6],throough:3,throttl:4,through:[1,3,4,5,6,8],throughout:6,throughput:[6,8],thu:[4,5,6],ti:[0,6],time:[0,1,3,4,5,6,7],timeout:[0,5,7],timeout_callback:[],timeoutarg:0,timestr:0,tnc:[3,5,7,8],to_fil:5,todai:6,todo:[],togeth:6,token:[5,6],too:[0,4],tool:[6,8],top:[4,6],topic:6,topographi:[1,4,6],topolog:[3,6],total:[6,8],total_s:0,touch:8,toward:[0,6],tradeoff:6,tradit:[4,6],traffic:[0,1,3,4,5,6,7],tramsit:[],transceiv:[1,3,6,8],transfer:[0,5,6,7,8],transfer_s:0,transform:8,transmiss:[1,3,5,6],transmit:[0,3,6],transpar:[3,6],transpor:[],transport:[0,1,2,3,4,7,8],transport_en:5,transport_id:[],transport_typ:[],travers:6,treat:6,tri:0,trip:[0,5,7],trivial:8,truli:6,truncat:[5,6],truncated_hash:5,truncated_hashlength:5,trust:6,trustless:[4,6,8],ttime:0,ttransfer:0,ttyusb0:[3,7],ttyusb1:3,ttyusb2:3,tun0:3,tune:[],tunnel:[3,6,8],tupl:5,turnaround:3,tutori:1,two:[0,1,3,4,6],tx:3,txpower:3,txtail:[3,7],type:[0,1,2,3,4,5,7],typeerror:5,ubuntu:7,udp:[2,4,6,8],udpinterfac:3,uhf:[7,8],ultim:6,umsgpack:0,uncencrypt:0,uncensor:1,under:7,underli:[4,8],understand:[1,2],unencrypt:[0,5,6],unequivoc:6,unexplor:4,unforg:8,unidentifi:0,unifi:4,uninterest:0,uniqu:[6,8],unit:[0,7],unknown:[0,5,6],unless:[1,3,5,6],unlicens:6,unlik:6,unorganis:4,unpack:0,unpackb:0,unplug:7,unreli:3,unsign:[1,7],unsupport:5,until:[0,5],unwant:6,up:[0,1,3,4,6,7,8],updat:[0,1,5,6],upgrad:[1,6],upkeep:3,upon:[0,6],upset:0,urandom:8,us:[0,2,3,4,5,6],usabl:6,usag:[1,3,7],usb:[4,6,7],useabl:6,user:[0,1,3,4,6,7],user_input:0,userland:8,usernameher:7,usr:7,utf:0,util:[0,2,3,6],utilis:[1,4,7,8],v:7,valid:[0,3,5,6,7],valu:[3,5,6],valueerror:[0,5],vari:[6,7],variabl:0,varieti:[3,6,8],variou:[0,1,3,4,6],vast:6,ve:1,vendor:0,verbos:7,veri:[1,4,5,6,7,8],verif:[5,6],verifi:[0,5,6],versa:[4,8],version:[6,7],vhf:[4,6,8],via:[1,3,6,7],vice:[4,8],view:[1,6,7],virtual:[3,4,6,8],visibl:0,w:7,wa:[0,3,4,5,6,8],wai:[0,1,3,4,6],wait:[0,6],want:[0,1,3,4,6,7,8],wantedbi:7,warrant:8,wast:3,wb:0,we:[0,1,3,6],websit:3,weight:7,welcom:1,well:[1,3,4,5,6,8],went:0,were:4,what:[0,1,2,5,6],whatev:[5,6],wheel:1,when:[0,1,3,4,5,6,7],whenev:[5,6],where:[1,2,3,4,5,6,7],whereupon:6,whether:[0,3,5,6],which:[0,1,3,4,5,6,7],who:[1,6],wide:[3,6,8],wider:[1,6],wifi:[1,3,4,6,7,8],wildcard:0,willing:4,window:[],wire:[1,2,3,8],wireless:4,wish:6,within:[0,1,3,4,5,6],without:[1,4,6,8],wlan0:3,won:0,work:[1,4,6,7,8],world:[4,8],worri:4,would:[1,3,4,5,6],write:[0,1,5,6],written:6,wrong:0,x25519:[5,6,8],x:6,xenon:0,y:0,ye:[1,3,6],year:6,yet:[0,3,6],yi:0,ykzlw5ujbaqc2xkec4cpvgyxj257wcrmmgkuxqmqcur7cq3w3lha:1,you:[0,1,2,3,4,5,6,7,8],your:[0,1,2,3,4,6,8],yourself:[6,8],z:0,zero:[5,8],zeromq:[],zi:0},titles:["Code Examples","Getting Started Fast","Reticulum Network Stack Manual","Supported Interfaces","Building Networks","API Reference","Understanding Reticulum","Using Reticulum on Your System","What is Reticulum?"],titleterms:{"1":[],"2":[],"25":3,"class":5,"function":6,"public":[1,6],"try":1,The:[6,7],With:1,access:6,ad:1,android:1,announc:[0,6],api:5,arm64:1,auto:3,ax:3,base:1,basic:6,binari:[],bridg:4,broadcast:0,build:4,can:8,caveat:8,client:3,code:[0,6],common:3,concept:4,configur:7,connect:1,converg:4,creat:1,current:8,deliveri:[],destin:[5,6],detail:6,develop:1,devic:8,doe:8,echo:0,emptor:8,establish:6,exampl:[0,4],fast:1,filetransf:0,fix:7,format:6,further:6,get:[1,6],gipsum:[],goal:6,growth:4,i2p:3,ident:[5,6],identif:0,improv:7,includ:[1,7],indic:2,instanc:1,interconnect:4,interfac:[1,3,6,8],internet:[1,4],introduct:6,kei:6,kiss:3,link:[0,5,6],lora:[3,4],manual:2,mechan:6,minim:0,motiv:6,name:[6,7],network:[1,2,4],node:6,nomad:1,offer:8,option:3,orem:[],over:[1,4],overview:4,packet:[5,6],particip:1,pathfind:[],port:7,predict:[],prioritis:6,program:[1,7],protocol:6,proven:[],radio:1,reach:6,receipt:5,refer:[5,6],request:[0,5],resourc:[5,6],respons:0,reticulum:[1,2,5,6,7,8],retiiculum:[],rnode:3,rnpath:7,rnprobe:7,rnsd:7,rnstatu:7,run:[],scenario:4,serial:[3,7],server:3,servic:7,setup:6,sideband:1,site:4,specif:6,stack:2,start:1,statu:8,step:[],support:3,system:7,tabl:2,tcp:3,testnet:1,transport:[5,6],type:[6,8],udp:3,understand:6,us:[1,7,8],util:[1,7],virtual:[],what:8,where:8,wire:6,your:7}})
\ No newline at end of file
+Search.setIndex({docnames:["examples","gettingstartedfast","index","interfaces","networks","reference","understanding","using","whatis"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["examples.rst","gettingstartedfast.rst","index.rst","interfaces.rst","networks.rst","reference.rst","understanding.rst","using.rst","whatis.rst"],objects:{"RNS.Destination":{announce:[5,1,1,""],app_and_aspects_from_name:[5,1,1,""],clear_default_app_data:[5,1,1,""],create_keys:[5,1,1,""],decrypt:[5,1,1,""],deregister_request_handler:[5,1,1,""],encrypt:[5,1,1,""],full_name:[5,1,1,""],get_private_key:[5,1,1,""],hash:[5,1,1,""],hash_from_name_and_identity:[5,1,1,""],load_private_key:[5,1,1,""],register_request_handler:[5,1,1,""],set_default_app_data:[5,1,1,""],set_link_established_callback:[5,1,1,""],set_packet_callback:[5,1,1,""],set_proof_requested_callback:[5,1,1,""],set_proof_strategy:[5,1,1,""],sign:[5,1,1,""]},"RNS.Identity":{CURVE:[5,2,1,""],KEYSIZE:[5,2,1,""],TRUNCATED_HASHLENGTH:[5,2,1,""],decrypt:[5,1,1,""],encrypt:[5,1,1,""],from_bytes:[5,1,1,""],from_file:[5,1,1,""],full_hash:[5,1,1,""],get_private_key:[5,1,1,""],get_public_key:[5,1,1,""],get_random_hash:[5,1,1,""],load_private_key:[5,1,1,""],load_public_key:[5,1,1,""],recall:[5,1,1,""],recall_app_data:[5,1,1,""],sign:[5,1,1,""],to_file:[5,1,1,""],truncated_hash:[5,1,1,""],validate:[5,1,1,""]},"RNS.Link":{CURVE:[5,2,1,""],ESTABLISHMENT_TIMEOUT_PER_HOP:[5,2,1,""],KEEPALIVE:[5,2,1,""],get_remote_identity:[5,1,1,""],identify:[5,1,1,""],inactive_for:[5,1,1,""],no_inbound_for:[5,1,1,""],no_outbound_for:[5,1,1,""],request:[5,1,1,""],set_packet_callback:[5,1,1,""],set_remote_identified_callback:[5,1,1,""],set_resource_callback:[5,1,1,""],set_resource_concluded_callback:[5,1,1,""],set_resource_started_callback:[5,1,1,""],set_resource_strategy:[5,1,1,""],teardown:[5,1,1,""]},"RNS.Packet":{ENCRYPTED_MDU:[5,2,1,""],PLAIN_MDU:[5,2,1,""],resend:[5,1,1,""],send:[5,1,1,""]},"RNS.PacketReceipt":{get_rtt:[5,1,1,""],get_status:[5,1,1,""],set_delivery_callback:[5,1,1,""],set_timeout:[5,1,1,""],set_timeout_callback:[5,1,1,""]},"RNS.RequestReceipt":{get_progress:[5,1,1,""],get_request_id:[5,1,1,""],get_response:[5,1,1,""],get_response_time:[5,1,1,""],get_status:[5,1,1,""]},"RNS.Resource":{advertise:[5,1,1,""],cancel:[5,1,1,""],get_progress:[5,1,1,""]},"RNS.Reticulum":{ANNOUNCE_CAP:[5,2,1,""],MTU:[5,2,1,""],should_use_implicit_proof:[5,1,1,""],transport_enabled:[5,1,1,""]},"RNS.Transport":{PATHFINDER_M:[5,2,1,""],deregister_announce_handler:[5,1,1,""],has_path:[5,1,1,""],hops_to:[5,1,1,""],next_hop:[5,1,1,""],next_hop_interface:[5,1,1,""],register_announce_handler:[5,1,1,""],request_path:[5,1,1,""]},RNS:{Destination:[5,0,1,""],Identity:[5,0,1,""],Link:[5,0,1,""],Packet:[5,0,1,""],PacketReceipt:[5,0,1,""],RequestReceipt:[5,0,1,""],Resource:[5,0,1,""],Reticulum:[5,0,1,""],Transport:[5,0,1,""]}},objnames:{"0":["py","class","Python class"],"1":["py","method","Python method"],"2":["py","attribute","Python attribute"]},objtypes:{"0":"py:class","1":"py:method","2":"py:attribute"},terms:{"0":[0,3,5,6,8],"00":[6,7],"000":[],"00000000":6,"00000100":6,"00000111":6,"01":6,"01010000":6,"02":[],"05":0,"07":[],"1":[0,3,5,6,7],"10":[0,3,6,7],"100":[0,3,6],"1000":0,"10000000":6,"1024":0,"11":6,"115200":[3,7],"12":3,"1200":6,"125":3,"125000":3,"127":3,"128":[5,6,8],"13":7,"14":6,"141":[],"15":3,"150":[3,7],"150m":3,"151":6,"16":[3,7],"17":7,"18":[],"180":[],"182":[],"187":7,"2":[0,3,5,6,7],"20":[0,3,6,7],"200":[3,7],"2000000":[],"205":[],"211":[],"23":7,"237":[6,8],"24":3,"240":[],"25":[0,2,8],"255":3,"256":[5,6],"27":7,"270":[],"2f":0,"3":[0,6,7,8],"30":7,"323":[],"33":6,"34":[],"360":5,"3600":0,"367":[],"37":[],"37428":7,"38":7,"383":5,"3e12fc71692f8ec47bc5":1,"3w3lha":[],"4":[6,7],"409":[],"4242":3,"430":6,"45":0,"460":[],"469":7,"476":5,"477":6,"48555":3,"49":7,"49555":3,"4965":[1,7],"5":[0,3,5],"500":[5,6,8],"5001":3,"507":5,"512":[3,5,6],"5245a8efe1788c6a70e1":7,"55":3,"56b115c30cd386cad69c":7,"5urvjicpzi7q3ybztsef4i5ow2aq4soktfj7zedz53s47r54jnqq":3,"60":0,"600":3,"62":[6,8],"63":7,"64":[6,7],"7":3,"72":3,"74":7,"77":6,"7c565719ec7a8cdb1fe2":[],"7ca6f4e4dc26ae329e61":[],"8":[0,3,7],"80":[5,6,7],"8001":3,"80e29bf7cccaf31431b3":6,"83":[6,7],"86":7,"867":3,"867200000":3,"868":6,"88":3,"9":7,"900":6,"9382f334de63217a4278":7,"95":6,"\u00ec2pd":3,"abstract":6,"break":[5,6,8],"byte":[0,5,6,7,8],"case":[1,3,4,6,7],"class":[0,2,4,8],"default":[0,1,3,4,5,6],"do":[0,1,3,5,6,7,8],"export":1,"final":6,"float":[0,5],"function":[0,1,2,3,4,5,8],"import":[0,1,3,4,6],"int":0,"long":[0,3,6],"new":[0,3,4,5,6,7],"public":[0,2,3,5],"return":[0,5],"short":[6,7],"static":5,"switch":[3,6],"throw":[],"true":[0,1,3,5,7],"try":[0,2,3],"while":[0,1,3,4,5,6,8],A:[0,1,3,4,5,6,8],And:0,As:[1,3,4,5,6,8],At:[4,6],Be:[5,7],But:6,By:[0,1,3,5,6],For:[1,3,4,5,6,8],IF:[],IN:[0,5],If:[0,1,3,4,5,6,7,8],In:[0,1,3,4,5,6,7,8],It:[0,1,3,5,6,7,8],No:[3,6,8],On:[0,1,3,7],One:5,Or:3,That:6,The:[0,1,2,3,4,5,8],Then:1,There:[1,4,6,8],These:[1,3,6,7],To:[0,1,3,4,6,7,8],Will:5,With:[2,3,4,6,7],_:6,__:6,______:6,_______:6,________:6,________________:6,__init__:0,__main__:0,__name__:0,_exit:0,_with_:3,aarch64:1,ab:0,abil:1,abl:[0,1,3,4,5,6,7],about:[0,1,3,4,5,6],abov:[1,3,6],absolut:[1,8],accept:[5,6],accept_al:[0,5],accept_app:5,accept_non:5,access:[1,2,3,4,5,7],access_point:3,accomod:6,accord:6,accordingli:0,acheiv:[3,6],achiev:[5,6],acknowledg:8,across:4,act:[1,5,6],action:0,activ:[0,1,3,5,6],actor:6,actual:[0,1,3,6],ad:[0,2,4,5,6,8],adapt:4,add:[0,1,3,4,7],add_argu:0,addit:[6,8],addr1:[],addr2:[],address:[0,1,3,4,5,6,8],adher:5,admin:3,administr:7,adress:[0,1,4,5,6,8],advanc:6,advantag:5,adversari:1,advertis:[0,5],advis:6,ae:[6,8],affect:3,after:[0,4,6,7],again:[1,3,6],against:6,agenc:6,agent:6,agnost:[4,6],agnostic:6,aim:[2,6],air:8,airtim:3,aliv:[5,6],all:[0,1,2,3,4,5,6,7,8],alloc:[3,5,6,7],allow:[0,1,3,4,5,6,7,8],allow_al:[0,5],allow_list:5,allow_non:5,allowed_list:5,almost:[3,6],alo:6,alon:3,along:[4,6],alreadi:[0,1,4,6],als:[],also:[0,1,3,4,5,6,7,8],alter:6,altern:[0,3,7],although:[6,8],alwai:[1,5,6,7],amateur:[3,8],amet:[],amount:[3,4,5,6,8],an:[0,1,3,4,5,6,7,8],android:2,ani:[0,1,3,4,5,6,7,8],announc:[2,3,5],announce_cap:[3,5],announce_handl:0,announced_ident:[0,5],announceloop:0,announcesampl:0,announec:[],anonym:[1,4,5,6,8],anoth:[1,5,6,7],answer:[6,7],anymor:1,anyon:[0,1,4,5,6],anyth:[3,6],anywher:[0,3],ap:[3,6],apart:[],api:[1,2,6,8],apk:1,app:[0,1,5,6],app_and_aspects_from_nam:5,app_data:[0,5],app_nam:[0,5],app_timeout:0,append:[0,6],appli:[5,6],applic:[0,4,5,6,7],approach:[6,7],approv:6,approxim:[],apt:1,ar:[0,1,3,4,5,6,7,8],arbitrari:[5,6],arbritrari:8,architectur:1,area:[3,4,6,8],arg:0,argon:0,argpars:0,argument:[0,5,7],argumentpars:0,arm64:2,around:6,arriv:[0,6],ask:[0,5],aspect:[0,3,5,6],aspect_filt:[0,5],assign:[6,7],associ:[1,5,6],assum:[3,6],asymmetr:[6,8],attached_interfac:[],attack:1,attempt:5,attribut:5,audit:8,authent:[1,3,4,5,6,8],author:6,auto:[2,5,6],auto_compress:5,autoconfigur:[3,8],autodiscov:3,autointerfac:[3,7],autom:6,automat:[0,1,3,4,5,6,7,8],autonom:[4,6],autoomat:0,avail:[0,1,3,4,5,6,7,8],availadbl:[],averag:6,avoid:[6,7],awai:[0,4,6,7],awar:6,ax25kissinterfac:3,ax:[2,8],b32:[1,3],b:[0,4],back:[0,6,8],background:[1,3],backhaul:4,band:6,bandwidth:[1,3,4,5,6,8],bare:0,barrier:6,base32:3,base:[2,3,4,5,6,7,8],basi:[5,6,8],basic:[0,1,2],baud:3,beacon:3,beam:[],becaus:[4,6],becki:0,becom:[0,1,4,6],been:[0,1,3,4,5,6,8],befor:[0,1,5,6,7],begin:[0,5],begun:5,behaviour:3,behind:[1,6],being:[3,5,6],beings:6,belief:6,below:[1,3],benefici:7,best:[1,6,8],beta:8,better:3,between:[0,3,4,5,6],bgp:[],bi:6,bidirect:6,billion:[4,6],bin:7,binari:[0,1,6],bind:3,bit:[3,5,6,7,8],bitrat:3,blob:[0,6],block:3,board:[1,6,8],boot:7,both:[1,3,4,5,6,8],boundari:[3,6],bp:[],bridg:2,briefli:6,bring:3,broadcast:[1,2,3,5,6],broadcast_destin:0,broadcastloop:0,brought:[3,7],browser:1,buffer:3,bug:8,build:[0,1,2,3,6,8],built:[1,6,8],bundl:0,c:[0,4],cabl:4,cad:[],calcul:[5,6],call:[0,4,5,6,8],callabl:5,callback:[0,5],callsign:3,can:[0,1,2,3,4,5,6,7],cancel:5,candid:4,cannot:0,capabl:6,capac:[5,6],carambola:0,care:[1,5,8],carefulli:1,cargo_build_target:1,carri:[3,5,6],carrier:[4,8],caution:3,caveat:2,cb:6,cbc:8,cd:1,cdma:3,censor:6,censorship:6,central:[4,6],centralis:6,certain:[0,3,4,6],challeng:6,chang:[0,1,3,5,6,7,8],channel:[0,3,4,6,8],channelarg:0,chapter:[1,3,4,6,8],charact:0,characterist:6,cheap:6,check:[0,1,5,6],checksum:[5,8],choos:[0,1,3,6],choosen:6,chose:6,chosen:4,chunk:0,ciphertext:5,ciphertext_token:5,circumst:6,cl:0,clear:[0,5,6],clear_default_app_data:5,clear_screen:0,client:[0,1,2,5],client_connect:0,client_disconnect:0,client_ident:0,client_loop:0,client_packet_receiv:0,client_request:0,clone:1,close:[0,4,5],closed_callback:5,closer:6,closest:6,cluster:6,co:8,code:[1,2,3],codingr:3,com:[0,1],combin:[1,4,6],come:[1,6],comma:3,command:[0,1,7],comment:3,common:[1,2,4,6,8],commun:[0,1,3,4,5,6,7,8],compat:[1,3,5,6],compil:1,complet:[0,1,4,5,6,8],complex:[3,6],compon:6,compos:6,compress:[0,5,6],comput:[1,6,8],concaten:5,concept:[2,6],conceptu:6,conclud:[0,5],concurr:[6,7],condit:6,config:[0,1,4,7],configarg:0,configdir:5,configpath:0,configur:[0,1,2,3,4,5,6,8],confirm:[6,8],confus:6,congest:6,conjunct:3,connect:[0,2,3,4,5,6,7,8],consequ:[],consid:[6,8],consider:[],consist:6,constant:5,constantli:6,construct:6,consumpt:[],contact:6,contain:[0,4,5,6],contend:6,content:[4,7],context:6,continu:8,control:[0,1,3,4,5,6],conveni:0,convent:0,converg:[2,6],coordin:[4,5,6,8],core:[4,6,8],correct:[0,6],correctli:0,correspond:6,cost:[6,8],could:[0,1,3,4,5,6,8],count:6,counter:0,cours:[3,6],cover:[6,8],coverag:4,cpu:0,creat:[0,2,3,4,5,6,7],create_kei:5,create_receipt:[0,5],creation:6,creator:6,critic:6,cryptograph:[4,8],cryptographi:[1,6,8],ctrl:0,cull:5,current:[0,1,2,3,5,6],current_download:0,current_filenam:0,curv:[4,5,6,8],curve25519:[4,5,6,8],custom:[3,5,6],custom_network_nam:3,customis:3,d:[4,7],daemon:[1,3,5,7],dai:4,data:[0,1,3,4,5,6,8],data_port:3,databit:[3,7],date:[0,1],db:0,dbm:[0,3],debian:[6,7],debug:[],decai:[],decid:[4,5,6],decod:0,decrypt:[5,6],dedic:6,deep:1,def:0,default_timeout:[],defin:[0,3,6],definit:6,degrad:4,degre:3,delai:[1,6,7],deliv:[0,5],deliveri:[0,1,5,8],demand:5,demonstr:[0,3],depend:[1,4,6,7],deploi:6,deregist:5,deregister_announce_handl:5,deregister_request_handl:5,deriv:[6,8],describ:[3,5,6],descript:[0,7],design:[1,4,6,8],desir:[0,3,6],destin:[0,1,2,3,4,7],destination_1:0,destination_2:0,destination_clos:0,destination_hash:[0,5,7],destination_hexhash:0,detail:[0,1,2,3,5,7,8],detect:0,determin:[1,5,6],dev:[1,3,7],develop:[2,6,8],devic:[1,2,3,4,5,6,7],dh:5,dhcp:3,did:0,differ:[0,1,3,4,5,6,7,8],diffi:[4,6,8],difficult:1,digit:[6,8],dir:0,direct:[0,1,4,5,6],directli:[3,5,6,7,8],directori:[0,7],disabl:[3,6],disable_encrypt:[],disappear:3,disassoci:6,discard:6,disconnect:0,discov:1,discover:3,discoveri:[3,6,7],discovery_port:3,discovery_scop:3,discrimin:4,discuss:[1,6],disk:[0,5],displai:[0,6],dissolv:4,distanc:6,distant:5,distinct:[3,6],distinguish:6,distribut:[0,1,4,5,6,7],divmod:0,document:6,doe:[0,1,2,3,4,5,6],doesn:3,dolor:[],domain:[1,3],don:[0,1,4,5],done:[0,1,4,6],dori:4,dot:[6,7],down:0,downgrad:[],download:[0,3],download_began:0,download_conclud:0,download_finish:0,download_start:0,download_tim:0,driver:[7,8],droid:1,drop:[5,6,7],due:4,duplex:[6,8],dynam:[1,7],e702c42ba8:7,e:[0,4],each:[0,1,3,4,6],earli:1,earlier:6,eas:[3,6],easi:[1,3,6,7,8],easier:[1,4,7],easiest:[1,3,6],easili:[4,6,7,8],eca6f4e4dc26ae329e61:7,ecdh:[6,8],echo:[1,2,7],echo_destin:0,echo_request:0,ed25519:[6,8],edit:1,effeci:[],effici:[0,1,3,6,8],ei:0,either:[3,4,6],elaps:3,elif:0,ellipt:[4,5,6,8],els:[0,4,6],emploi:6,emptor:2,emul:1,enabl:[1,3,4,5,6,7],enable_transport:6,encapsul:[3,8],encod:0,encrypt:[0,1,4,5,6,8],encrypted_mdu:5,encryptionless:[],end:[0,4,5,6,8],endless:3,endpoint:[0,4,5,6],energi:1,engin:[],enhanc:6,enough:[1,6],ensur:[5,6],enter:0,entir:[4,6],entiti:6,entri:[0,1,6],enumer:0,environ:[1,4,6],environment:6,environmentlogg:6,ephemer:[4,5,6,8],equal:[4,6],equip:[3,4,6],equival:3,equl:[],error:[0,1],especi:3,essenti:[1,6],establish:[0,1,3,4,5,8],established_callback:5,establishment_timeout_per_hop:5,etc:7,eth0:3,eth1:3,ethernet:[1,3,4,6,8],even:[1,4,6,7,8],event:3,eventu:5,everi:[0,3,4,5,6],everyon:[4,6],everyth:[0,4,6],evolv:4,exact:6,exactli:[5,6],exampl:[1,2,3,5,6,7,8],example_util:[0,7],exampleannouncehandl:0,exce:[0,5],except:[0,3],exchang:[4,5,6,8],exclud:6,execstart:7,execstartpr:7,execut:[0,1,5,7],exhaust:6,exist:[0,1,3,6,8],exit:[0,1,5,7],exit_handl:0,expand:6,expect:[0,3,5,6,7],experi:[1,6],experiment:[1,8],expir:3,expiri:3,explain:5,explan:6,explicit:5,explicitli:[],explor:[0,6,8],expos:[3,5],extend:[0,1,5],extern:[1,3,5,8],extra:[1,3,4,7],extrem:[1,6,8],f:1,fa7ddfab5213f916dea:6,face:1,fact:8,factor:3,fail:[0,5],failed_callback:[0,5],failur:1,fals:[0,3,5],far:[4,6],fast:[2,5,6],faster:[1,3,6],fastest:[3,6],featur:[1,6,8],feed:5,feedback:0,feel:1,fernet:8,few:[1,3,4,6,7,8],fewer:5,fibr:8,field:6,file:[0,1,3,4,5,6,7,8],file_resourc:0,file_s:0,filelist:0,filelist_data:0,filelist_receiv:0,filelist_timeout_job:0,filenam:0,filetransf:[1,2,5],filter:[0,4,6],find:[4,6],firewal:[1,3],firmwar:[1,6],first:[0,1,3,5,6],fit:0,five:0,fix:[2,6],flag:[5,6],flexibl:[3,8],flow:[3,4],flow_control:3,flush:0,folder:1,follow:[0,1,3,6,7,8],forcibl:5,foreground:1,foremost:8,form:[1,3,4,5,6],format:[0,2,8],forth:0,forward:[3,5,6,8],forward_ip:3,forward_port:3,found:[0,1,3,4,6,7],four:4,frame:3,frankfurt:[1,7],free:[4,8],freedom:6,freeli:6,frequenc:[3,6],frequent:3,friendli:8,from:[0,1,3,4,5,6,7,8],from_byt:5,from_fil:5,fromhex:0,fruit:0,ftdi_ft230x_basic_uart_43891ckm:7,full:[0,3,5,6,7,8],full_hash:5,full_nam:[5,7],fulli:[6,8],funcion:5,fundament:6,further:[1,2],futur:[4,6],g:0,ga:0,gain:6,galact:6,gatekeep:6,gatewai:[1,4],gbp:7,gen:[],gener:[0,1,3,4,5,6,8],generalis:8,geograph:4,get:[0,2,3,5,8],get_packet_rssi:0,get_packet_snr:0,get_private_kei:5,get_progress:[0,5],get_public_kei:5,get_random_hash:[0,5],get_remote_ident:[0,5],get_request_id:5,get_respons:5,get_response_tim:5,get_rtt:[0,5],get_statu:5,geti2p:3,ghz:6,gi:0,gigabyt:8,gipsum:[],git:1,github:[0,1],give:[3,6,7],given:[3,4,5,6],global:[0,1,3,4,6,8],go:[0,1,6],goal:[2,3],good:[4,6],got:0,got_respons:0,govern:6,grape:0,graphic:1,great:6,greater:6,greatli:3,group:[3,5,6],group_id:3,grow:4,growth:2,guarante:[1,6],guess:3,guid:[1,5,6],h:[1,7],ha:[0,1,3,4,5,6,8],had:6,half:[6,8],hand:[0,1],handheld:6,handl:[0,3,4,5,6,7,8],handler:[0,5],happen:[0,5,6],hardlin:4,hardwar:[1,3,4,5,6,8],has_path:[0,5],hasattr:0,hash1:6,hash2:6,hash:[0,1,5,6,7],hash_from_name_and_ident:5,hashmap:0,have:[0,1,3,4,5,6,7],hazard:5,head:1,header:6,header_1:6,header_2:6,header_typ:[],hear:6,heard:[5,6],helium:0,hellman:[4,6,8],help:[0,4,6,7,8],her:4,here:[0,1,3,6,7],hexadecim:[0,6,7],hide:1,high:[3,6,8],higher:[4,8],highli:6,hill:4,hint:0,hit:0,hmac:8,hoc:8,hold:[5,6],home:4,homebrew:3,hop:[4,5,6,7,8],hops_to:5,host:[0,1,3,6,7],hostnam:3,hour:0,how:[0,1,3,4,6,8],howev:[1,4],http:[0,1],hub:3,huge:[],human:[0,5,6],i2p:[1,2,8],i2p_tunnel:3,i2pd:1,i2pinterfac:[1,3],i:0,id:[3,5,6,7],id_callsign:3,id_interv:3,idea:6,ideal:8,ident:[0,1,2,8],identif:[2,3,8],identifi:[0,3,5,6],identify:6,identifyexampl:0,ie:[],if00:7,ifac:[6,7],ifac_s:3,ifconfig:7,ignor:[3,5,6],ignored_devic:3,illustr:[4,6],immedi:[1,7],impact:[3,6],implement:[0,4,5,6,8],implic:3,implicit:[5,6],imposs:6,improv:[2,3],inactive_for:5,inbound:[3,5],includ:[0,2,3,5,6],incom:[0,3,5],incompat:[5,6],increas:3,incur:3,indefinit:[],independ:[5,6],independt:8,index:[0,1,2],indirectli:6,individu:[5,6],inevit:6,infer:6,info:[5,6],inform:[0,1,2,4,5,6],infrastructur:[1,3,4,6],ingo:5,initi:[0,4,5,6,8],initialis:[0,5,7],input:0,insert:6,insid:6,inspect:[1,3,4,6],instal:[1,3,4,7,8],instanc:[0,2,3,5,6,7],instanti:5,instead:[0,3,6,7],integr:[4,6],intend:[4,6],intention:6,inter:5,interact:[0,1,5,6],interchang:3,interconnect:[2,6],interest:6,interfac:[0,2,4,5,7],interface_en:[1,3,7],interface_mod:[],intermediari:6,intermitt:3,intern:[3,5],internet:[2,3,6,8],interoper:[1,4,6,8],interv:[3,5],intiat:0,introduc:6,introduct:2,intuit:8,invalid:[0,5],invers:6,investig:4,invis:[1,3],involv:4,io:[1,7],ip:[1,3,6,8],ipsum:[],ipv6:3,is_connected_to_shared_inst:0,is_request:[],is_respons:[],isdir:0,isfil:0,island:4,ism:6,isol:3,issu:4,its:[5,6],itself:[2,6],iv:8,job:0,join:[0,1,4,6],just:[0,1,3,4,6,8],k:0,kb:7,kbp:7,keep:[0,4,5,6,7,8],keepal:[5,6],kei:[0,2,4,5,8],kept:[3,4,5,6],kernel:[3,7,8],keyboardinterrupt:0,keyerror:5,keypair:6,keysiz:5,keystor:4,khz:3,ki:0,kill:[5,6],kilomet:[],kind:[3,4,6],kiss:[2,7,8],kiss_fram:3,kissinterfac:[3,7],know:[0,1,4,5,6],knowledg:[4,6],known:[0,5,6,7],krypton:0,lack:6,laid:6,lan:3,larg:[0,4,5,6,8],larger:[4,6],laser:3,last:[0,3,5],last_unit:0,latenc:[1,6,8],later:[0,1],latest:[0,1,3],latest_client_link:0,launch:1,lavg:[],layer:[3,4,6,8],lead:6,leak:1,learn:[0,1,6],least:[3,6,8],leav:[4,6],ledger:6,left:[3,5,6],legaci:4,len:0,length:[0,3,5,6],less:[3,6,8],let:[0,1,3,4,6,7],level:[3,6],libffi:1,librari:1,licens:6,light:7,like:[1,3,4,5,6,7,8],limit:[4,6],line:[0,1,4,6,8],link:[2,3,4,8],link_clos:0,link_establish:0,linkexampl:0,linux:[1,6],list:[0,3,5,6,8],list_deliv:0,list_fil:0,list_packet:0,list_receipt:0,list_timeout:0,listdir:0,listen:[0,3,6],listen_ip:3,listen_port:3,littl:6,lki:6,lkr:6,ll:[0,1,8],ln:[1,7],load:[0,5,7],load_private_kei:5,load_public_kei:5,local:[0,1,3,4,5,6,7,8],locat:[1,4,6,7],log:[0,3],log_error:0,log_info:0,loglevel:[0,5],longer:[0,4,6],longest:3,look:[0,1,3,6,7],loop:0,lora32:[],lora:[1,2,6,8],lorawan:6,lorem:[],lot:6,low:[1,3,4,6,8],lower:1,lxmf:1,m:[0,1,6,7],mac:6,machin:6,maco:1,made:[1,5,6],mai:[1,3,5,6],main:0,mainli:4,maintain:6,make:[1,6,7],malici:6,manag:[1,4,5,6],mani:[0,1,3,4,5,6,7,8],manipul:6,manner:4,manual:[0,1,3,4,5,7],mark:6,markqvist:[0,1],master:[0,5],match:[0,3,6],maximum:[3,5,6],mbp:7,mcu:[],mdu:0,mean:[4,6,7],measur:6,mechan:[2,3],medium:[3,4,5,6,8],member:4,memori:6,mention:6,menu:0,menu_mod:0,mesh:[1,3,4,8],messag:[0,1,5,6,7],messeng:6,metadata:1,metavar:0,method:[0,1,3,5,6],methodolog:[6,7],mhz:[3,6],mi:0,microcontrol:6,microwav:[],might:[1,3,4,6,7],millisecond:[0,7],mind:[4,8],minim:[2,6],minimalsampl:0,minimum:[0,4,6],minut:[0,1,3,6],mix:[1,3,4,7],mobil:[3,6],mode:[0,1,2,6,7,8],modem:[3,4,5,6,8],modifi:6,modul:[0,1,6,7,8],moment:[6,8],momentarili:3,monitor:6,moon:0,mor:[],more:[1,3,4,5,6,8],morej:[],most:[1,3,4,6,7],mostli:[3,4,6],motiv:2,move:[1,3,6],mqtt:[],mtu:[5,6,8],much:[1,3,4],multi:[6,7,8],multicast:3,multilater:6,multipl:[0,3,4,6,7],multipoint:6,must:[0,1,3,4,5,6],mw:3,my:6,mycal:3,myriad:6,n:[0,6],name:[0,2,3,4,5],namespac:0,nano:1,narg:0,natur:3,nears:6,necesarri:4,necessari:[1,3,5,6],necessarili:6,need:[0,1,2,3,4,6,7,8],neglig:6,neither:6,neon:0,net:3,netifac:1,network:[0,3,5,6,7,8],network_nam:3,never:[3,5,6],newer:6,newest:6,newli:[4,6],next:[1,4,5,6],next_hop:5,next_hop_interfac:5,nicknam:6,no1cll:3,no_inbound_for:5,no_outbound_for:5,nobl:0,noble_ga:0,noble_gas:0,node:[1,2,3,4,7,8],nodet:[],nomad:2,nomadnet:1,non:[1,5,6],none:[0,3,5,6,7],normal:[0,3,5],notat:[6,7],note:[0,1,3,6,7],noth:8,notic:6,notif:[0,5],now:[0,1,4,6,7],nt:0,num:0,number:[0,1,3,4,5,6,7],obfusc:[],object:5,obtain:6,obviusli:6,occasion:1,occur:8,off:[6,8],offer:[1,2,3,5,6],offlin:1,often:[1,4,6,7],oganesson:0,old:6,on_interfac:5,onc:[0,1,4,5,6,8],one:[0,1,3,4,5,6,7,8],ones:3,oneself:6,onli:[0,1,3,4,5,6,7,8],onlin:[],onto:6,open:[0,3,4,5,6,7,8],openmodem:[3,8],openssl:1,oper:[3,4,5,6,8],opt:6,optic:8,optim:4,optimis:[],option:[0,1,2,4,5,6,7],order:7,orem:[],organ:4,organis:[3,4],orient:6,origin:[0,4,6],original_hash:[],os:[0,3,6,7,8],ospf:[],other:[1,3,4,5,6,7],otherwis:5,our:[0,6],out:[0,1,3,4,5,6,8],outbound:[5,6],outgo:[0,1,3,5,6,7],outli:4,outlier:4,outlin:[1,6],output:[3,7],outward:[],over:[0,2,3,5,6,7,8],overal:6,overcom:6,overhead:[3,6],overrid:0,oversight:6,overview:[2,3,6],overwhelm:5,own:[0,1,4,5,6],owner:[],p:0,pack:0,packag:[1,3],packb:0,packet:[0,1,2,3,4,7,8],packet_callback:0,packet_deliv:0,packet_hash:0,packet_receipt:[0,5],packet_timed_out:0,packet_typ:[],packetreceipt:[0,5],pad:8,page:[1,2,6],pair:[3,6],palm:[],parallel:1,paramet:[3,4,5,6],pariti:[3,7],pars:0,parse_arg:0,parser:0,part:[0,3,4,6],particip:[2,4,6],pass:[0,3,4,5,6],passphras:[3,6],past:[],path:[0,1,3,5,6,7],path_respons:5,pathfind:[],pathfinder_m:5,pattern:6,payload:[5,6],peach:0,peer:[0,1,3,5,6,7],peer_pub_byt:[],peer_sig_pub_byt:[],peopl:6,per:[3,5,6,8],percent:0,percentag:5,perfect:[],perform:[0,1,3,4,6],period:[3,6],perman:7,permissionless:6,persecut:6,persist:[3,7],person:6,perspect:[3,6],pet:0,philosophi:6,physic:[1,3,6,7],pi:[0,4,6,7,8],pick:6,piec:6,ping:[1,7],pip3:[1,7],pip:[1,7],pkcs7:8,pkg:1,place:[4,6,7],plain:[0,3,5,6],plain_mdu:5,plaintext:[0,5],plan:[4,6],platform:[1,6],pleas:[0,1,3,7,8],plenti:6,plu:[],plug:7,pmr:6,point:[1,3,4,6,7],pomelo:0,poorli:4,popular:8,port0:7,port:[2,3,4,6,8],portabl:[3,6],posit:7,possess:6,possibl:[1,3,4,5,6,8],potenti:[0,3,6,7],power:[1,3,6],practic:[6,8],pre:[1,3,5,6],preambl:[3,7],precompil:1,predict:6,prefer:6,prepar:[0,4],prerequisit:5,presenc:5,preserv:[1,5],preshar:6,press:0,pretend:6,pretti:6,prettyhexrep:0,previou:0,previous:[4,5,6],primari:6,principl:[6,8],print:[0,3],print_filelist:0,print_help:0,print_menu:0,prioriti:6,prioritis:[2,4,5],privaci:8,privat:[1,3,5,6,8],privileg:7,probabl:[0,4,6,7,8],probe:7,problem:6,procedur:6,process:[1,3,5,6],product:[],program:[0,2,3,5,6],program_setup:0,programm:6,programmat:6,progress:[0,5,8],progress_callback:5,project:1,prompt:0,proof:[0,5,6,7],proof_packet:0,proof_requested_callback:5,proof_strategi:5,propag:[2,3,5],properli:1,properti:[4,5],proport:6,propos:1,protocol:[1,2,3,8],prove:[0,6],prove_al:[0,5],prove_app:5,prove_non:5,proven:[5,6],provid:[0,1,2,3,4,5,6,8],prv_byte:5,pub_byt:5,public_inform:0,publicli:1,purchas:[4,6,8],purg:5,purpos:[3,5,6],purposefulli:[],put:0,py:[0,1,7],pyseri:1,python3:[1,7],python:[1,6,7,8],q:[0,7],queri:[0,1],question:3,queu:5,queue:6,quickli:6,quiet:[3,7],quinc:0,quit:0,r:[0,6],radio:[2,3,4,5,6,7,8],radiu:[],radon:0,rais:[0,5],ram:3,rand:[],randint:0,random:[0,5,6],random_text_gener:0,randomis:6,randomli:[0,6],rang:[0,1,3,4,6,8],rare:3,raspberri:[4,6,7,8],rate:[0,3,7],rather:1,rb:0,re:[0,3,5,6],reach:[2,3,4],reachabl:[0,1,3,4,5,6,7],read:[0,1,6],readabl:[0,5,6],readi:[0,1,3,4,5,8],readili:8,real:[4,8],realli:[3,5],reason:[3,6],reassembl:6,reboot:1,recal:[0,5],recall_app_data:5,recap:6,receipt:[0,2,6],receiv:[0,1,3,5,6,7],received_announc:[0,5],recent:6,reception_rssi:0,reception_snr:0,reception_stat:0,recip:1,recipi:6,recommend:[0,1,6],reconstruct:6,record:[1,6],recoveri:3,recreat:6,refer:[0,1,2],regard:6,regist:[0,5],register_announce_handl:[0,5],register_request_handl:[0,5],rel:[6,8],relai:1,relat:1,releas:[1,3,6],relev:[0,3,5,6],reli:6,reliabl:[3,4,6,8],rem:0,remain:[5,6],rememb:6,remot:[0,5],remote_ident:[0,5],remote_identifi:0,remote_identity_hash:[],remote_p:0,remotesensor:6,remov:7,render:1,repeat:1,replac:[1,6,7],repli:[0,7],replic:6,reply_data:0,reply_text:0,report:3,repositori:[1,6],repres:6,represent:[0,6],request:[2,6,7],request_destin:0,request_fail:0,request_id:[0,5],request_packet:0,request_path:[0,5],request_receipt:[0,5],request_receiv:0,requested_at:[0,5],requestexampl:0,requestreceipt:5,requir:[0,1,3,4,6,7,8],research:8,resend:5,reserv:6,resili:8,resourc:[0,1,2],resource_callback:5,resource_sending_conclud:0,resource_strategi:5,respect:3,respond:[0,5],respons:[2,5,6],response_callback:[0,5],response_gener:[0,5],response_tim:[],rest:[4,8],restart:7,restartsec:7,restrict:4,result:[0,6],retain:3,reticulum:[0,3,4],retiiculum:[],retransmiss:6,retransmit:6,retri:6,reveal:[1,5,6,8],review:8,ridicul:6,right:4,rn:[0,1,5,7],rnode:[1,2,6,7,8],rnodeinterfac:[3,7],rnpath:[1,2],rnprobe:[1,2],rnsconfig:1,rnsd:[1,2],rnstatu:[1,2,3,6],roam:[3,6],robot:6,rotat:6,round:[0,5,7],rout:[1,3,4,5,6,8],routabl:[],router:3,rprogress:0,rsa:[],rssi:0,rtt:[0,5,6],rttstring:0,rule:[2,3],run:[0,1,3,4,5,6,7,8],runtim:6,rust:1,rw:[],rx:3,s:[0,1,3,4,6,7,8],said:6,same:[1,3,4,5,6,7],satisfi:6,save:[5,6],save_error:0,saved_filenam:0,scalabl:8,scale:6,scenario:[1,2,6],schedul:5,scope:3,screen:0,search:2,second:[0,3,5,6,7,8],secreci:[5,6,8],section:[1,3,4,6],secur:[1,6,8],see:[0,1,3,4,5,6,8],seek:6,seen:3,segment:[3,4,6,8],segment_index:[],select:[0,3],self:[0,4,8],send:[0,3,5,6,7],sender:[0,1,4,6],sendig:0,sensibl:1,sensor:6,sent:[0,1,5,6,7],sentiment:6,separ:[1,3,4,6,7],sequenc:[0,5,6,8],serial:[2,6,8],serialinterfac:3,serv:[0,3,4,6,7],serve_path:0,server:[0,1,2],server_callback:0,server_destin:0,server_fil:0,server_ident:0,server_link:0,server_loop:0,server_packet_receiv:0,servic:[1,2,4],session:6,set:[0,1,3,4,5,6,7,8],set_default_app_data:5,set_delivery_callback:[0,5],set_link_closed_callback:0,set_link_established_callback:[0,5],set_packet_callback:[0,5],set_proof_requested_callback:5,set_proof_strategi:[0,5],set_remote_identified_callback:[0,5],set_resource_callback:5,set_resource_concluded_callback:[0,5],set_resource_started_callback:[0,5],set_resource_strategi:[0,5],set_timeout:[0,5],set_timeout_callback:[0,5],setdaemon:0,setup:[0,1,2,3],sever:[1,4,5,7],sha256:8,sha:[5,6],shall:6,share:[1,4,5,6,7],she:4,shelf:[6,8],shop:0,shorter:3,shortest:6,shorthand:[3,7],should:[0,1,3,4,5,6,8],should_allow_unencrypt:[],should_quit:0,should_use_implicit_proof:5,show:7,shown:0,side:[3,8],sideband:2,sight:4,sign:[5,6],signatur:[5,6,8],significantli:3,similar:[1,3,4,7,8],simpl:[0,6,7,8],simpler:3,simplest:[3,6],simpli:[0,1,3,4,6,7],simplic:6,simultan:6,sinc:[0,1,3,4,5,6],singl:[0,3,5,6,8],singular:6,sit:[],site:[2,3],situat:[1,3,4,6],size:[0,1,3,5,6],size_str:0,sleep:[0,7],slice:0,slightli:1,slottim:[3,7],slow:[0,3,6],slower:[5,6],small:[0,3,4,6,8],smaller:5,snr:0,so:[0,1,3,4,5,6,7,8],softwar:[1,3,6,8],solut:6,solv:6,some:[0,1,3,4,6,7],someon:[1,3],someth:6,somethign:0,soon:5,sort:[3,6],soundmodem:3,sourc:[0,1,4,6,8],space:[0,1,4,6,8],span:6,special:[6,7],specif:[0,2,3,5,8],specifi:[0,1,3,4,5,7],spectrum:[3,6],speed:[3,6,7],split:0,sponsor:8,spread:3,spreadingfactor:3,squelch:3,ssid:3,stabl:[6,8],stack:[0,1,4,6,7,8],stage:[1,6],stai:[0,6,7],standard:[1,6],start:[0,2,3,5,6,7],startlimitintervalsec:[],startup:0,state:0,station:3,stationari:4,statist:0,statu:[0,1,2,3,5,6,7],stdout:0,step:1,still:[0,4,6],stock:0,stop:8,stopbit:[3,7],store:[0,6],store_tru:0,str:0,strategi:5,stream:6,strength:8,strictli:[3,6],string:[0,5],strong:6,structur:6,subject:[],subnet:[1,4],subsequ:6,succe:1,successful:5,successfulli:0,sucessfulli:6,sudo:[1,7],suffic:6,suffici:[1,3,6,7],suffix:0,suit:[1,6],suitabl:[0,1,3,4,6,8],suppli:[4,5,6],support:[0,1,2,4,6,8],sure:[1,7],surveil:6,surviv:6,sy:0,symlink:[1,7],symmetr:[5,6],system:[0,1,2,3,4,5,6,8],systemctl:7,systemd:7,t:[0,1,3,4,5,7],tabl:[1,3,4,6,7],tail:3,tailor:6,take:[0,1,3,6,8],taken:[0,6],tangerin:0,target:[0,7],target_host:[1,3],target_port:[1,3],tcp:[1,2,4,6,8],tcpclientinterfac:[1,3],tcpinterfac:7,tcpserverinterfac:[1,3],tdata:0,teardown:[0,5],teardown_reason:0,teffect:0,tell:[0,3],temperatur:6,ten:6,term:[4,6],termin:[1,5],terminolog:[4,6],termux:1,test:[1,3,6],testnet:[2,7],text:[0,1,4,6],tfile:0,than:[0,1,3,4,6],thei:[0,1,3,4,5,6],them:[0,1,3,4,6],thereaft:6,therefor:[6,8],thi:[0,1,2,3,4,5,6,7],thing:1,think:1,those:[4,6],though:[1,6],thourough:8,thousand:6,thread:0,three:[4,6],throough:3,throttl:4,through:[1,3,4,5,6,8],throughout:6,throughput:[6,8],thu:[4,5,6],ti:[0,6],time:[0,1,3,4,5,6,7],timeout:[0,5,7],timeout_callback:[],timeoutarg:0,timestr:0,tnc:[3,5,7,8],to_fil:5,todai:6,todo:[],togeth:6,token:[5,6],too:[0,4],tool:[6,8],top:[4,6],topic:6,topographi:[1,4,6],topolog:[3,6],total:[6,8],total_s:0,touch:8,toward:[0,6],tradeoff:6,tradit:[4,6],traffic:[0,1,3,4,5,6,7],tramsit:[],transceiv:[1,3,6,8],transfer:[0,5,6,7,8],transfer_s:0,transform:8,transmiss:[1,3,5,6],transmit:[0,3,6],transpar:[3,6],transpor:[],transport:[0,1,2,3,4,7,8],transport_en:5,transport_id:[],transport_typ:[],travers:6,treat:6,tri:0,trip:[0,5,7],trivial:8,truli:6,truncat:[5,6],truncated_hash:5,truncated_hashlength:5,trust:6,trustless:[4,6,8],ttime:0,ttransfer:0,ttyusb0:[3,7],ttyusb1:3,ttyusb2:3,tun0:3,tune:[],tunnel:[3,6,8],tupl:5,turnaround:3,tutori:1,two:[0,1,3,4,6],tx:3,txpower:3,txtail:[3,7],type:[0,1,2,3,4,5,7],typeerror:5,ubuntu:7,udp:[2,4,6,8],udpinterfac:3,uhf:[7,8],ultim:6,umsgpack:0,uncencrypt:0,uncensor:1,under:7,underli:[4,8],understand:[1,2],unencrypt:[0,5,6],unequivoc:6,unexplor:4,unforg:8,unidentifi:0,unifi:4,uninterest:0,uniqu:[6,8],unit:[0,7],unknown:[0,5,6],unless:[1,3,5,6],unlicens:6,unlik:6,unorganis:4,unpack:0,unpackb:0,unplug:7,unreli:3,unsign:[1,7],unsupport:5,until:[0,5],unwant:6,up:[0,1,3,4,6,7,8],updat:[0,1,5,6],upgrad:[1,6],upkeep:3,upon:[0,6],upset:0,urandom:8,us:[0,2,3,4,5,6],usabl:6,usag:[1,3,7],usb:[4,6,7],useabl:6,user:[0,1,3,4,6,7],user_input:0,userland:8,usernameher:7,usr:7,utf:0,util:[0,2,3,6],utilis:[1,4,7,8],v:7,valid:[0,3,5,6,7],valu:[3,5,6],valueerror:[0,5],vari:[6,7],variabl:0,varieti:[3,6,8],variou:[0,1,3,4,6],vast:6,ve:1,vehicl:3,vendor:0,verbos:7,veri:[1,4,5,6,7,8],verif:[5,6],verifi:[0,5,6],versa:[4,8],version:[6,7],vhf:[4,6,8],via:[1,3,6,7],vice:[4,8],view:[1,6,7],virtual:[3,4,6,8],visibl:0,w:7,wa:[0,3,4,5,6,8],wai:[0,1,3,4,6],wait:[0,6],want:[0,1,3,4,6,7,8],wantedbi:7,warrant:8,wast:3,wb:0,we:[0,1,3,6],websit:3,weight:7,welcom:1,well:[1,3,4,5,6,8],went:0,were:4,what:[0,1,2,5,6],whatev:[5,6],wheel:1,when:[0,1,3,4,5,6,7],whenev:[5,6],where:[1,2,3,4,5,6,7],whereupon:6,whether:[0,3,5,6],which:[0,1,3,4,5,6,7],who:[1,6],wide:[3,6,8],wider:[1,6],wifi:[1,3,4,6,7,8],wildcard:0,willing:4,window:[],wire:[1,2,3,8],wireless:4,wish:6,within:[0,1,3,4,5,6],without:[1,4,6,8],wlan0:3,won:0,work:[1,4,6,7,8],world:[4,8],worri:4,would:[1,3,4,5,6],write:[0,1,5,6],written:6,wrong:0,x25519:[5,6,8],x:6,xenon:0,y:0,ye:[1,3,6],year:6,yet:[0,3,6],yi:0,ykzlw5ujbaqc2xkec4cpvgyxj257wcrmmgkuxqmqcur7cq3w3lha:1,you:[0,1,2,3,4,5,6,7,8],your:[0,1,2,3,4,6,8],yourself:[6,8],z:0,zero:[5,8],zeromq:[],zi:0},titles:["Code Examples","Getting Started Fast","Reticulum Network Stack Manual","Supported Interfaces","Building Networks","API Reference","Understanding Reticulum","Using Reticulum on Your System","What is Reticulum?"],titleterms:{"1":[],"2":[],"25":3,"class":5,"function":6,"public":[1,6],"try":1,The:[6,7],With:1,access:6,ad:1,android:1,announc:[0,6],api:5,arm64:1,auto:3,ax:3,base:1,basic:6,binari:[],bridg:4,broadcast:0,build:4,can:8,caveat:8,client:3,code:[0,6],common:3,concept:4,configur:7,connect:1,converg:4,creat:1,current:8,deliveri:[],destin:[5,6],detail:6,develop:1,devic:8,doe:8,echo:0,emptor:8,establish:6,exampl:[0,4],fast:1,filetransf:0,fix:7,format:6,further:6,get:[1,6],gipsum:[],goal:6,growth:4,i2p:3,ident:[5,6],identif:0,improv:7,includ:[1,7],indic:2,instanc:1,interconnect:4,interfac:[1,3,6,8],internet:[1,4],introduct:6,kei:6,kiss:3,link:[0,5,6],lora:[3,4],manual:2,mechan:6,minim:0,mode:3,motiv:6,name:[6,7],network:[1,2,4],node:6,nomad:1,offer:8,option:3,orem:[],over:[1,4],overview:4,packet:[5,6],particip:1,pathfind:[],port:7,predict:[],prioritis:6,program:[1,7],propag:6,protocol:6,proven:[],radio:1,reach:6,receipt:5,refer:[5,6],request:[0,5],resourc:[5,6],respons:0,reticulum:[1,2,5,6,7,8],retiiculum:[],rnode:3,rnpath:7,rnprobe:7,rnsd:7,rnstatu:7,rule:6,run:[],scenario:4,serial:[3,7],server:3,servic:7,setup:6,sideband:1,site:4,specif:6,stack:2,start:1,statu:8,step:[],support:3,system:7,tabl:2,tcp:3,testnet:1,transport:[5,6],type:[6,8],udp:3,understand:6,us:[1,7,8],util:[1,7],virtual:[],what:8,where:8,wire:6,your:7}})
\ No newline at end of file
diff --git a/docs/manual/understanding.html b/docs/manual/understanding.html
index d2ca649..47f112c 100644
--- a/docs/manual/understanding.html
+++ b/docs/manual/understanding.html
@@ -5,7 +5,7 @@
- Understanding Reticulum — Reticulum Network Stack 0.3.5 beta documentation
+ Understanding Reticulum — Reticulum Network Stack 0.3.6 beta documentation
@@ -31,7 +31,7 @@
previous |
- Reticulum Network Stack 0.3.5 beta documentation »
+ Reticulum Network Stack 0.3.6 beta documentation »
Understanding Reticulum
@@ -858,6 +858,34 @@ but excluding any interface access codes.
+
+
Announce Propagation Rules
+
The following table illustrates the rules for automatically propagating announces
+from one interface type to another, for all possible combinations. See the
+Interface Modes section for a conceptual overview of the
+different interface modes, and how they are configured.
+
Full ────── ✓ ──┐ ┌── ✓ ── Full
+AP ──────── ✓ ──┼──── Full ────┼── ✕ ── AP
+Boundary ── ✓ ──┤ ├── ✓ ── Boundary
+Roaming ─── ✓ ──┘ └── ✓ ── Roaming
+
+Full ────── ✕ ──┐ ┌── ✓ ── Full
+AP ──────── ✕ ──┼───── AP ─────┼── ✕ ── AP
+Boundary ── ✕ ──┤ ├── ✓ ── Boundary
+Roaming ─── ✕ ──┘ └── ✓ ── Roaming
+
+Full ────── ✓ ──┐ ┌── ✓ ── Full
+AP ──────── ✓ ──┼── Roaming ───┼── ✕ ── AP
+Boundary ── ✕ ──┤ ├── ✕ ── Boundary
+Roaming ─── ✕ ──┘ └── ✕ ── Roaming
+
+Full ────── ✓ ──┐ ┌── ✓ ── Full
+AP ──────── ✓ ──┼── Boundary ──┼── ✕ ── AP
+Boundary ── ✓ ──┤ ├── ✓ ── Boundary
+Roaming ─── ✕ ──┘ └── ✕ ── Roaming
+
+
+
@@ -898,6 +926,7 @@ but excluding any interface access codes.
Packet Prioritisation
Interface Access Codes
Wire Format
+Announce Propagation Rules
@@ -943,12 +972,12 @@ but excluding any interface access codes.
previous |
- Reticulum Network Stack 0.3.5 beta documentation »
+ Reticulum Network Stack 0.3.6 beta documentation »
Understanding Reticulum
diff --git a/docs/manual/using.html b/docs/manual/using.html
index 09d712e..44b4761 100644
--- a/docs/manual/using.html
+++ b/docs/manual/using.html
@@ -5,7 +5,7 @@
- Using Reticulum on Your System — Reticulum Network Stack 0.3.5 beta documentation
+ Using Reticulum on Your System — Reticulum Network Stack 0.3.6 beta documentation
@@ -31,7 +31,7 @@
previous |
- Reticulum Network Stack 0.3.5 beta documentation »
+ Reticulum Network Stack 0.3.6 beta documentation »
Using Reticulum on Your System
@@ -352,12 +352,12 @@ WantedBy=multi-user.target
previous |
- Reticulum Network Stack 0.3.5 beta documentation »
+ Reticulum Network Stack 0.3.6 beta documentation »
Using Reticulum on Your System
diff --git a/docs/manual/whatis.html b/docs/manual/whatis.html
index 5b82758..ad6725c 100644
--- a/docs/manual/whatis.html
+++ b/docs/manual/whatis.html
@@ -5,7 +5,7 @@
- What is Reticulum? — Reticulum Network Stack 0.3.5 beta documentation
+ What is Reticulum? — Reticulum Network Stack 0.3.6 beta documentation
@@ -31,7 +31,7 @@
previous |
- Reticulum Network Stack 0.3.5 beta documentation »
+ Reticulum Network Stack 0.3.6 beta documentation »
What is Reticulum?
@@ -204,12 +204,12 @@ network, and vice versa.
previous |
- Reticulum Network Stack 0.3.5 beta documentation »
+ Reticulum Network Stack 0.3.6 beta documentation »
What is Reticulum?
diff --git a/docs/source/conf.py b/docs/source/conf.py
index e704159..889ca04 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -18,11 +18,11 @@ sys.path.insert(0, os.path.abspath('../..'))
# -- Project information -----------------------------------------------------
project = 'Reticulum Network Stack'
-copyright = '2021, Mark Qvist'
+copyright = '2022, Mark Qvist'
author = 'Mark Qvist'
# The full version, including alpha/beta/rc tags
-release = '0.3.5 beta'
+release = '0.3.6 beta'
# -- General configuration ---------------------------------------------------
diff --git a/docs/source/interfaces.rst b/docs/source/interfaces.rst
index c0c613a..25b7669 100644
--- a/docs/source/interfaces.rst
+++ b/docs/source/interfaces.rst
@@ -84,6 +84,60 @@ These can be used to control various aspects of interface behaviour.
option, to set the interface speed in *bits per second*.
+.. _interfaces-modes:
+
+Interface Modes
+===============
+
+The optional ``mode`` option is available on all interfaces, and allows
+selecting the high-level behaviour of the interface from a number of modes.
+These modes affect how Reticulum selects paths in the network, how announces
+are propagated and how long paths are valid.
+
+Configuring modes on interfaces is not strictly necessary, but can be useful
+when building or connecting to more complex networks. When not running a
+Transport Node, it is rarely useful to configure an interface mode.
+
+ * | The default value is ``full``. In this mode, all discovery,
+ meshing and transport functionality is activated.
+
+ * | In the ``access_point`` (or shorthand ``ap``) mode, the
+ interface will operate as a network access point. In this
+ mode, announces will not be automatically broadcasted on
+ the interface, and paths to destinations on the interface
+ will have a much shorter expiry time. This mode is useful
+ for creating interfaces that are mostly quiet, unless when
+ someone is actually using them. An example of this could
+ be a radio interface serving a wide area, where users are
+ expected to connect momentarily, use the network, and then
+ disappear again.
+
+ * | The ``roaming`` mode should be used on interfaces that are
+ roaming (physically mobile), seen from the perspective of
+ other nodes in the network. As an example, if a vehicle is
+ equipped with an external LoRa interface, and an internal,
+ WiFi-based interface, that serves devices that are moving
+ _with_ the vehicle, the external LoRa interface should be
+ configured as ``roaming``, and the internal interface can
+ be left in the default mode. With transport enabled, such
+ a setup will allow all internal devices to reach each other,
+ and all other devices that are available on the LoRa side
+ of the network, when they are in range. Devices on the LoRa
+ side of the network will also be able to reach devices
+ internal to the vehicle, when it is in range. Paths via
+ ``roaming`` interfaces also expire faster.
+
+ * | The purpose of the ``boundary`` mode is to specify interfaces
+ that establish connectivity with network segments that are
+ significantly different than the one this node exists on.
+ As an example, if a Reticulum instance is part of a LoRa-based
+ network, but also has a high-speed connection to a
+ public Transport Node available on the Internet, the interface
+ connecting over the Internet should be set to ``boundary`` mode.
+
+For a table describing the impact of all modes on announce propagation,
+please see the :ref:`Announce Propagation Rules` section.
+
.. _interfaces-auto:
Auto Interface
diff --git a/docs/source/understanding.rst b/docs/source/understanding.rst
index c2bdab9..a32ad5c 100644
--- a/docs/source/understanding.rst
+++ b/docs/source/understanding.rst
@@ -802,3 +802,38 @@ Wire Format
- Link Proof : 77 bytes
- Link RTT packet : 83 bytes
- Link keepalive : 14 bytes
+
+
+.. _understanding-announcepropagation:
+
+Announce Propagation Rules
+--------------------------
+
+The following table illustrates the rules for automatically propagating announces
+from one interface type to another, for all possible combinations. See the
+:ref:`Interface Modes` section for a conceptual overview of the
+different interface modes, and how they are configured.
+
+.. code-block:: text
+
+ Full ────── ✓ ──┐ ┌── ✓ ── Full
+ AP ──────── ✓ ──┼──── Full ────┼── ✕ ── AP
+ Boundary ── ✓ ──┤ ├── ✓ ── Boundary
+ Roaming ─── ✓ ──┘ └── ✓ ── Roaming
+
+ Full ────── ✕ ──┐ ┌── ✓ ── Full
+ AP ──────── ✕ ──┼───── AP ─────┼── ✕ ── AP
+ Boundary ── ✕ ──┤ ├── ✓ ── Boundary
+ Roaming ─── ✕ ──┘ └── ✓ ── Roaming
+
+ Full ────── ✓ ──┐ ┌── ✓ ── Full
+ AP ──────── ✓ ──┼── Roaming ───┼── ✕ ── AP
+ Boundary ── ✕ ──┤ ├── ✕ ── Boundary
+ Roaming ─── ✕ ──┘ └── ✕ ── Roaming
+
+ Full ────── ✓ ──┐ ┌── ✓ ── Full
+ AP ──────── ✓ ──┼── Boundary ──┼── ✕ ── AP
+ Boundary ── ✓ ──┤ ├── ✓ ── Boundary
+ Roaming ─── ✕ ──┘ └── ✕ ── Roaming
+
+