summaryrefslogtreecommitdiff
path: root/net-p2p/reticulum
diff options
context:
space:
mode:
Diffstat (limited to 'net-p2p/reticulum')
-rw-r--r--net-p2p/reticulum/Makefile16
-rw-r--r--net-p2p/reticulum/distinfo6
-rw-r--r--net-p2p/reticulum/files/config.sample57
-rw-r--r--net-p2p/reticulum/files/patch-RNS_Reticulum.py55
-rw-r--r--net-p2p/reticulum/files/patch-RNS_Utilities_rnsd.py6
-rw-r--r--net-p2p/reticulum/pkg-plist337
6 files changed, 259 insertions, 218 deletions
diff --git a/net-p2p/reticulum/Makefile b/net-p2p/reticulum/Makefile
index d31c6c6c2093..a86d44d8d095 100644
--- a/net-p2p/reticulum/Makefile
+++ b/net-p2p/reticulum/Makefile
@@ -1,20 +1,23 @@
PORTNAME= reticulum
-DISTVERSION= 0.7.7
-PORTREVISION= 1
+DISTVERSION= 0.9.6
CATEGORIES= net-p2p
-MASTER_SITES= PYPI
-DISTNAME= rns-${DISTVERSION}
MAINTAINER= cs@FreeBSD.org
COMMENT= Self-configuring, encrypted and resilient mesh networking stack
WWW= https://reticulum.network/
-LICENSE= MIT
+LICENSE= UNKNOWN
+LICENSE_NAME= Reticulum License
+LICENSE_FILE= ${WRKSRC}/LICENSE
+LICENSE_PERMS= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}netifaces>=0:net/py-netifaces@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}pyserial>0:comms/py-pyserial@${PY_FLAVOR}
+WRKSRC= ${WRKDIR}/Reticulum-${PORTVERSION}
USES= python
+USE_GITHUB= yes
+GH_ACCOUNT= markqvist
USE_PYTHON= cryptography distutils
USE_RC_SUBR= reticulum
GROUPS= _reticulum
@@ -27,7 +30,8 @@ PLIST_SUB= USERS="${USERS}" GROUPS="${GROUPS}"
NO_ARCH= yes
post-install:
- @${MKDIR} ${STAGEDIR}${ETCDIR} ${STAGEDIR}/var/db/reticulum ${STAGEDIR}/var/run/reticulum ${STAGEDIR}/var/log/reticulum
+ @${MKDIR} ${STAGEDIR}${ETCDIR} ${STAGEDIR}${ETCDIR}/interfaces ${STAGEDIR}/var/db/reticulum \
+ ${STAGEDIR}/var/run/reticulum ${STAGEDIR}/var/log/reticulum
${INSTALL_DATA} ${PATCHDIR}/config.sample ${STAGEDIR}${ETCDIR}/config.sample
.include <bsd.port.mk>
diff --git a/net-p2p/reticulum/distinfo b/net-p2p/reticulum/distinfo
index 4cd94c6520e0..33a0ea430607 100644
--- a/net-p2p/reticulum/distinfo
+++ b/net-p2p/reticulum/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1726335418
-SHA256 (rns-0.7.7.tar.gz) = 123f2a1f7e3b254a6c13c76bdb3811956d83e5f04221329f86929a64232c43db
-SIZE (rns-0.7.7.tar.gz) = 13049034
+TIMESTAMP = 1750013080
+SHA256 (markqvist-reticulum-0.9.6_GH0.tar.gz) = 0f3e1c5f341416bbedfd94c89d40f463aa136e1294cfe88c5cfc9de31e24123f
+SIZE (markqvist-reticulum-0.9.6_GH0.tar.gz) = 18189948
diff --git a/net-p2p/reticulum/files/config.sample b/net-p2p/reticulum/files/config.sample
index cc9dc03ac02e..2cb199d49829 100644
--- a/net-p2p/reticulum/files/config.sample
+++ b/net-p2p/reticulum/files/config.sample
@@ -4,7 +4,7 @@
[reticulum]
-# Define the DB directory
+# Define database directory
dbdir = "/var/db/reticulum"
# If you enable Transport, your system will route traffic
@@ -31,12 +31,24 @@ share_instance = Yes
# If you want to run multiple *different* shared instances
# on the same system, you will need to specify different
-# shared instance ports for each. The defaults are given
-# below, and again, these options can be left out if you
-# don't need them.
+# instance names for each. On platforms supporting domain
+# sockets, this can be done with the instance_name option:
-shared_instance_port = 37428
-instance_control_port = 37429
+instance_name = default
+
+# Some platforms don't support domain sockets, and if that
+# is the case, you can isolate different instances by
+# specifying a unique set of ports for each:
+
+# shared_instance_port = 37428
+# instance_control_port = 37429
+
+
+# If you want to explicitly use TCP for shared instance
+# communication, instead of domain sockets, this is also
+# possible, by using the following option:
+
+# shared_instance_type = tcp
# On systems where running instances may not have access
@@ -50,13 +62,25 @@ instance_control_port = 37429
# rpc_key = e5c032d3ec4e64a6aca9927ba8ab73336780f6d71790
+# It is possible to allow remote management of Reticulum
+# systems using the various built-in utilities, such as
+# rnstatus and rnpath. You will need to specify one or
+# more Reticulum Identity hashes for authenticating the
+# queries from client programs. For this purpose, you can
+# use existing identity files, or generate new ones with
+# the rnid utility.
+
+# enable_remote_management = yes
+# remote_management_allowed = 9fb6d773498fb3feda407ed8ef2c3229, 2d882c5586e548d79b5af27bca1776dc
+
+
# You can configure Reticulum to panic and forcibly close
# if an unrecoverable interface error occurs, such as the
# hardware device for an interface disappearing. This is
# an optional directive, and can be left out for brevity.
# This behaviour is disabled by default.
-panic_on_interface_error = No
+# panic_on_interface_error = No
# When Transport is enabled, it is possible to allow the
@@ -67,7 +91,7 @@ panic_on_interface_error = No
# Transport Instance, and printed to the log at startup.
# Optional, and disabled by default.
-respond_to_probes = No
+# respond_to_probes = No
[logging]
@@ -209,6 +233,23 @@ loglevel = 4
# Serial port for the device
port = /dev/ttyUSB0
+ # It is also possible to use BLE devices
+ # instead of wired serial ports. The
+ # target RNode must be paired with the
+ # host device before connecting. BLE
+ # devices can be connected by name,
+ # BLE MAC address or by any available.
+
+ # Connect to specific device by name
+ # port = ble://RNode 3B87
+
+ # Or by BLE MAC address
+ # port = ble://F4:12:73:29:4E:89
+
+ # Or connect to the first available,
+ # paired device
+ # port = ble://
+
# Set frequency to 867.2 MHz
frequency = 867200000
diff --git a/net-p2p/reticulum/files/patch-RNS_Reticulum.py b/net-p2p/reticulum/files/patch-RNS_Reticulum.py
index 6ddf70beb844..9b9049e157a7 100644
--- a/net-p2p/reticulum/files/patch-RNS_Reticulum.py
+++ b/net-p2p/reticulum/files/patch-RNS_Reticulum.py
@@ -1,6 +1,6 @@
---- RNS/Reticulum.py.orig 2022-11-03 16:31:20 UTC
+--- RNS/Reticulum.py.orig 2025-05-15 20:24:33 UTC
+++ RNS/Reticulum.py
-@@ -141,6 +141,7 @@ class Reticulum:
+@@ -165,6 +165,7 @@ class Reticulum:
# named ".reticulum" inside the current users home directory
userdir = os.path.expanduser("~")
configdir = None
@@ -8,30 +8,33 @@
configpath = ""
storagepath = ""
cachepath = ""
-@@ -181,7 +182,9 @@ class Reticulum:
+@@ -231,8 +232,11 @@ class Reticulum:
if configdir != None:
Reticulum.configdir = configdir
else:
- if os.path.isdir("/etc/reticulum") and os.path.isfile("/etc/reticulum/config"):
+ if os.path.isdir("/usr/local/etc/reticulum") and os.path.isfile("/usr/local/etc/reticulum/config"):
-+ Reticulum.configdir = "/usr/local/etc/reticulum"
-+ elif os.path.isdir("/etc/reticulum") and os.path.isfile("/etc/reticulum/config"):
Reticulum.configdir = "/etc/reticulum"
++ Reticulum.interfacepath = Reticulum.configdir+"interfaces"
++ elif os.path.isdir("/etc/reticulum") and os.path.isfile("/etc/reticulum/config"):
++ Reticulum.configdir = "/etc/reticulum"
elif os.path.isdir(Reticulum.userdir+"/.config/reticulum") and os.path.isfile(Reticulum.userdir+"/.config/reticulum/config"):
Reticulum.configdir = Reticulum.userdir+"/.config/reticulum"
-@@ -193,10 +196,7 @@ class Reticulum:
- RNS.logfile = Reticulum.configdir+"/logfile"
+ else:
+@@ -246,11 +250,8 @@ class Reticulum:
+ RNS.logcall = logdest
Reticulum.configpath = Reticulum.configdir+"/config"
- Reticulum.storagepath = Reticulum.configdir+"/storage"
- Reticulum.cachepath = Reticulum.configdir+"/storage/cache"
- Reticulum.resourcepath = Reticulum.configdir+"/storage/resources"
- Reticulum.identitypath = Reticulum.configdir+"/storage/identities"
+ Reticulum.interfacepath = Reticulum.configdir+"/interfaces"
+ Reticulum.dbdir = Reticulum.configdir
Reticulum.__transport_enabled = False
- Reticulum.__use_implicit_proof = True
-@@ -226,18 +226,6 @@ class Reticulum:
+ Reticulum.__link_mtu_discovery = Reticulum.LINK_MTU_DISCOVERY
+@@ -291,21 +292,6 @@ class Reticulum:
self.last_data_persist = time.time()
self.last_cache_clean = 0
@@ -41,25 +44,19 @@
- if not os.path.isdir(Reticulum.cachepath):
- os.makedirs(Reticulum.cachepath)
-
+- if not os.path.isdir(os.path.join(Reticulum.cachepath, "announces")):
+- os.makedirs(os.path.join(Reticulum.cachepath, "announces"))
+-
- if not os.path.isdir(Reticulum.resourcepath):
- os.makedirs(Reticulum.resourcepath)
-
- if not os.path.isdir(Reticulum.identitypath):
- os.makedirs(Reticulum.identitypath)
-
- if os.path.isfile(self.configpath):
- try:
- self.config = ConfigObj(self.configpath)
-@@ -253,7 +241,7 @@ class Reticulum:
-
- self.__apply_config()
- RNS.log("Configuration loaded from "+self.configpath, RNS.LOG_VERBOSE)
--
-+
- RNS.Identity.load_known_destinations()
+ if not os.path.isdir(Reticulum.interfacepath):
+ os.makedirs(Reticulum.interfacepath)
- RNS.Transport.start(self)
-@@ -345,6 +333,9 @@ class Reticulum:
+@@ -450,6 +436,9 @@ class Reticulum:
if "reticulum" in self.config:
for option in self.config["reticulum"]:
value = self.config["reticulum"][option]
@@ -69,21 +66,25 @@
if option == "share_instance":
value = self.config["reticulum"].as_bool(option)
self.share_instance = value
-@@ -369,6 +360,23 @@ class Reticulum:
- if v == False:
- Reticulum.__use_implicit_proof = False
+@@ -531,6 +520,27 @@ class Reticulum:
+ if self.local_socket_path == None and self.use_af_unix:
+ self.local_socket_path = "default"
++
+ Reticulum.storagepath = Reticulum.dbdir+"/storage"
+ Reticulum.cachepath = Reticulum.dbdir+"/storage/cache"
+ Reticulum.resourcepath = Reticulum.dbdir+"/storage/resources"
+ Reticulum.identitypath = Reticulum.dbdir+"/storage/identities"
-+
++
+ if not os.path.isdir(Reticulum.storagepath):
+ os.makedirs(Reticulum.storagepath)
+
+ if not os.path.isdir(Reticulum.cachepath):
+ os.makedirs(Reticulum.cachepath)
+
++ if not os.path.isdir(os.path.join(Reticulum.cachepath, "announces")):
++ os.makedirs(os.path.join(Reticulum.cachepath, "announces"))
++
+ if not os.path.isdir(Reticulum.resourcepath):
+ os.makedirs(Reticulum.resourcepath)
+
@@ -93,12 +94,12 @@
self.__start_local_interface()
if self.is_shared_instance or self.is_standalone_instance:
-@@ -1275,6 +1283,9 @@ __default_rns_config__ = '''# This is the default Reti
+@@ -1360,6 +1370,9 @@ __default_rns_config__ = '''# This is the default Reti
[reticulum]
+
-+# Define the DB directory
++# Define database directory
+dbdir = "/var/db/reticulum"
# If you enable Transport, your system will route traffic
diff --git a/net-p2p/reticulum/files/patch-RNS_Utilities_rnsd.py b/net-p2p/reticulum/files/patch-RNS_Utilities_rnsd.py
index 33f61985b665..2f737441e71a 100644
--- a/net-p2p/reticulum/files/patch-RNS_Utilities_rnsd.py
+++ b/net-p2p/reticulum/files/patch-RNS_Utilities_rnsd.py
@@ -1,10 +1,10 @@
---- RNS/Utilities/rnsd.py.orig 2023-02-23 17:25:44 UTC
+--- RNS/Utilities/rnsd.py.orig 2025-05-15 20:24:33 UTC
+++ RNS/Utilities/rnsd.py
-@@ -80,6 +80,9 @@ __example_rns_config__ = '''# This is an example Retic
+@@ -93,6 +93,9 @@ __example_rns_config__ = '''# This is an example Retic
[reticulum]
-+# Define the DB directory
++# Define database directory
+dbdir = "/var/db/reticulum"
+
# If you enable Transport, your system will route traffic
diff --git a/net-p2p/reticulum/pkg-plist b/net-p2p/reticulum/pkg-plist
index 630912d53f67..46cc04c6ebb4 100644
--- a/net-p2p/reticulum/pkg-plist
+++ b/net-p2p/reticulum/pkg-plist
@@ -8,11 +8,13 @@ bin/rnsd
bin/rnstatus
bin/rnx
@sample %%ETCDIR%%/config.sample
+%%PYTHON_SITELIBDIR%%/CRNS/__init__.py
+%%PYTHON_SITELIBDIR%%/CRNS/__pycache__/__init__%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/CRNS/__pycache__/__init__%%PYTHON_TAG%%.pyc
%%PYTHON_SITELIBDIR%%/RNS/Buffer.py
%%PYTHON_SITELIBDIR%%/RNS/Channel.py
%%PYTHON_SITELIBDIR%%/RNS/Cryptography/AES.py
%%PYTHON_SITELIBDIR%%/RNS/Cryptography/Ed25519.py
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/Fernet.py
%%PYTHON_SITELIBDIR%%/RNS/Cryptography/HKDF.py
%%PYTHON_SITELIBDIR%%/RNS/Cryptography/HMAC.py
%%PYTHON_SITELIBDIR%%/RNS/Cryptography/Hashes.py
@@ -21,54 +23,55 @@ bin/rnx
%%PYTHON_SITELIBDIR%%/RNS/Cryptography/Proxies.py
%%PYTHON_SITELIBDIR%%/RNS/Cryptography/SHA256.py
%%PYTHON_SITELIBDIR%%/RNS/Cryptography/SHA512.py
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/Token.py
%%PYTHON_SITELIBDIR%%/RNS/Cryptography/X25519.py
%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__init__.py
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/AES%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/AES%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Ed25519%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Ed25519%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Fernet%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Fernet%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/HKDF%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/HKDF%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/HMAC%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/HMAC%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Hashes%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Hashes%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/PKCS7%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/PKCS7%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Provider%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Provider%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Proxies%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Proxies%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/SHA256%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/SHA256%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/SHA512%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/SHA512%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/X25519%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/X25519%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/AES%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/AES%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Ed25519%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Ed25519%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/HKDF%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/HKDF%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/HMAC%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/HMAC%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Hashes%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Hashes%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/PKCS7%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/PKCS7%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Provider%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Provider%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Proxies%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Proxies%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/SHA256%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/SHA256%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/SHA512%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/SHA512%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Token%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/Token%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/X25519%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/X25519%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/__init__%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/__pycache__/__init__%%PYTHON_TAG%%.pyc
%%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/__init__.py
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/__pycache__/aes%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/__pycache__/aes%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/__pycache__/utils%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/__pycache__/utils%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/aes.py
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/utils.py
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/__pycache__/__init__%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/__pycache__/__init__%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/__pycache__/aes128%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/__pycache__/aes128%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/__pycache__/aes256%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/__pycache__/aes256%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/aes128.py
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/aes/aes256.py
%%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__init__.py
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__pycache__/_ed25519%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__pycache__/_ed25519%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__pycache__/basic%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__pycache__/basic%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__pycache__/ed25519_oop%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__pycache__/ed25519_oop%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__pycache__/eddsa%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__pycache__/eddsa%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__pycache__/__init__%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__pycache__/__init__%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__pycache__/_ed25519%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__pycache__/_ed25519%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__pycache__/basic%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__pycache__/basic%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__pycache__/ed25519_oop%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__pycache__/ed25519_oop%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__pycache__/eddsa%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/__pycache__/eddsa%%PYTHON_TAG%%.pyc
%%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/_ed25519.py
%%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/basic.py
%%PYTHON_SITELIBDIR%%/RNS/Cryptography/pure25519/ed25519_oop.py
@@ -80,15 +83,16 @@ bin/rnx
%%PYTHON_SITELIBDIR%%/RNS/Interfaces/Android/RNodeInterface.py
%%PYTHON_SITELIBDIR%%/RNS/Interfaces/Android/SerialInterface.py
%%PYTHON_SITELIBDIR%%/RNS/Interfaces/Android/__init__.py
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/Android/__pycache__/KISSInterface%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/Android/__pycache__/KISSInterface%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/Android/__pycache__/RNodeInterface%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/Android/__pycache__/RNodeInterface%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/Android/__pycache__/SerialInterface%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/Android/__pycache__/SerialInterface%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/Android/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/Android/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/Android/__pycache__/KISSInterface%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/Android/__pycache__/KISSInterface%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/Android/__pycache__/RNodeInterface%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/Android/__pycache__/RNodeInterface%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/Android/__pycache__/SerialInterface%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/Android/__pycache__/SerialInterface%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/Android/__pycache__/__init__%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/Android/__pycache__/__init__%%PYTHON_TAG%%.pyc
%%PYTHON_SITELIBDIR%%/RNS/Interfaces/AutoInterface.py
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/BackboneInterface.py
%%PYTHON_SITELIBDIR%%/RNS/Interfaces/I2PInterface.py
%%PYTHON_SITELIBDIR%%/RNS/Interfaces/Interface.py
%%PYTHON_SITELIBDIR%%/RNS/Interfaces/KISSInterface.py
@@ -100,32 +104,40 @@ bin/rnx
%%PYTHON_SITELIBDIR%%/RNS/Interfaces/TCPInterface.py
%%PYTHON_SITELIBDIR%%/RNS/Interfaces/UDPInterface.py
%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__init__.py
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/AX25KISSInterface%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/AX25KISSInterface%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/AutoInterface%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/AutoInterface%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/I2PInterface%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/I2PInterface%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/Interface%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/Interface%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/KISSInterface%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/KISSInterface%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/LocalInterface%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/LocalInterface%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/PipeInterface%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/PipeInterface%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/RNodeInterface%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/RNodeInterface%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/RNodeMultiInterface%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/RNodeMultiInterface%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/SerialInterface%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/SerialInterface%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/TCPInterface%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/TCPInterface%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/UDPInterface%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/UDPInterface%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/AX25KISSInterface%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/AX25KISSInterface%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/AutoInterface%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/AutoInterface%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/BackboneInterface%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/BackboneInterface%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/I2PInterface%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/I2PInterface%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/Interface%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/Interface%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/KISSInterface%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/KISSInterface%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/LocalInterface%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/LocalInterface%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/PipeInterface%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/PipeInterface%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/RNodeInterface%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/RNodeInterface%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/RNodeMultiInterface%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/RNodeMultiInterface%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/SerialInterface%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/SerialInterface%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/TCPInterface%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/TCPInterface%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/UDPInterface%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/UDPInterface%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/__init__%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/__pycache__/__init__%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/util/__init__.py
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/util/__pycache__/__init__%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/util/__pycache__/__init__%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/util/__pycache__/netinfo%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/util/__pycache__/netinfo%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Interfaces/util/netinfo.py
%%PYTHON_SITELIBDIR%%/RNS/Link.py
%%PYTHON_SITELIBDIR%%/RNS/Packet.py
%%PYTHON_SITELIBDIR%%/RNS/Resolver.py
@@ -133,26 +145,26 @@ bin/rnx
%%PYTHON_SITELIBDIR%%/RNS/Reticulum.py
%%PYTHON_SITELIBDIR%%/RNS/Transport.py
%%PYTHON_SITELIBDIR%%/RNS/Utilities/__init__.py
-%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rncp%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rncp%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnid%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnid%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnir%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnir%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnodeconf%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnodeconf%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnpath%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnpath%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnprobe%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnprobe%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnsd%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnsd%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnstatus%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnstatus%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnx%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnx%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/__init__%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/__init__%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rncp%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rncp%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnid%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnid%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnir%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnir%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnodeconf%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnodeconf%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnpath%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnpath%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnprobe%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnprobe%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnsd%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnsd%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnstatus%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnstatus%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnx%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/Utilities/__pycache__/rnx%%PYTHON_TAG%%.pyc
%%PYTHON_SITELIBDIR%%/RNS/Utilities/rncp.py
%%PYTHON_SITELIBDIR%%/RNS/Utilities/rnid.py
%%PYTHON_SITELIBDIR%%/RNS/Utilities/rnir.py
@@ -163,60 +175,58 @@ bin/rnx
%%PYTHON_SITELIBDIR%%/RNS/Utilities/rnstatus.py
%%PYTHON_SITELIBDIR%%/RNS/Utilities/rnx.py
%%PYTHON_SITELIBDIR%%/RNS/__init__.py
-%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Buffer%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Buffer%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Channel%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Channel%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Destination%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Destination%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Identity%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Identity%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Link%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Link%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Packet%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Packet%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Resolver%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Resolver%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Resource%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Resource%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Reticulum%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Reticulum%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Transport%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Transport%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/__pycache__/_version%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/__pycache__/_version%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Buffer%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Buffer%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Channel%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Channel%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Destination%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Destination%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Identity%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Identity%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Link%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Link%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Packet%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Packet%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Resolver%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Resolver%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Resource%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Resource%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Reticulum%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Reticulum%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Transport%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/__pycache__/Transport%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/__pycache__/__init__%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/__pycache__/__init__%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/__pycache__/_version%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/__pycache__/_version%%PYTHON_TAG%%.pyc
%%PYTHON_SITELIBDIR%%/RNS/_version.py
%%PYTHON_SITELIBDIR%%/RNS/vendor/__init__.py
-%%PYTHON_SITELIBDIR%%/RNS/vendor/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/__pycache__/configobj%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/__pycache__/configobj%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/__pycache__/platformutils%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/__pycache__/platformutils%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/__pycache__/six%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/__pycache__/six%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/__pycache__/umsgpack%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/__pycache__/umsgpack%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/vendor/__pycache__/__init__%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/vendor/__pycache__/__init__%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/vendor/__pycache__/configobj%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/vendor/__pycache__/configobj%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/vendor/__pycache__/platformutils%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/vendor/__pycache__/platformutils%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/vendor/__pycache__/umsgpack%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/vendor/__pycache__/umsgpack%%PYTHON_TAG%%.pyc
%%PYTHON_SITELIBDIR%%/RNS/vendor/configobj.py
%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__init__.py
-%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/__version__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/__version__%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/aiosam%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/aiosam%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/exceptions%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/exceptions%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/log%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/log%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/sam%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/sam%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/tunnel%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/tunnel%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/utils%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/utils%%PYTHON_EXT_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/__init__%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/__init__%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/__version__%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/__version__%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/aiosam%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/aiosam%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/exceptions%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/exceptions%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/log%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/log%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/sam%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/sam%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/tunnel%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/tunnel%%PYTHON_TAG%%.pyc
+%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/utils%%PYTHON_TAG%%.opt-1.pyc
+%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__pycache__/utils%%PYTHON_TAG%%.pyc
%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/__version__.py
%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/aiosam.py
%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/exceptions.py
@@ -224,30 +234,15 @@ bin/rnx
%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/sam.py
%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/tunnel.py
%%PYTHON_SITELIBDIR%%/RNS/vendor/i2plib/utils.py
-%%PYTHON_SITELIBDIR%%/RNS/vendor/ifaddr/__init__.py
-%%PYTHON_SITELIBDIR%%/RNS/vendor/ifaddr/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/ifaddr/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/ifaddr/__pycache__/_posix%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/ifaddr/__pycache__/_posix%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/ifaddr/__pycache__/_shared%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/ifaddr/__pycache__/_shared%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/ifaddr/__pycache__/_win32%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/ifaddr/__pycache__/_win32%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/ifaddr/__pycache__/niwrapper%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/ifaddr/__pycache__/niwrapper%%PYTHON_EXT_SUFFIX%%.pyc
-%%PYTHON_SITELIBDIR%%/RNS/vendor/ifaddr/_posix.py
-%%PYTHON_SITELIBDIR%%/RNS/vendor/ifaddr/_shared.py
-%%PYTHON_SITELIBDIR%%/RNS/vendor/ifaddr/_win32.py
-%%PYTHON_SITELIBDIR%%/RNS/vendor/ifaddr/niwrapper.py
%%PYTHON_SITELIBDIR%%/RNS/vendor/platformutils.py
-%%PYTHON_SITELIBDIR%%/RNS/vendor/six.py
%%PYTHON_SITELIBDIR%%/RNS/vendor/umsgpack.py
-%%PYTHON_SITELIBDIR%%/rns-0.7.7-py%%PYTHON_VER%%.egg-info/PKG-INFO
-%%PYTHON_SITELIBDIR%%/rns-0.7.7-py%%PYTHON_VER%%.egg-info/SOURCES.txt
-%%PYTHON_SITELIBDIR%%/rns-0.7.7-py%%PYTHON_VER%%.egg-info/dependency_links.txt
-%%PYTHON_SITELIBDIR%%/rns-0.7.7-py%%PYTHON_VER%%.egg-info/entry_points.txt
-%%PYTHON_SITELIBDIR%%/rns-0.7.7-py%%PYTHON_VER%%.egg-info/requires.txt
-%%PYTHON_SITELIBDIR%%/rns-0.7.7-py%%PYTHON_VER%%.egg-info/top_level.txt
+%%PYTHON_SITELIBDIR%%/rns-0.9.6-py%%PYTHON_VER%%.egg-info/PKG-INFO
+%%PYTHON_SITELIBDIR%%/rns-0.9.6-py%%PYTHON_VER%%.egg-info/SOURCES.txt
+%%PYTHON_SITELIBDIR%%/rns-0.9.6-py%%PYTHON_VER%%.egg-info/dependency_links.txt
+%%PYTHON_SITELIBDIR%%/rns-0.9.6-py%%PYTHON_VER%%.egg-info/entry_points.txt
+%%PYTHON_SITELIBDIR%%/rns-0.9.6-py%%PYTHON_VER%%.egg-info/requires.txt
+%%PYTHON_SITELIBDIR%%/rns-0.9.6-py%%PYTHON_VER%%.egg-info/top_level.txt
+@dir %%ETCDIR%%/interfaces
@owner %%USERS%%
@group %%GROUPS%%
@dir /var/db/reticulum