From 748a7290a9ee04ba8abe4e53b76947e9c0f9ccd1 Mon Sep 17 00:00:00 2001 From: Mark Qvist Date: Fri, 17 Jan 2025 12:47:02 +0100 Subject: [PATCH] Updated docs --- docs/Reticulum Manual.epub | Bin 3594378 -> 3594538 bytes docs/Reticulum Manual.pdf | Bin 3670990 -> 3671533 bytes docs/manual/genindex.html | 2 ++ docs/manual/objects.inv | Bin 2723 -> 2735 bytes docs/manual/reference.html | 16 ++++++++++++++++ docs/manual/searchindex.js | 2 +- 6 files changed, 19 insertions(+), 1 deletion(-) diff --git a/docs/Reticulum Manual.epub b/docs/Reticulum Manual.epub index 8ee81319a8e73262aadcfb44877f2f907e614833..cd969ae7e44483632c22197c243fc2724e4427b9 100644 GIT binary patch delta 25125 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 F{{f`39EJb@ delta 24989 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ⅆ; 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 a6-2t_>XzOB(GeEY(ZYx!5GGbwvHt*wF=8+P delta 52765 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�w=iN`XNODz=Tcx8>cp^*J8MaZ;{ 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
  • LINK_MTU_DISCOVERY (RNS.Reticulum attribute) +
  • +
  • link_mtu_discovery() (RNS.Reticulum static method)
    • diff --git a/docs/manual/objects.inv b/docs/manual/objects.inv index 5c79ba1d2f0a4605eb9e3c38f0f1af4be0fd529d..c0c0f85a8aa99bf02d0708fec3574839cf783617 100644 GIT binary patch delta 859 zcmV-h1El<;6|WVrfdzlFYSc1OMhW3Dm6hI&uY0Ww<*-Sv&I{CAM7J23@gptMBq|{R zlB`HcO!PYwH<>EF3(B0V*w!SANHy5mdcJ*r3RaJP7%eRyc|#r;a`=%qz`jK5wQv3E z+~oycBLoQ#@|QR|vS`60LET6>{sjq^7SmYj)z==`g?PjNO@4o>cL+AVLIt_k-z;&F z{F$ORsA2aPq4go14K`_g1!99Y2WvK9nGLLf86soD&)0z$))y5Ciihl_-(;U}Gm1I{ za)2_u`?O&&^r`)>zY=pJ=}*M0NGfuijH@?McHp`$*q}|097W?_2y!vLH=pKo2>LEJ z&s(Dm?Tt~C#E5^3>%4~=W{88!p-_>*SS6*3|zi4 zsy9{FX-_Srp_?=2tJFXrWX9F1H{|oh+9%5MI0FaYkPMA@b*VsxRGk#*p9ZT4MbVh$N7u8Vn9PmYobl!w*MYETZ zN8!&B>pftSANbt?=Ojnd>0n-m|`Gm;;XM2vm+6mT0D{M{douanuTnPs-k<-SNA(M0p8; zQtdj^^!|TPLM-#X%LW|)hOAR0!0*}progd`Y;b6$yf$?wcE=3T4mtF=e+Jvo$2 zIkG+{G=dx4I z<9@&;qoI<~WIRL+)mutD3j5( zvwM?o2ucCcle!3O0dtcl2`K@zlTis70hN<$305e#k87=~k0ZTr_+)~oqV|-}SKFYP l-Kxo`ke_qfh4j*Zdnz(V$zN@g=?OCdDw7=wf&`M*5Is6ori%ao delta 859 zcmV-h1El<~6{8iffdzk4_evScVUt_+`|2&A+cTc=BQ4V;Dj|W9tVl^r^g9nXnJPXD z%ABm&)+CEaGuYXBzI}cQR*!xdEiE5eLmn7%_>nchzC`P_ZT;%o0A+gjXv1LWQ~Of}wpLki3ROC1rS8sysz;#}?L7N;oipIYX1+R5f|5a z4>imX2bV*iraOO)hE#GvvnEAcCs$xEsL|ZW;P^{h@?d=6#n9 zIsgn=r$~Q*-?RHofnyoj;Lu9PTfuIU-(h^d7*q`1>%Cyw4+uEIw~SD#+VNK*Oz~fvj3U^=v%Pa3~Q()H>Pr)-C7dlOEJa| zzO09b2S>{W?mkw&8Pi$ePp|#aY30`!k`WmdZQXx&!bhLZWv86S{eVkGLnWihc!(IP zx0LWUpB8FSjT(|=;EG1*Rq@(V1u5{D&RSvy-NAC19!KcmN`hW!h^~m-XJsmgoz${| z4r+1C2pSERjY177h`5Ny_}j(WTciXk9SEv{Qc|4m z>l>4Y2tEPMlg0>a0W*^`2`K?IlU)fJ0gaP)305eVk87=~j~l&j_+)~oqV|-}SKFYP l-Kxo`ke_4Ph4j*Zdnz(V$zNTQ^$9Zp8j~psf&@{#`6iVdr5^wQ diff --git a/docs/manual/reference.html b/docs/manual/reference.html index d46fc56..d98a723 100644 --- a/docs/manual/reference.html +++ b/docs/manual/reference.html @@ -330,6 +330,21 @@ and pass announces over the network.

      +
      + +

      Returns whether link MTU discovery is enabled for the running +instance.

      +

      When link MTU discovery is enabled, Reticulum will +automatically upgrade link MTUs to the highest supported +value, increasing transfer speed and efficiency.

      +
      +
      Returns:
      +

      True if link MTU discovery is enabled, False if not.

      +
      +
      +
      +
      static remote_management_enabled()#
      @@ -2101,6 +2116,7 @@ will announce it.

    • get_instance()
    • should_use_implicit_proof()
    • transport_enabled()
    • +
    • link_mtu_discovery()
    • remote_management_enabled()
    diff --git a/docs/manual/searchindex.js b/docs/manual/searchindex.js index 77960d4..1111731 100644 --- a/docs/manual/searchindex.js +++ b/docs/manual/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["examples", "forhumans", "gettingstartedfast", "hardware", "index", "interfaces", "networks", "reference", "support", "understanding", "using", "whatis"], "filenames": ["examples.rst", "forhumans.rst", "gettingstartedfast.rst", "hardware.rst", "index.rst", "interfaces.rst", "networks.rst", "reference.rst", "support.rst", "understanding.rst", "using.rst", "whatis.rst"], "titles": ["Code Examples", "An Explanation of Reticulum for Human Beings", "Getting Started Fast", "Communications Hardware", "Reticulum Network Stack Manual", "Configuring Interfaces", "Building Networks", "API Reference", "Support Reticulum", "Understanding Reticulum", "Using Reticulum on Your System", "What is Reticulum?"], "terms": {"A": [0, 2, 5, 6, 7, 9, 10], "number": [0, 2, 5, 6, 7, 9, 10], "ar": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "includ": [0, 3, 4, 5, 7, 9, 11], "sourc": [0, 2, 3, 6, 9, 11], "distribut": [0, 2, 6, 7, 9, 10, 11], "reticulum": [0, 5, 6, 7], "you": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "can": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10], "us": [0, 3, 4, 5, 6, 7, 9], "learn": [0, 2, 8, 9], "how": [0, 2, 3, 5, 6, 9, 10, 11], "write": [0, 2, 5, 7, 9, 10], "your": [0, 2, 3, 4, 5, 6, 7, 8, 9, 11], "own": [0, 2, 6, 7, 9, 10, 11], "program": [0, 3, 4, 5, 7, 9, 11], "The": [0, 2, 3, 4, 5, 6, 7, 11], "demonstr": [0, 5], "bare": [0, 5], "minimum": [0, 5, 6, 7, 9], "setup": [0, 2, 4, 5, 10], "requir": [0, 2, 5, 6, 7, 9, 10, 11], "connect": [0, 3, 4, 5, 6, 7, 9, 10, 11], "network": [0, 3, 5, 7, 9, 10, 11], "from": [0, 2, 3, 5, 6, 7, 9, 10, 11], "In": [0, 2, 3, 5, 6, 7, 9, 10, 11], "about": [0, 2, 3, 5, 6, 7, 9], "five": 0, "line": [0, 2, 4, 5, 6, 9, 10, 11], "have": [0, 2, 3, 5, 6, 7, 9, 10], "stack": [0, 2, 6, 7, 9, 10, 11], "initialis": [0, 7, 10], "readi": [0, 2, 3, 5, 6, 7, 11], "pass": [0, 3, 5, 6, 7, 9, 10], "traffic": [0, 2, 5, 6, 7, 9, 10], "thi": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "rn": [0, 2, 3, 7, 9, 10], "start": [0, 3, 4, 5, 7, 9, 10], "up": [0, 2, 3, 5, 6, 7, 9, 10, 11], "gener": [0, 2, 3, 5, 6, 7, 9, 10, 11], "new": [0, 4, 6, 7, 9, 10], "destin": [0, 2, 4, 6, 7, 10], "let": [0, 2, 5, 6, 9, 10], "user": [0, 2, 5, 6, 9, 10, 11], "send": [0, 5, 7, 9, 10], "an": [0, 2, 3, 5, 6, 7, 9, 10, 11], "import": [0, 2, 3, 5, 6, 7, 8, 9], "argpars": 0, "": [0, 2, 5, 6, 9, 10, 11], "defin": [0, 5, 7, 9, 10], "app": [0, 2, 7, 9], "name": [0, 2, 4, 5, 6, 7], "we": [0, 2, 3, 5, 8, 9], "ll": [0, 2, 11], "all": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "creat": [0, 4, 5, 6, 7, 9, 10, 11], "sinc": [0, 2, 5, 6, 7, 9], "basic": [0, 2, 4, 5, 7, 10], "i": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10], "part": [0, 5, 6, 7, 9, 10], "rang": [0, 2, 3, 5, 6, 9, 10, 11], "util": [0, 3, 4, 5, 9], "put": [0, 3, 5, 10], "them": [0, 2, 3, 5, 6, 8, 9, 10, 11], "within": [0, 2, 5, 6, 7, 9], "namespac": 0, "example_util": 0, "app_nam": [0, 7], "execut": [0, 2, 5, 7, 10], "when": [0, 2, 3, 5, 6, 7, 9, 10], "def": 0, "program_setup": 0, "configpath": 0, "must": [0, 2, 5, 6, 7, 9, 10], "first": [0, 2, 5, 7, 9, 10], "randomli": [0, 9], "ident": [0, 2, 4, 7, 10, 11], "our": [0, 9], "just": [0, 2, 3, 5, 6, 9, 11], "endpoint": [0, 6, 7, 9], "address": [0, 2, 5, 6, 7, 9, 10, 11], "commun": [0, 2, 4, 5, 6, 7, 8, 9, 10, 11], "also": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "exist": [0, 2, 3, 5, 9, 10, 11], "which": [0, 2, 5, 6, 7, 9, 10], "know": [0, 2, 3, 6, 7, 9, 11], "thei": [0, 2, 5, 6, 7, 9, 10], "reachabl": [0, 2, 5, 6, 7, 9, 10], "automat": [0, 2, 5, 6, 7, 9, 10, 11], "path": [0, 2, 3, 5, 7, 9, 10], "anywher": [0, 5], "els": [0, 2, 6, 9], "IN": [0, 7], "singl": [0, 5, 7, 9, 10, 11], "minimalsampl": 0, "configur": [0, 2, 3, 4, 6, 7, 9, 11], "prove": [0, 9], "packet": [0, 2, 4, 5, 6, 7, 10, 11], "By": [0, 2, 5, 7, 9, 10], "do": [0, 2, 3, 5, 7, 9, 10, 11], "proof": [0, 7, 9, 10], "each": [0, 2, 5, 6, 7, 9, 10], "incom": [0, 5, 7, 10], "transmit": [0, 5, 9], "back": [0, 5, 9, 11], "sender": [0, 2, 6, 9, 10], "anyon": [0, 2, 3, 5, 6, 7, 9, 10], "tri": 0, "whether": [0, 2, 5, 7, 9], "wa": [0, 3, 5, 6, 7, 9, 10, 11], "receiv": [0, 2, 5, 7, 9, 10], "correctli": 0, "set_proof_strategi": [0, 7], "prove_al": [0, 7], "everyth": [0, 6, 9], "hand": 0, "over": [0, 3, 4, 5, 7, 9, 10, 11], "control": [0, 2, 3, 4, 6, 7, 9, 11], "loop": 0, "announceloop": 0, "log": [0, 2, 5, 10], "prettyhexrep": 0, "hash": [0, 2, 7, 9, 10], "run": [0, 2, 3, 5, 6, 7, 9, 10, 11], "hit": 0, "enter": [0, 10], "manual": [0, 2, 5, 6, 7, 10], "ctrl": 0, "c": [0, 6, 10], "quit": [0, 2], "until": [0, 2, 5, 7], "exit": [0, 2, 7, 10], "If": [0, 2, 3, 5, 6, 7, 9, 10, 11], "server": [0, 2, 3, 4, 7, 10], "client": [0, 2, 3, 4, 7, 10], "messag": [0, 2, 7, 9, 10], "direct": [0, 2, 3, 6, 7, 9, 10], "toward": [0, 5, 9], "while": [0, 2, 3, 5, 6, 7, 9, 11], "true": [0, 2, 5, 7, 10], "input": [0, 10], "sent": [0, 2, 7, 9, 10], "startup": [0, 2, 10], "get": [0, 3, 4, 5, 7, 10, 11], "pars": 0, "desir": [0, 3, 5, 9], "mode": [0, 2, 3, 4, 9, 10, 11], "__name__": 0, "__main__": 0, "try": [0, 4, 5, 7], "parser": 0, "argumentpars": 0, "descript": [0, 10], "add_argu": 0, "config": [0, 2, 5, 6, 10], "action": 0, "store": [0, 7, 9, 10], "default": [0, 2, 3, 5, 6, 7, 9, 10], "none": [0, 2, 5, 7, 9, 10], "help": [0, 2, 6, 8, 9, 10, 11], "altern": [0, 2, 5, 10], "directori": [0, 2, 10], "type": [0, 2, 4, 5, 6, 7, 10], "str": 0, "arg": 0, "parse_arg": 0, "configarg": 0, "except": [0, 5, 7], "keyboardinterrupt": 0, "print": [0, 5, 10], "found": [0, 2, 5, 6, 9, 10], "http": [0, 2, 8], "github": [0, 2, 8], "com": [0, 2, 8], "markqvist": [0, 2, 8], "blob": [0, 9], "master": [0, 7], "py": [0, 2, 9, 10], "build": [0, 2, 3, 4, 5, 9, 11], "upon": [0, 5, 9], "previou": 0, "explor": [0, 9, 11], "notif": [0, 7], "relev": [0, 3, 5, 7, 9, 10], "set": [0, 2, 3, 5, 6, 7, 9, 10, 11], "callback": [0, 7], "applic": [0, 2, 5, 6, 7, 9, 10, 11], "arriv": [0, 9], "random": [0, 7, 9], "two": [0, 2, 3, 5, 6, 7, 9], "list": [0, 2, 3, 5, 7, 9, 11], "string": [0, 7], "app_data": [0, 7], "fruit": 0, "peach": 0, "quinc": 0, "date": [0, 2], "tangerin": 0, "pomelo": 0, "carambola": 0, "grape": 0, "noble_gas": 0, "helium": 0, "neon": 0, "argon": 0, "krypton": 0, "xenon": 0, "radon": 0, "oganesson": 0, "announcesampl": 0, "space": [0, 2, 3, 6, 9, 11], "destination_1": 0, "destination_2": 0, "handler": [0, 7], "onli": [0, 2, 3, 5, 6, 7, 9, 10, 11], "ask": [0, 2, 3, 7], "chang": [0, 2, 5, 7, 9, 10, 11], "filter": [0, 6, 9, 10], "see": [0, 2, 5, 6, 7, 9, 10, 11], "what": [0, 2, 4, 5, 7, 9], "happen": [0, 2, 7, 9], "announce_handl": 0, "exampleannouncehandl": 0, "aspect_filt": [0, 7], "regist": [0, 7], "transport": [0, 2, 4, 5, 6, 7, 10, 11], "register_announce_handl": [0, 7], "select": [0, 5], "randint": 0, "0": [0, 2, 5, 7, 9, 10, 11], "len": 0, "1": [0, 2, 5, 7, 9, 10], "data": [0, 2, 3, 4, 5, 6, 7, 9, 11], "encod": [0, 7], "utf": 0, "8": [0, 5, 10], "nobl": 0, "ga": 0, "noble_ga": 0, "need": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "class": [0, 6, 7, 11], "method": [0, 2, 5, 7, 9], "take": [0, 2, 5, 9, 10, 11], "option": [0, 2, 3, 4, 6, 7, 9, 10], "argument": [0, 7, 10], "instanc": [0, 4, 5, 7, 9, 10], "some": [0, 2, 3, 5, 6, 7, 9, 10], "want": [0, 2, 5, 6, 9, 10, 11], "aspect": [0, 3, 5, 7, 9, 10], "__init__": [0, 7], "self": [0, 6, 11], "call": [0, 2, 6, 7, 9, 11], "system": [0, 2, 3, 4, 5, 6, 7, 8, 9, 11], "match": [0, 5, 9, 10], "specif": [0, 3, 4, 5, 7, 10], "cannot": [0, 2, 5, 11], "wildcard": 0, "received_announc": [0, 7], "destination_hash": [0, 7, 10], "announced_ident": [0, 7], "contain": [0, 6, 7, 9, 10], "follow": [0, 2, 3, 5, 7, 8, 9, 10, 11], "decod": 0, "plaintext": [0, 7], "unencrypt": [0, 7, 9], "inform": [0, 2, 4, 5, 6, 7, 9, 10], "ani": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "listen": [0, 5, 9, 10], "sy": 0, "did": 0, "one": [0, 2, 3, 5, 6, 7, 9, 10, 11], "public_inform": 0, "ad": [0, 3, 4, 5, 6, 7, 9, 11], "so": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "differ": [0, 2, 3, 5, 6, 7, 9, 10, 11], "plain": [0, 3, 5, 7, 9], "uncencrypt": 0, "broadcast_destin": 0, "specifi": [0, 2, 3, 5, 6, 7, 10], "everi": [0, 2, 5, 6, 7, 9], "time": [0, 2, 3, 5, 6, 7, 9, 10], "set_packet_callback": [0, 7], "packet_callback": 0, "main": 0, "broadcastloop": 0, "simpli": [0, 2, 3, 5, 6, 9, 10], "out": [0, 2, 3, 5, 6, 7, 9, 10, 11], "r": [0, 5, 9, 10], "n": [0, 9, 10], "end": [0, 5, 6, 7, 9, 11], "stdout": [0, 5, 10], "flush": 0, "text": [0, 2, 6, 9], "prompt": [0, 2], "channelarg": 0, "between": [0, 5, 6, 7, 9, 10], "simpl": [0, 3, 7, 9, 10, 11], "respond": [0, 7, 10], "receipt": [0, 7, 9], "choos": [0, 2, 5, 9], "global": [0, 2, 5, 6, 7, 9, 11], "server_ident": 0, "queri": [0, 2, 7, 10], "abl": [0, 2, 5, 6, 7, 9, 10], "verifi": [0, 2, 7, 9, 10, 11], "repli": [0, 10], "encrypt": [0, 2, 6, 7, 9, 10, 11], "wai": [0, 2, 5, 6, 7, 9, 10], "certain": [0, 5, 6, 8, 9], "than": [0, 2, 5, 6, 7, 9, 10, 11], "read": [0, 2, 5, 7, 9, 10], "echo_destin": 0, "tell": [0, 5], "function": [0, 2, 3, 4, 5, 6, 7, 8, 10, 11], "server_callback": 0, "wait": [0, 5, 9, 10], "go": [0, 2, 5, 9], "handl": [0, 3, 5, 6, 7, 9, 10, 11], "reception_stat": 0, "is_connected_to_shared_inst": 0, "reception_rssi": 0, "get_packet_rssi": 0, "packet_hash": 0, "reception_snr": 0, "get_packet_snr": 0, "rssi": [0, 7, 10], "dbm": [0, 5, 10], "snr": [0, 7, 10], "db": [0, 10], "destination_hexhash": 0, "timeout": [0, 7, 10], "binari": [0, 2, 7, 9, 10], "represent": [0, 7], "command": [0, 2, 5, 10], "dest_len": 0, "truncated_hashlength": [0, 7], "2": [0, 5, 7, 9, 10], "rais": [0, 7], "valueerror": [0, 7], "length": [0, 5, 7, 9], "invalid": [0, 7], "hex": [0, 10], "hexadecim": [0, 9, 10], "charact": 0, "byte": [0, 7, 9, 10, 11], "format": [0, 4, 10, 11], "fromhex": 0, "e": [0, 6, 10], "check": [0, 2, 7, 9, 10], "overrid": 0, "loglevel": [0, 7, 10], "provid": [0, 2, 3, 4, 5, 6, 7, 9, 11], "feedback": [0, 4], "log_info": 0, "doe": [0, 2, 3, 4, 5, 6, 7, 9, 10], "load": [0, 2, 7, 10, 11], "has_path": [0, 7], "To": [0, 2, 3, 5, 6, 9, 10, 11], "public": [0, 4, 5, 7, 10], "kei": [0, 4, 6, 7, 10, 11], "done": [0, 2, 5, 6, 9, 10], "recal": [0, 7, 10], "modul": [0, 2, 3, 5, 9, 10, 11], "known": [0, 5, 7, 9, 10], "return": [0, 7, 10], "outgo": [0, 5, 7, 9, 10], "got": 0, "correct": [0, 9], "convent": 0, "request_destin": 0, "add": [0, 2, 5, 6, 7, 10], "echo_request": 0, "get_random_hash": [0, 7], "successfulli": [0, 7, 9], "packetreceipt": [0, 4, 7], "packet_receipt": [0, 7], "set_timeout": [0, 7], "set_timeout_callback": [0, 7], "packet_timed_out": 0, "deliveri": [0, 2, 7, 11], "set_delivery_callback": [0, 7], "packet_deliv": 0, "yet": [0, 5, 9, 11], "retri": [0, 7, 9], "onc": [0, 2, 3, 5, 6, 7, 9, 10, 11], "request_path": [0, 7], "statu": [0, 2, 4, 5, 7, 9, 10], "deliv": [0, 7], "rtt": [0, 7, 9], "get_rtt": [0, 7], "round": [0, 7, 10], "3": [0, 2, 5, 9, 10, 11], "rttstring": 0, "second": [0, 5, 7, 9, 10, 11], "1000": 0, "millisecond": [0, 10], "proof_packet": 0, "valid": [0, 5, 7, 9, 10], "trip": [0, 7, 10], "fail": [0, 2, 7], "store_tru": 0, "t": [0, 2, 5, 6, 7, 10], "metavar": 0, "float": [0, 7], "narg": 0, "timeoutarg": 0, "print_help": 0, "establish": [0, 2, 5, 6, 7, 11], "remot": [0, 4, 7], "forth": 0, "o": [0, 2, 9, 10, 11], "refer": [0, 2, 4], "latest": [0, 2, 5, 7, 10], "latest_client_link": 0, "server_destin": 0, "linkexampl": 0, "set_link_established_callback": [0, 7], "client_connect": 0, "server_loop": 0, "set_link_closed_callback": [0, 7], "client_disconnect": 0, "server_packet_receiv": 0, "disconnect": [0, 5], "activ": [0, 2, 5, 7, 9], "last": [0, 5, 7], "reply_text": 0, "reply_data": 0, "server_link": 0, "sleep": [0, 10], "begin": [0, 3, 7], "And": 0, "client_packet_receiv": 0, "close": [0, 6, 7, 10], "link_establish": 0, "link_clos": 0, "interact": [0, 2, 7, 9, 10], "client_loop": 0, "becom": [0, 2, 6, 7, 9], "should_quit": 0, "fals": [0, 5, 7, 10], "should": [0, 2, 5, 6, 7, 9, 10, 11], "q": [0, 10], "teardown": [0, 7], "mdu": [0, 7], "size": [0, 2, 5, 7, 9, 10], "exce": [0, 5, 7], "log_error": 0, "error": [0, 2, 8, 10], "ha": [0, 2, 3, 5, 6, 7, 9, 11], "been": [0, 2, 3, 5, 6, 7, 9, 11], "later": [0, 2, 5, 10], "teardown_reason": 0, "now": [0, 2, 6, 9, 10], "elif": 0, "destination_clos": 0, "exit_handl": 0, "5": [0, 2, 5, 7, 9, 10, 11], "_exit": 0, "identifi": [0, 5, 7, 9, 10], "intiat": 0, "initi": [0, 6, 7, 9, 11], "peer": [0, 2, 5, 7, 9, 10], "identifyexampl": 0, "set_remote_identified_callback": [0, 7], "remote_identifi": 0, "origin": [0, 6, 9], "displai": [0, 9, 10], "remote_p": 0, "unidentifi": 0, "get_remote_ident": [0, 7], "client_ident": 0, "sendig": 0, "perform": [0, 2, 5, 6, 7, 9, 10], "random_text_gener": 0, "request_id": [0, 7], "link_id": [0, 7], "remote_ident": [0, 7], "requested_at": [0, 7], "look": [0, 2, 5, 9, 10], "On": [0, 2, 5, 10], "full": [0, 2, 5, 7, 9, 10, 11], "moon": 0, "becki": 0, "upset": 0, "stai": [0, 9, 10], "awai": [0, 5, 6, 9, 10], "pet": 0, "shop": 0, "stock": 0, "requestexampl": 0, "register_request_handl": [0, 7], "response_gener": [0, 7], "allow": [0, 2, 3, 5, 6, 7, 9, 10, 11], "allow_al": [0, 7], "response_callback": [0, 7], "got_respons": 0, "failed_callback": [0, 7], "request_fail": 0, "request_receipt": [0, 7], "request_receiv": 0, "structur": [0, 7, 9, 11], "datetim": 0, "vendor": [0, 3, 11], "umsgpack": 0, "share": [0, 2, 6, 7, 9, 10], "object": [0, 7], "subclass": [0, 7], "messagebas": [0, 4, 7], "ensur": [0, 5, 7, 9, 10, 11], "serial": [0, 2, 4, 9, 11], "deseri": 0, "multiplex": 0, "other": [0, 2, 3, 5, 6, 7, 9, 10], "both": [0, 2, 3, 5, 6, 7, 9, 10, 11], "same": [0, 2, 3, 5, 6, 7, 9, 10], "definit": [0, 9], "note": [0, 3, 4, 5, 7, 9, 10], "wish": [0, 9, 10], "make": [0, 2, 3, 5, 8, 9, 10, 11], "stringmessag": 0, "convei": 0, "timestamp": [0, 9], "msgtype": [0, 7], "variabl": [0, 2, 7], "assign": [0, 9, 10], "integ": 0, "valu": [0, 5, 7, 9], "constructor": 0, "uniqu": [0, 5, 7, 9, 11], "across": [0, 3, 6, 7], "0xf000": [0, 7], "reserv": [0, 7], "0x0101": 0, "callabl": [0, 7], "paramet": [0, 3, 5, 6, 7, 9, 10], "empti": 0, "version": [0, 2, 7, 9, 10], "unpack": [0, 7], "final": [0, 7, 9], "implement": [0, 5, 6, 7, 8, 9, 11], "pack": [0, 7], "raw": [0, 3, 7], "payload": [0, 7, 9, 10], "packag": [0, 2, 5, 9], "bundl": 0, "could": [0, 2, 5, 6, 7, 9, 11], "struct": 0, "python": [0, 4, 7, 9, 10, 11], "more": [0, 2, 3, 5, 6, 7, 9, 10, 11], "fit": 0, "entir": [0, 2, 6, 7, 9, 10], "avail": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "properti": [0, 6, 7], "slightli": [0, 2], "less": [0, 5, 7, 9, 11], "due": [0, 6], "header": [0, 7, 9], "content": [0, 2, 6, 10], "stream": [0, 7, 9], "packb": 0, "unpackb": 0, "channelexampl": 0, "get_channel": [0, 7], "register_message_typ": [0, 7], "add_message_handl": [0, 7], "server_message_receiv": 0, "param": 0, "deserializ": 0, "unless": [0, 2, 5, 7, 9], "preced": 0, "indic": [0, 7], "isinst": 0, "reply_messag": 0, "order": [0, 7, 10], "were": [0, 6], "consid": [0, 5, 7, 9, 11], "subsequ": [0, 9], "skip": 0, "packed_s": 0, "is_ready_to_send": [0, 7], "pleas": [0, 2, 5, 7, 10, 11], "pend": 0, "complet": [0, 2, 3, 5, 6, 7, 9, 10, 11], "client_message_receiv": 0, "reader": [0, 7], "writer": [0, 7], "__future__": 0, "annot": 0, "latest_buff": 0, "bufferexampl": 0, "old": [0, 3, 8, 9], "stream_id": [0, 7], "bit": [0, 2, 5, 7, 9, 10, 11], "like": [0, 2, 3, 5, 6, 7, 9, 10, 11], "file": [0, 2, 3, 5, 6, 7, 9, 10, 11], "descriptor": 0, "actual": [0, 2, 5, 9], "separ": [0, 2, 5, 6, 9, 10], "unidirect": 0, "flow": [0, 5, 6], "opposit": [0, 5], "create_bidirectional_buff": [0, 7], "server_buffer_readi": 0, "ready_byt": [0, 7], "int": [0, 7], "otherwis": [0, 7], "forc": [0, 10], "server_client_connect": 0, "detail": [0, 2, 4, 5, 7, 10, 11], "client_buffer_readi": 0, "termin": [0, 2, 7], "download": [0, 2, 5, 10], "resourc": [0, 2, 4, 5, 7, 8], "effici": [0, 2, 5, 9, 11], "serv": [0, 3, 5, 6, 9, 10], "larg": [0, 3, 5, 6, 7, 9, 11], "transfer": [0, 7, 9, 10, 11], "recommend": [0, 2, 9], "compress": [0, 7, 9, 11], "hashmap": 0, "sequenc": [0, 7, 9, 11], "long": [0, 2, 3, 5, 7, 9], "slow": [0, 5, 9], "cpu": [0, 9], "probabl": [0, 2, 6, 9, 10, 11], "result": [0, 9, 10], "befor": [0, 2, 5, 7, 9, 10], "prepar": [0, 6], "instead": [0, 2, 5, 7, 9, 10], "slice": 0, "chunk": 0, "suitabl": [0, 2, 5, 6, 9, 11], "thread": 0, "app_timeout": 0, "45": [0, 9], "serve_path": 0, "here": [0, 2, 5, 9, 10], "conveni": 0, "list_fil": 0, "entri": [0, 2, 9], "listdir": 0, "isfil": 0, "join": [0, 2, 6, 8, 9], "host": [0, 2, 5, 9, 10], "still": [0, 2, 5, 6, 9, 10], "isdir": 0, "list_packet": 0, "list_receipt": 0, "list_deliv": 0, "list_timeout": 0, "too": [0, 6], "mani": [0, 2, 3, 5, 6, 7, 9, 10, 11], "split": 0, "filelist": 0, "multipl": [0, 5, 6, 9, 10], "hint": 0, "alreadi": [0, 2, 3, 6, 7, 9, 10], "support": [0, 2, 4, 5, 6, 7, 9, 10, 11], "after": [0, 2, 5, 6, 7, 9, 10], "re": [0, 5, 7, 9], "keep": [0, 6, 7, 9, 10, 11], "open": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "client_request": 0, "longer": [0, 2, 6, 9, 10], "filenam": 0, "rb": 0, "file_resourc": 0, "resource_sending_conclud": 0, "somethign": 0, "went": 0, "wrong": [0, 5], "don": [0, 2, 6, 7, 10], "unknown": [0, 5, 7, 9, 10], "conclud": [0, 7], "hasattr": 0, "server_fil": 0, "current": [0, 2, 4, 5, 7, 9], "current_download": 0, "current_filenam": 0, "statist": [0, 5, 7, 8], "download_start": 0, "download_finish": 0, "download_tim": 0, "transfer_s": 0, "file_s": 0, "expect": [0, 2, 5, 7, 9, 10], "normal": [0, 2, 5, 7, 10], "accordingli": [0, 5], "filelist_receiv": 0, "advertis": [0, 7], "set_resource_strategi": [0, 7], "accept_al": [0, 7], "set_resource_started_callback": [0, 7], "download_began": 0, "set_resource_concluded_callback": [0, 7], "download_conclud": 0, "menu": 0, "menu_mod": 0, "down": [0, 3, 5, 7], "request_packet": 0, "create_receipt": [0, 7], "print_menu": 0, "25": [0, 4, 11], "user_input": 0, "screen": 0, "variou": [0, 2, 5, 6, 9, 10, 11], "state": 0, "It": [0, 2, 3, 5, 7, 9, 10, 11], "uninterest": 0, "won": 0, "clear_screen": 0, "print_filelist": 0, "percent": [0, 5], "get_progress": [0, 7], "100": [0, 5, 9], "rprogress": 0, "save_error": 0, "disk": [0, 7], "hour": [0, 5], "rem": 0, "divmod": 0, "3600": [0, 5], "minut": [0, 2, 5, 9], "60": [0, 5], "timestr": 0, "05": 0, "2f": 0, "ttime": 0, "taken": [0, 9], "tfile": 0, "size_str": 0, "tdata": 0, "teffect": 0, "rate": [0, 4, 7, 10], "suffix": 0, "b": [0, 6, 10], "ttransfer": 0, "press": 0, "index": [0, 2, 4], "enumer": 0, "filelist_data": 0, "extend": [0, 7], "local": [0, 2, 5, 6, 7, 9, 10, 11], "append": [0, 9], "visibl": 0, "updat": [0, 2, 7, 9, 10], "small": [0, 5, 6, 7, 9, 11], "job": 0, "potenti": [0, 2, 5, 8, 9, 10, 11], "target": [0, 5, 10], "filelist_timeout_job": 0, "daemon": [0, 2, 5, 7, 10], "detect": 0, "shown": 0, "progress": [0, 7, 10, 11], "total_s": 0, "saved_filenam": 0, "counter": 0, "wb": 0, "human": [0, 7, 8, 9], "readabl": [0, 7, 9], "num": 0, "unit": [0, 2, 7, 10], "ki": 0, "mi": 0, "gi": 0, "ti": [0, 9], "pi": [0, 4, 6, 9, 10, 11], "ei": 0, "zi": 0, "last_unit": 0, "yi": 0, "k": [0, 10], "m": [0, 2, 9, 10], "g": [0, 10], "p": [0, 10], "z": 0, "y": 0, "ab": 0, "1024": 0, "clear": [0, 5, 7, 9, 10], "cl": 0, "nt": 0, "dir": 0, "exampleinterfac": 0, "utilis": [0, 2, 5, 6, 7, 10, 11], "fulli": [0, 2, 3, 5, 9, 10, 11], "par": [0, 2], "nativ": 0, "common": [0, 3, 4, 6, 9, 10, 11], "mit": 0, "licens": [0, 9], "copyright": 0, "2024": 0, "mark": [0, 7, 9], "qvist": 0, "unsign": 0, "io": [0, 3], "illustr": [0, 6, 9], "runtim": [0, 9], "place": [0, 2, 5, 6, 9, 10], "folder": [0, 2], "similar": [0, 2, 3, 5, 6, 7, 10, 11], "enabl": [0, 2, 3, 5, 6, 7, 9, 10, 11], "gatewai": [0, 2, 5, 6, 9], "port": [0, 3, 4, 5, 6, 9, 11], "dev": [0, 2, 5, 10], "ttyusb0": [0, 5, 10], "speed": [0, 5, 9, 10], "115200": [0, 5, 10], "databit": [0, 5, 10], "pariti": [0, 5, 10], "stopbit": [0, 5, 10], "hdlc": 0, "helper": 0, "delimit": 0, "physic": [0, 2, 3, 5, 7, 9, 10, 11], "medium": [0, 3, 5, 6, 7, 9, 11], "case": [0, 2, 3, 5, 6, 9, 10], "simplifi": 0, "frame": [0, 5], "ppp": 0, "flag": [0, 2, 7, 9], "0x7e": 0, "esc": 0, "0x7d": 0, "esc_mask": 0, "0x20": 0, "staticmethod": 0, "escap": 0, "replac": [0, 2, 7, 9, 10], "sub": [0, 5], "ifac": [0, 9, 10], "default_ifac_s": 0, "particular": [0, 3], "owner": 0, "posit": [0, 10], "dict": 0, "depend": [0, 3, 4, 6, 7, 9, 10], "importlib": 0, "find_spec": 0, "instal": [0, 4, 5, 6, 9, 10, 11], "log_crit": 0, "python3": [0, 2, 3], "pip": [0, 2, 3, 10], "pyseri": [0, 2], "panic": [0, 10], "super": 0, "sure": [0, 2, 3, 10], "through": [0, 2, 3, 5, 6, 7, 9, 10, 11], "step": [0, 2, 3], "compat": [0, 2, 3, 5, 7, 9], "platform": [0, 3, 4, 9, 10], "ifconf": 0, "get_config_obj": 0, "suppli": [0, 5, 6, 7, 9, 11], "miss": [0, 2], "9600": 0, "abort": 0, "f": [0, 2, 10], "No": [0, 2, 5, 9, 10, 11], "hardwar": [0, 2, 4, 5, 6, 7, 9, 10, 11], "mtu": [0, 7, 9, 11], "maximum": [0, 5, 7, 9, 10], "underli": [0, 6, 11], "capabl": [0, 9], "without": [0, 2, 3, 5, 6, 9, 10, 11], "segment": [0, 5, 6, 7, 9, 11], "hw_mtu": 0, "564": 0, "onlin": [0, 10], "bitrat": [0, 5, 7], "intern": [0, 5, 7, 9], "accord": [0, 2, 9], "parity_non": 0, "lower": [0, 2, 5, 10], "even": [0, 2, 5, 6, 7, 9, 10, 11], "parity_even": 0, "odd": 0, "parity_odd": 0, "open_port": 0, "succeed": [0, 7], "post": 0, "is_open": 0, "configure_devic": 0, "ioerror": 0, "log_verbos": 0, "baudrat": 0, "bytes": 0, "xonxoff": 0, "rtsct": 0, "inter_byte_timeout": 0, "write_timeout": 0, "dsrdtr": 0, "thing": [0, 2], "amount": [0, 5, 6, 7, 9, 11], "devic": [0, 2, 4, 5, 6, 7, 9, 10], "read_loop": 0, "whenev": [0, 7, 9], "process_incom": 0, "rxb": 0, "process": [0, 2, 3, 5, 7, 9], "inbound": [0, 5, 7], "process_outgo": 0, "Then": [0, 2], "written": [0, 9], "txb": 0, "wrote": [0, 5], "contin": 0, "meth": 0, "turn": [0, 10], "in_fram": 0, "data_buff": 0, "last_read_m": 0, "in_wait": 0, "ord": 0, "time_since_last": 0, "08": [0, 10], "occur": [0, 5, 10, 11], "experienc": 0, "unrecover": [0, 10], "offlin": [0, 2], "panic_on_interface_error": [0, 10], "attempt": [0, 2, 3, 7], "reconnect": 0, "period": [0, 5, 7, 9], "reconnect_port": 0, "signal": [0, 7, 9], "ingress": [0, 5], "limit": [0, 3, 4, 6, 9], "should_ingress_limit": 0, "extern": [0, 2, 5, 7, 11], "__str__": 0, "interface_class": 0, "best": [2, 9, 11], "guid": [2, 3, 9], "outlin": [2, 3, 9], "sensibl": [2, 3, 5], "scenario": [2, 4, 9], "relat": 2, "easiest": [2, 3, 5, 9], "via": [2, 3, 5, 8, 9, 10, 11], "manag": [2, 4, 6, 7, 9, 11], "sudo": [2, 10], "apt": 2, "pamac": 2, "dowload": 2, "releas": [2, 5, 7, 9], "wheel": 2, "channel": [2, 4, 5, 6, 7, 8, 9, 11], "py3": 2, "whl": 2, "For": [2, 5, 6, 7, 9, 10, 11], "instruct": 2, "section": [2, 3, 5, 6, 9, 10], "might": [2, 5, 6, 9, 10], "chapter": [2, 3, 5, 6, 7, 9, 10, 11], "mai": [2, 5, 7, 9, 10], "usual": 2, "essenti": [2, 5, 9], "deriv": [2, 7, 9, 11], "arch": 2, "manjaro": 2, "devel": 2, "fedora": 2, "dnf": 2, "groupinstal": 2, "tool": [2, 3, 9, 10, 11], "librari": 2, "compil": 2, "pre": [2, 7, 9], "built": [2, 5, 9, 10, 11], "few": [2, 3, 5, 6, 9, 10, 11], "extrem": [2, 9, 10, 11], "low": [2, 3, 5, 6, 9, 11], "bandwidth": [2, 5, 6, 7, 9, 10, 11], "These": [2, 5, 7, 9, 10], "feel": 2, "work": [2, 3, 5, 6, 9, 10, 11], "design": [2, 3, 6, 9, 11], "well": [2, 3, 5, 6, 7, 9, 10, 11], "lora": [2, 3, 4, 9, 11], "link": [2, 3, 4, 5, 6, 7, 10, 11], "wifi": [2, 4, 5, 6, 9, 10, 11], "wire": [2, 3, 4, 5, 11], "ethernet": [2, 4, 5, 6, 9, 11], "combin": [2, 4, 6, 9], "As": [2, 3, 5, 6, 7, 9, 11], "easi": [2, 3, 5, 9, 10, 11], "experi": [2, 9], "transceiv": [2, 3, 5, 9, 11], "infrastructur": [2, 3, 5, 6, 9, 10], "launch": [2, 10], "enough": [2, 3, 9], "rnsh": [2, 10], "session": [2, 9], "pipe": [2, 4, 11], "ssh": 2, "veri": [2, 3, 5, 6, 7, 8, 9, 10, 11], "facilit": 2, "suit": [2, 3, 9, 10], "featur": [2, 7, 8, 9, 11], "delai": [2, 5, 9, 10], "browser": 2, "page": [2, 4, 9], "dynam": [2, 10], "render": 2, "authent": [2, 5, 6, 7, 9, 10, 11], "face": [2, 5], "protocol": [2, 3, 4, 5, 11], "lxmf": [2, 10], "anoth": [2, 7, 9, 10], "project": 2, "nomadnet": 2, "reboot": 2, "again": [2, 5, 9, 10], "environ": [2, 6, 9], "would": [2, 5, 6, 7, 9], "rather": [2, 7], "graphic": 2, "linux": [2, 3, 9], "peopl": [2, 9], "i2p": [2, 4, 11], "qr": 2, "paper": 2, "anyth": [2, 3, 5, 9, 10, 11], "interoper": [2, 3, 6, 9, 11], "friendli": 2, "voic": 2, "interest": [2, 9], "cours": [2, 5, 9], "come": [2, 9], "easier": [2, 5, 6, 10, 11], "rnsd": [2, 4], "background": [2, 5], "foreground": 2, "servic": [2, 4, 6], "rnstatu": [2, 4, 5, 9], "rnpath": [2, 4, 5], "rnprobe": [2, 4], "view": [2, 5, 9, 10], "locat": [2, 5, 6, 9, 10], "exampl": [2, 3, 4, 5, 7, 9, 10, 11], "exampleconfig": [2, 10], "broadcast": [2, 4, 5, 7, 9], "domain": [2, 5], "further": [2, 4, 5], "tcp": [2, 3, 4, 6, 9, 11], "There": [2, 6, 9, 11], "subnet": [2, 6], "rout": [2, 3, 5, 6, 7, 9, 10, 11], "tabl": [2, 5, 6, 9, 10], "discov": [2, 5], "topographi": [2, 6, 9], "situat": [2, 3, 5, 6, 9], "where": [2, 3, 4, 5, 6, 7, 9, 10], "often": [2, 5, 6, 9, 10], "suffici": [2, 5, 9, 10], "act": [2, 7, 9, 10], "wider": [2, 5, 9, 10], "autointerfac": [2, 3, 5, 10], "possibli": 2, "offer": [2, 4, 5, 7, 9], "carefulli": 2, "tcpserverinterfac": [2, 5], "access": [2, 4, 5, 6, 7, 10], "ip": [2, 3, 5, 9, 10, 11], "faster": [2, 5, 9], "latenc": [2, 9, 11], "energi": 2, "i2pinterfac": [2, 5], "howev": [2, 6, 9], "leak": 2, "reveal": [2, 7, 9, 11], "who": [2, 5, 9], "inspect": [2, 5, 6, 9, 10], "someon": [2, 5], "determin": [2, 7, 9], "adversari": 2, "record": [2, 9], "metadata": [2, 9], "transmiss": [2, 5, 7, 9], "though": [2, 5, 9], "publicli": [2, 5], "most": [2, 3, 5, 6, 7, 9, 10], "anymor": 2, "invis": [2, 5], "parallel": 2, "alwai": [2, 5, 7, 9, 10], "node": [2, 4, 5, 6, 10, 11], "i2pd": [2, 5], "mix": [2, 5, 6, 10], "hide": 2, "relai": 2, "extra": [2, 5, 6, 10], "comput": [2, 9, 11], "power": [2, 3, 5, 9, 10, 11], "attack": 2, "form": [2, 5, 6, 7, 9], "deep": 2, "much": [2, 5, 6, 9, 10, 11], "difficult": [2, 3], "non": [2, 7, 9], "behind": [2, 9], "firewal": [2, 5], "nat": 2, "preserv": [2, 7], "anonym": [2, 6, 7, 9, 11], "care": [2, 7, 11], "experiment": [2, 11], "made": [2, 7, 9], "amsterdam": 2, "hub": [2, 5], "tcpclientinterfac": [2, 3, 5], "ye": [2, 5, 9, 10], "target_host": [2, 5], "target_port": [2, 5], "4965": [2, 10], "betweenthebord": 2, "4242": [2, 5], "g3br23bvx3lq5uddcsjii74xgmn6y5q325ovrkq2zw2wbzbqgbuq": 2, "b32": [2, 5], "point": [2, 3, 5, 6, 9, 10], "absolut": [2, 8, 11], "usag": [2, 4, 5, 7, 8, 10], "occasion": 2, "test": [2, 9, 10], "failur": [2, 5, 7], "guarante": [2, 9], "weird": 2, "goe": 2, "sai": 2, "hardcod": 2, "ship": 2, "practic": [2, 9, 11], "solut": [2, 9, 10], "leav": [2, 6, 9], "wide": [2, 3, 5, 9, 10, 11], "easili": [2, 5, 6, 9, 10, 11], "cheapli": 2, "rnode": [2, 4, 9, 10, 11], "purpos": [2, 3, 5, 7, 9, 10], "digit": [2, 3, 9, 11], "integr": [2, 6, 9], "yourself": [2, 9, 11], "firmwar": [2, 3, 9, 10], "board": [2, 4, 5, 9, 11], "auto": [2, 3, 4, 7, 9], "script": [2, 3], "prefer": [2, 9], "purchas": [2, 6, 9, 11], "supplier": 2, "addit": [2, 3, 5, 7, 9, 10, 11], "privat": [2, 5, 7, 8, 9, 10, 11], "secur": [2, 9, 11], "uncensor": 2, "mesh": [2, 5, 6, 11], "think": 2, "welcom": 2, "head": 2, "discuss": [2, 3, 9], "propos": 2, "flexibl": [2, 3, 5, 11], "broad": [2, 3], "cover": [2, 3, 9, 11], "conceiv": [2, 3], "therefor": [2, 9, 11], "possibl": [2, 3, 5, 6, 7, 9, 10, 11], "subject": [2, 11], "code": [2, 3, 4, 5, 10], "abov": [2, 3, 5, 9, 10], "next": [2, 6, 7, 9], "api": [2, 4, 9, 11], "document": [2, 7, 9], "associ": [2, 7, 9], "recip": 2, "cryptographi": [2, 9, 11], "clone": 2, "repositori": [2, 8, 9], "git": 2, "move": [2, 5, 9, 10], "symlink": [2, 10], "cd": 2, "ln": [2, 10], "echo": [2, 4], "ve": 2, "immedi": [2, 5, 10], "necessari": [2, 3, 5, 6, 7, 9], "nano": 2, "repeat": 2, "h": [2, 10], "ping": [2, 10], "below": [2, 3, 5, 10], "174a64852a75682259ad8b921b8bf416": 2, "filetransf": [2, 4, 7], "understand": [2, 4, 7, 10], "submit": 2, "pull": 2, "request": [2, 4, 5, 7, 9, 10, 11], "good": [2, 3, 6, 9, 10], "idea": [2, 9, 10], "introduc": [2, 9], "disucss": 2, "forum": 2, "maintain": [2, 9], "procedur": [2, 7, 9], "quirk": 2, "worth": 2, "being": [2, 5, 7, 9], "awar": [2, 5, 9], "termux": 2, "droid": 2, "emul": 2, "abil": [2, 3, 11], "pkg": 2, "upgrad": [2, 9], "reason": [2, 5, 9], "openssl": [2, 9], "libffi": 2, "rust": 2, "export": 2, "cargo_build_target": 2, "aarch64": 2, "sever": [2, 6, 7, 10], "succe": 2, "softwar": [2, 3, 5, 9, 11], "apk": 2, "tutori": 2, "architectur": 2, "precompil": 2, "april": 2, "2023": [2, 10], "onto": [2, 9], "unfortun": 2, "pipx": 2, "isol": [2, 5, 10], "neg": 2, "affect": [2, 5], "ensurepath": 2, "restor": [2, 5], "behaviour": [2, 5, 10], "edit": [2, 10], "conf": 2, "break": [2, 7, 9, 11], "shot": 2, "somewhat": 2, "mislead": 2, "choic": 2, "word": 2, "rare": [2, 5], "lead": [2, 9], "conflict": 2, "pose": [2, 9], "problem": [2, 9], "especi": [2, 3, 5], "vari": [2, 5, 9, 10], "doubt": 2, "pip3": 2, "addition": [2, 3, 5, 9], "init": 2, "zshrc": 2, "9": [2, 7, 10], "bin": [2, 10], "adjust": [2, 7], "storag": 2, "memori": [2, 9], "opkg": 2, "At": [2, 6, 9], "underwai": 2, "uci": 2, "feed": [2, 7], "debug": [2, 10], "vvv": 2, "21": 2, "02": 2, "alter": [2, 7, 9], "free": [2, 6, 8, 11], "overlai": 2, "ram": [2, 5], "rule": [2, 4, 5], "proper": 2, "laucnh": 2, "boot": [2, 10], "ipv6": [2, 5, 10], "intend": [2, 6, 9], "show": [2, 10], "fe80": 2, "question": [2, 3, 5], "64": [2, 9, 10], "32": [2, 7, 9], "rasperri": 2, "os": [2, 5], "oper": [2, 3, 5, 6, 7, 9, 10, 11], "either": [2, 3, 6, 7, 9, 10], "powershel": 2, "12": [2, 5, 10], "7": [2, 5, 9, 10], "directli": [2, 3, 5, 7, 9, 10, 11], "rnspure": 2, "pyca": [2, 9], "cryptograph": [2, 4, 6, 10, 11], "primit": [2, 4], "obscur": 2, "matter": [2, 5], "perfectli": 2, "One": [3, 7], "truli": [3, 9], "valuabl": [3, 8], "almost": [3, 5, 9, 10], "kind": [3, 5, 6, 9], "interfac": [3, 4, 6, 7, 10], "wireless": [3, 6], "decad": 3, "modern": [3, 9], "millimet": 3, "wave": 3, "backhaul": [3, 6], "chanc": 3, "box": 3, "glue": 3, "littl": [3, 9], "effort": 3, "pipeinterfac": [3, 5], "kiss": [3, 4, 10, 11], "simplyequip": 3, "abund": 3, "sometim": 3, "scratch": 3, "real": [3, 6, 11], "world": [3, 5, 6, 11], "minim": [3, 4, 9], "cost": [3, 9, 11], "fundament": [3, 9], "categori": 3, "briefli": [3, 9], "describ": [3, 5, 7, 9], "emploi": [3, 9], "pattern": [3, 9], "high": [3, 5, 9, 11], "capac": [3, 5, 7, 9], "gain": [3, 7, 9], "antenna": 3, "backbon": 3, "area": [3, 5, 6, 9, 11], "reliabl": [3, 5, 6, 7, 9, 11], "commonli": 3, "expens": 3, "hard": 3, "hungri": 3, "allevi": 3, "plaform": 3, "its": [3, 5, 7, 9], "compon": [3, 8, 9], "frequenc": [3, 5, 9, 10], "band": [3, 9], "scheme": 3, "ism": [3, 9], "avoid": [3, 9, 10], "confus": [3, 9], "layer": [3, 5, 6, 7, 9, 11], "noth": [3, 11], "lorawan": [3, 9], "standard": [3, 9], "central": [3, 6, 9], "iot": 3, "overhead": [3, 5, 9], "level": [3, 5, 9, 10], "replic": [3, 9], "togeth": [3, 9, 10], "exact": [3, 5, 9], "explain": [3, 7], "approach": [3, 9, 10], "develop": [3, 4, 7, 8, 9, 11], "boil": 3, "obtain": [3, 7, 9], "autom": [3, 8, 9], "provis": [3, 10], "rnodeinterfac": [3, 5, 10], "ic": 3, "semtech": 3, "sx1262": 3, "sx1268": 3, "esp32": 3, "manufactur": [3, 5], "sx1276": 3, "sx1278": 3, "nrf52": 3, "rak": 3, "avr": 3, "atmega1284p": 3, "rnodeconf": [3, 4], "autoinstal": [3, 10], "seri": 3, "configuraion": 3, "air": 3, "short": [3, 5, 9, 10], "bridg": [3, 4], "behav": 3, "mean": [3, 5, 6, 7, 9, 10], "dhcp": [3, 5, 10], "dn": 3, "least": [3, 5, 9, 10, 11], "transpar": [3, 5, 9, 10], "distanc": [3, 9], "ubiqu": 3, "airmax": 3, "ltu": 3, "mikrotik": 3, "exhaust": [3, 9], "rel": [3, 9], "cheap": [3, 9], "co": [3, 5, 11], "concurr": [3, 9, 10], "switch": [3, 5, 9, 10], "fiber": 3, "optic": [3, 11], "virtual": [3, 5, 6, 9, 10, 11], "adapt": [3, 6], "tun": [3, 5], "tap": 3, "serialinterfac": [3, 5], "usb": [3, 6, 9, 10], "freedv": 3, "tnc": [3, 5, 7, 10, 11], "dire": 3, "wolf": 3, "aim": [4, 9], "particip": [4, 6, 9], "itself": [4, 9], "pdf": 4, "epub": 4, "caveat": 4, "emptor": 4, "fast": [4, 5, 7, 9], "standalon": 4, "resolv": [4, 5, 10], "issu": [4, 6, 8], "base": [4, 5, 6, 7, 9, 10, 11], "shell": [4, 10], "nomad": 4, "sideband": 4, "meshchat": 4, "With": [4, 5, 6, 9, 10], "internet": [4, 5, 9, 11], "testnet": [4, 10], "radio": [4, 5, 6, 7, 9, 10, 11], "custom": [4, 7, 9, 11], "android": [4, 10], "arm64": 4, "debian": [4, 9, 10], "bookworm": 4, "maco": 4, "openwrt": 4, "raspberri": [4, 6, 9, 10, 11], "risc": 4, "v": [4, 10], "ubuntu": [4, 10], "lunar": 4, "window": [4, 5], "pure": [4, 9], "rnid": 4, "rncp": 4, "rnx": 4, "improv": [4, 5, 8], "fix": [4, 9], "motiv": 4, "goal": [4, 5], "introduct": 4, "announc": [4, 7, 10], "mechan": [4, 5, 11], "reach": [4, 5, 6], "prioritis": [4, 5, 6, 7], "propag": [4, 5, 7], "modem": [4, 5, 6, 7, 9, 11], "udp": [4, 6, 9, 10, 11], "multi": [4, 9, 10, 11], "ax": [4, 11], "concept": [4, 9, 10], "overview": [4, 5, 9], "interconnect": [4, 5, 9], "site": [4, 5], "growth": 4, "converg": [4, 9], "identif": [4, 5, 11], "respons": [4, 5, 7, 9, 11], "buffer": [4, 5, 7, 11], "donat": 4, "contribut": 4, "requestreceipt": [4, 7], "rawchannelread": [4, 7], "rawchannelwrit": [4, 7], "search": 4, "distinct": [5, 9], "topologi": [5, 9, 11], "endless": 5, "give": [5, 9, 10], "respect": [5, 11], "extens": [5, 11], "straightforward": 5, "discover": 5, "autoconfigur": [5, 11], "router": [5, 10], "sort": [5, 9, 10], "communica": 5, "tion": 5, "usabl": [5, 9], "interface_en": [5, 10], "spe": 5, "cific": 5, "lan": 5, "group": [5, 7, 9], "id": [5, 7, 9, 10], "group_id": 5, "multicast": 5, "temporari": 5, "perman": [5, 10], "multicast_address_typ": 5, "kernel": [5, 10, 11], "wlan0": 5, "eth1": 5, "Or": [5, 10, 11], "ignor": [5, 7, 9], "ones": [5, 10], "ignored_devic": 5, "tun0": 5, "eth0": 5, "autodiscov": 5, "discoveri": [5, 7, 9, 10], "scope": 5, "admin": 5, "organis": [5, 6, 8], "custom_network_nam": 5, "discovery_scop": 5, "discovery_port": 5, "48555": 5, "data_port": 5, "49555": 5, "frequent": 5, "block": 5, "portabl": [5, 9], "persist": [5, 10], "achiev": [5, 7, 9], "geti2p": 5, "net": 5, "websit": 5, "base32": 5, "comma": 5, "5urvjicpzi7q3ybztsef4i5ow2aq4soktfj7zedz53s47r54jnqq": 5, "output": [5, 10], "event": 5, "simplest": [5, 9], "tunnel": [5, 9, 11], "interchang": 5, "degre": 5, "retain": [5, 7], "eas": [5, 9], "simpler": [5, 11], "ipv4": 5, "listen_ip": 5, "listen_port": 5, "bind": 5, "10": [5, 9, 10], "88": 5, "prefer_ipv6": 5, "yggdrasil": 5, "4343": 5, "i2p_tunnel": 5, "127": 5, "5001": 5, "dedic": [5, 9], "natur": 5, "toler": 5, "intermitt": 5, "gracefulli": 5, "reappear": 5, "hostnam": 5, "201": 5, "5d78": 5, "af73": 5, "5caf": 5, "a4d": 5, "a79f": 5, "3278": 5, "71e5": 5, "expos": [5, 7], "soundmodem": 5, "kiss_fram": 5, "8001": 5, "caution": 5, "conjunct": 5, "never": [5, 7, 9], "disabl": [5, 9, 10], "recoveri": 5, "greatli": 5, "unreli": 5, "implic": 5, "better": 5, "udpinterfac": 5, "forward_ip": 5, "255": [5, 10], "forward_port": 5, "assum": [5, 9], "55": 5, "72": 5, "24": 5, "equival": 5, "forward": [5, 7, 9, 11], "15": 5, "16": [5, 9, 10], "spectrum": [5, 9], "legal": 5, "legisl": 5, "around": [5, 9], "regul": 5, "decis": [5, 9], "ble": 5, "pair": [5, 7, 9, 10], "mac": [5, 9], "3b87": 5, "f4": 5, "73": [5, 10], "29": 5, "4e": 5, "89": 5, "867": 5, "mhz": [5, 9], "867200000": 5, "125": 5, "khz": 5, "125000": 5, "tx": [5, 10], "mw": 5, "txpower": 5, "spread": [5, 10], "factor": [5, 7, 10], "fastest": [5, 9], "longest": 5, "spreadingfactor": 5, "throough": 5, "codingr": 5, "interv": [5, 7, 10], "id_callsign": 5, "mycal": 5, "id_interv": 5, "600": 5, "homebrew": 5, "flow_control": 5, "airtim": 5, "term": [5, 6, 9], "appli": [5, 7, 9], "approxim": 5, "enforc": [5, 7], "roll": 5, "airtime_limit_long": 5, "airtime_limit_short": 5, "33": 5, "individu": [5, 7, 9, 11], "rnodemultiinterfac": 5, "ttyacm0": 5, "subinterfac": 5, "datar": 5, "themselv": 5, "4ghz": 5, "2400000000": 5, "1625": 5, "1625000": 5, "person": [5, 9], "vport": 5, "865": 5, "6": [5, 7, 10], "865600000": 5, "laser": 5, "baud": [5, 10], "stdin": [5, 10], "netcat": 5, "l": [5, 10], "5757": 5, "respawn": 5, "respawn_delai": 5, "continu": [5, 7, 8, 11], "scan": 5, "eof": 5, "respawn_interv": 5, "varieti": [5, 9, 10, 11], "openmodem": [5, 11], "beacon": 5, "station": 5, "kissinterfac": [5, 10], "ttyusb1": 5, "preambl": [5, 10], "150": [5, 10], "tail": 5, "txtail": [5, 10], "cdma": 5, "200": [5, 10], "slottim": [5, 10], "20": [5, 9, 10], "elaps": 5, "comment": [5, 10], "amateur": [5, 11], "encapsul": [5, 11], "callsign": 5, "ssid": 5, "realli": [5, 7], "doesn": 5, "incur": 5, "ax25kissinterfac": 5, "no1cll": 5, "ttyusb2": 5, "150m": 5, "increas": [5, 7, 10], "squelch": 5, "rx": [5, 10], "turnaround": 5, "kept": [5, 6, 7, 9], "wast": 5, "bring": 5, "brought": [5, 10], "access_point": 5, "shorthand": [5, 10], "ap": 5, "shorter": 5, "expiri": [5, 7], "mostli": [5, 6, 9], "quiet": [5, 10], "momentarili": 5, "disappear": [5, 10], "network_nam": 5, "passphras": [5, 9], "alon": 5, "ifac_s": 5, "customis": 5, "carri": [5, 7, 9, 10, 11], "512": [5, 7, 9, 11], "announce_cap": [5, 7], "alloc": [5, 7, 9, 10], "given": [5, 6, 7, 9, 10], "upkeep": 5, "cap": 5, "queue": [5, 9], "nearbi": 5, "overwhelm": [5, 7], "rapidli": 5, "spam": 5, "effect": 5, "excess": 5, "benefici": [5, 10], "balanc": 5, "necesarri": 5, "report": [5, 7, 8, 10], "guess": 5, "per": [5, 7, 9, 10, 11], "strictli": [5, 9], "complex": [5, 9], "left": [5, 7, 9, 10], "gw": 5, "behalf": 5, "resid": 5, "requestor": 5, "chain": 5, "along": [5, 6, 7, 9, 10], "boundari": 5, "remain": [5, 7, 9], "roam": 5, "mobil": [5, 9], "seen": [5, 9], "perspect": [5, 7, 9, 11], "vehicl": 5, "equip": [5, 6, 9], "side": [5, 11], "expir": 5, "significantli": [5, 7], "impact": [5, 7, 9], "announce_rate_target": 5, "announce_rate_grac": 5, "announce_rate_penalti": 5, "basi": [5, 7, 9, 10, 11], "moder": 5, "violat": 5, "penalti": 5, "7200": 5, "annouce_cap": 5, "mention": [5, 9], "strategi": [5, 7], "slower": [5, 7, 9], "hop": [5, 6, 7, 9, 10, 11], "right": [5, 6], "tend": 5, "conserv": 5, "span": [5, 9], "seamlessli": 5, "influx": 5, "newli": [5, 6, 7, 9], "previous": [5, 6, 7, 9], "hold": [5, 7, 9], "interrupt": 5, "burst": 5, "subsid": 5, "held": [5, 10], "decid": [5, 6, 7, 9], "bogu": 5, "retransmit": [5, 9], "disrupt": 5, "neccessari": 5, "modifi": [5, 9, 10], "ingress_control": 5, "ic_new_tim": 5, "spawn": 5, "ic_burst_freq_new": 5, "ic_burst_freq": 5, "temporarili": 5, "ic_max_held_announc": 5, "drop": [5, 7, 9, 10], "256": [5, 7, 9, 10], "ic_burst_hold": 5, "threshold": 5, "ic_burst_penalti": 5, "ic_held_release_interv": 5, "30": [5, 7, 10], "knowledg": [6, 9], "tradit": [6, 9], "worri": 6, "coordin": [6, 7, 9, 11], "evolv": 6, "futur": [6, 7, 9], "mind": [6, 11], "autonom": [6, 9], "terminologi": [6, 9], "rest": [6, 11], "billion": [6, 9], "larger": [6, 9, 10], "higher": [6, 11], "discrimin": 6, "ephemer": [6, 7, 9, 11], "ellipt": [6, 7, 9, 11], "curv": [6, 7, 9, 11], "diffi": [6, 9], "hellman": [6, 9], "exchang": [6, 7, 9, 11], "curve25519": [6, 7, 9, 11], "throttl": 6, "thu": [6, 7, 9], "agnost": [6, 9], "equal": [6, 7, 9], "keystor": 6, "degrad": 6, "stationari": [6, 10], "candid": 6, "optim": 6, "trustless": [6, 9, 11], "unorganis": 6, "manner": 6, "far": [6, 9], "unexplor": 6, "dissolv": 6, "organ": 6, "restrict": [6, 10], "legaci": 6, "unifi": 6, "carrier": [6, 11], "involv": 6, "hardlin": 6, "plan": [6, 9], "member": 6, "mainli": 6, "three": [6, 9], "hill": 6, "top": [6, 9], "chosen": [6, 9], "sight": 6, "becaus": [6, 9], "four": 6, "cabl": 6, "grow": 6, "core": [6, 9, 10, 11], "those": [6, 9], "d": [6, 10], "island": 6, "investig": 6, "dori": 6, "willing": 6, "she": 6, "her": 6, "home": [6, 10], "everyon": [6, 9], "vice": [6, 11], "versa": [6, 11], "vhf": [6, 9, 11], "outli": 6, "geograph": 6, "coverag": 6, "dai": [6, 7], "find": [6, 9], "poorli": 6, "outlier": 6, "signatur": [7, 9, 10, 11], "configdir": 7, "logdest": 7, "verbos": [7, 10], "require_shared_inst": 7, "exactli": [7, 9], "independ": [7, 9, 11], "inter": 7, "soon": 7, "kill": [7, 9], "forcibli": [7, 10], "advantag": 7, "demand": 7, "500": [7, 9, 11], "adher": 7, "prerequisit": 7, "link_mtu_discoveri": 7, "throughput": [7, 9, 11], "intermediari": [7, 9], "percentag": 7, "schedul": 7, "queu": [7, 10], "fewer": 7, "distant": 7, "smaller": 7, "eventu": 7, "minimum_bitr": 7, "static": 7, "get_inst": 7, "should_use_implicit_proof": 7, "explicit": 7, "implicit": [7, 9], "transport_en": 7, "remote_management_en": 7, "create_kei": 7, "decrypt": [7, 9, 10], "verif": [7, 9, 10], "sign": [7, 9, 10], "dh": 7, "keysiz": 7, "x": [7, 9, 10], "25519": 7, "concaten": 7, "ratchets": 7, "ratchet": [7, 9], "ratchet_expiri": 7, "2592000": 7, "recent": [7, 9], "rememb": [7, 9], "discard": [7, 9], "newer": [7, 9], "meantim": 7, "128": [7, 9, 11], "constant": 7, "truncat": [7, 9, 10], "recall_app_data": 7, "heard": [7, 9], "full_hash": 7, "sha": [7, 9], "truncated_hash": 7, "current_ratchet_id": 7, "from_byt": 7, "prv_byte": 7, "save": [7, 9], "hazard": 7, "from_fil": 7, "to_fil": 7, "Be": [7, 10], "get_private_kei": 7, "get_public_kei": 7, "load_private_kei": 7, "load_public_kei": 7, "pub_byt": 7, "ciphertext": 7, "token": [7, 9, 11], "keyerror": 7, "ciphertext_token": 7, "enforce_ratchet": 7, "ratchet_id_receiv": 7, "presenc": 7, "ingo": 7, "zero": [7, 11], "ratchet_count": 7, "ratchet_interv": 7, "1800": 7, "rotat": [7, 9], "expand_nam": 7, "app_and_aspects_from_nam": 7, "full_nam": [7, 10], "tupl": 7, "hash_from_name_and_ident": 7, "adress": [7, 9], "path_respons": 7, "attached_interfac": 7, "tag": 7, "accepts_link": 7, "accept": [7, 8, 9, 10], "set_proof_requested_callback": 7, "proof_strategi": 7, "prove_non": 7, "prove_app": 7, "proof_requested_callback": 7, "allow_non": 7, "allowed_list": 7, "whatev": [7, 9], "funcion": 7, "allow_list": 7, "deregister_request_handl": 7, "deregist": 7, "enable_ratchet": 7, "ratchets_path": 7, "secreci": [7, 9, 11], "outsid": [7, 11], "set_retained_ratchet": 7, "retained_ratchet": 7, "set_ratchet_interv": 7, "symmetr": [7, 9], "typeerror": 7, "incompat": [7, 9], "set_default_app_data": 7, "clear_default_app_data": 7, "ae": [7, 9, 11], "instanti": 7, "encrypted_mdu": 7, "383": 7, "plain_mdu": 7, "464": 7, "resend": 7, "get_rssi": 7, "strength": [7, 11], "get_snr": 7, "nois": 7, "ratio": 7, "get_q": 7, "qualiti": 7, "get_statu": 7, "cull": 7, "successful": 7, "proven": [7, 9], "established_callback": 7, "closed_callback": 7, "establishment_timeout_per_hop": 7, "keepalive_timeout_factor": 7, "4": [7, 9, 10], "calcul": [7, 9, 10], "stale_grac": 7, "grace": 7, "keepal": [7, 9], "360": 7, "aliv": [7, 9], "stale_tim": 7, "720": 7, "stale": 7, "torn": 7, "progress_callback": 7, "info": [7, 9, 10], "track_phy_stat": 7, "track": 7, "retriev": 7, "stat": [7, 10], "get_establishment_r": 7, "ocur": 7, "get_ag": 7, "no_inbound_for": 7, "no_outbound_for": 7, "outbound": [7, 9], "no_data_for": 7, "travers": [7, 9], "exclud": [7, 9], "inactive_for": 7, "purg": 7, "set_resource_callback": 7, "get_transfer_s": 7, "get_data_s": 7, "get_part": 7, "is_compress": 7, "begun": 7, "resource_strategi": 7, "accept_non": 7, "accept_app": 7, "resource_callback": 7, "unsupport": 7, "get_request_id": 7, "get_respons": 7, "get_response_tim": 7, "auto_compress": 7, "arbitrari": [7, 9, 10, 11], "checksum": [7, 11], "Will": 7, "cancel": 7, "total": [7, 9, 11], "get_seg": 7, "divid": 7, "get_hash": 7, "bi": [7, 9], "neither": [7, 9], "constrain": 7, "message_class": 7, "recept": 7, "messagecallbacktyp": 7, "bool": 7, "stop": [7, 11], "remove_message_handl": 7, "remov": [7, 10], "envelop": 7, "thrown": 7, "consum": 7, "accommod": [7, 9], "abstract": [7, 9], "greater": [7, 9, 11], "popul": 7, "bufferedread": 7, "bufferedwrit": 7, "bufferedrwpair": 7, "create_read": 7, "ready_callback": 7, "create_writ": 7, "receive_stream_id": 7, "send_stream_id": 7, "rawiobas": 7, "add_ready_callback": 7, "cb": [7, 9], "remove_ready_callback": 7, "pathfinder_m": 7, "attribut": 7, "announce_packet_hash": 7, "receive_path_respons": 7, "live": 7, "deregister_announce_handl": 7, "hops_to": 7, "next_hop": 7, "next_hop_interfac": 7, "on_interfac": 7, "recurs": 7, "gratefulli": 8, "monero": 8, "84fpy1qbxhcgdseepynmhthcrgmx4nffbytz2gkytoqhvvhjp8eaw1z1eedrnkd19b3b8nilcgvxzkv17ummmeescrpya5w": 8, "ethereum": 8, "0x81f7b979fea6134ba9fd5c701b3501a2e61e897a": 8, "bitcoin": 8, "3cpmacgm34qyvr6xwlvejmi2ane3pzquuq": 8, "ko": 8, "fi": 8, "roadmap": 8, "realiti": 8, "quickli": [8, 9, 11], "sponsor": [8, 11], "dysfunct": 8, "analyt": 8, "telemetri": 8, "collect": 8, "under": [8, 10, 11], "circumst": [8, 9], "reli": [8, 9], "fashion": 8, "u": [8, 9, 10], "suggest": 8, "overal": 9, "principl": [9, 11], "author": 9, "That": 9, "said": 9, "pretti": 9, "sentiment": 9, "philosophi": 9, "seek": 9, "solv": 9, "primari": 9, "lack": 9, "my": 9, "belief": 9, "highli": 9, "machin": 9, "censorship": [9, 11], "barrier": 9, "todai": 9, "centralis": 9, "trust": [9, 10], "approv": 9, "gatekeep": 9, "inevit": 9, "govern": 9, "censor": 9, "persecut": 9, "unwant": 9, "actor": 9, "imposs": 9, "freeli": 9, "deploi": 9, "enhanc": 9, "agenc": 9, "freedom": 9, "permissionless": 9, "pick": 9, "ghz": 9, "off": [9, 10, 11], "shelf": [9, 11], "ultim": 9, "vast": 9, "myriad": 9, "thousand": 9, "surveil": 9, "disassoci": 9, "oversight": 9, "beings": 9, "useabl": 9, "critic": [9, 10], "agnostic": 9, "shall": 9, "handheld": 9, "strong": 9, "oneself": 9, "unlicens": 9, "condit": [9, 11], "pmr": 9, "programm": 9, "orient": 9, "multipoint": 9, "recipi": 9, "singular": 9, "_represented_": 9, "characterist": 9, "13425ec15b621c1d928589718000d814": 9, "trade": 9, "simultan": 9, "unlik": 9, "nears": 9, "congest": 9, "galact": 9, "scale": [9, 11], "obvious": 9, "ridicul": 9, "asymmetr": [9, 10, 11], "special": [9, 10], "ecdh": [9, 11], "creator": 9, "correspond": 9, "possess": 9, "although": [9, 11], "dot": [9, 10], "notat": [9, 10], "repres": 9, "plenti": 9, "environment": 9, "monitor": 9, "measur": 9, "environmentlogg": 9, "remotesensor": 9, "temperatur": 9, "4faf1b2e0a077e6a9d92fa051f256038": 9, "advis": 9, "expand": [9, 11], "recap": 9, "indirectli": 9, "ledger": 9, "messeng": 9, "nicknam": 9, "ed25519": [9, 11], "reconstruct": 9, "notic": [9, 10], "piec": 9, "intention": 9, "infer": 9, "throughout": 9, "topic": 9, "necessarili": 9, "entiti": 9, "robot": 9, "sensor": 9, "someth": 9, "agent": 9, "manipul": [9, 11], "multilater": 9, "creation": [9, 11], "great": 9, "suffic": 9, "cluster": 9, "hear": 9, "But": 9, "lot": 9, "surviv": 9, "overcom": 9, "challeng": 9, "closer": 9, "distinguish": 9, "contend": 9, "enable_transport": [9, 10], "randomis": 9, "prioriti": 9, "invers": 9, "proport": 9, "count": 9, "insert": 9, "closest": 9, "newest": 9, "contact": 9, "shortest": 9, "predict": 9, "constantli": 9, "earlier": 9, "opt": 9, "against": 9, "bidirect": 9, "ten": 9, "advanc": 9, "confirm": [9, 11], "insid": 9, "moment": [9, 11], "methodologi": [9, 10], "answer": [9, 10], "malici": 9, "pretend": 9, "recreat": 9, "thereaft": 9, "297": [9, 11], "neglig": 9, "1200": 9, "96": 9, "x25519": [9, 11], "keypair": 9, "simplic": 9, "explan": [9, 10], "lki": 9, "laid": 9, "had": 9, "construct": [9, 11], "lkr": 9, "chose": 9, "direction": 9, "unequivoc": 9, "retransmiss": 9, "reassembl": 9, "programmat": 9, "satisfi": 9, "half": [9, 11], "duplex": [9, 11], "averag": 9, "consist": 9, "whereupon": 9, "stabl": [9, 11], "stage": 9, "year": 9, "microcontrol": 9, "430": 9, "868": 9, "900": 9, "tailor": 9, "treat": 9, "regard": 9, "preshar": 9, "compos": 9, "field": 9, "context": 9, "465": 9, "unset": 9, "00": [9, 10], "01": 9, "11": 9, "_______": 9, "________________": 9, "________": 9, "______": 9, "__": 9, "_": 9, "01010000": 9, "00000100": 9, "hash1": 9, "hash2": 9, "header_2": 9, "00000000": 9, "00000111": 9, "header_1": 9, "10000000": 9, "51": 9, "167": 9, "83": [9, 10], "115": 9, "99": 9, "conceptu": 9, "hkdf": 9, "fernet": 9, "spec": 9, "cbc": [9, 11], "pkcs7": [9, 11], "pad": [9, 11], "hmac": [9, 11], "sha256": [9, 11], "iv": [9, 11], "urandom": [9, 11], "hashlib": 9, "trivial": [9, 11], "consequ": 9, "backend": 9, "loss": 9, "scrutini": 9, "review": [9, 11], "risk": 9, "driver": [10, 11], "privileg": 10, "light": 10, "weight": 10, "etc": 10, "ie": 10, "breviti": 10, "socket": [10, 11], "share_inst": 10, "shared_instance_port": 10, "37428": 10, "instance_control_port": 10, "37429": 10, "rpc": 10, "rpc_kei": 10, "e5c032d3ec4e64a6aca9927ba8ab73336780f6d71790": 10, "probe": 10, "respond_to_prob": 10, "warn": 10, "unus": 10, "teach": 10, "task": 10, "18": 10, "17": 10, "59": 10, "56": 10, "ifconfig": 10, "gbp": 10, "13": 10, "kb": 10, "86": 10, "mbp": 10, "63": 10, "23": 10, "80": 10, "tcpinterfac": 10, "dublin": 10, "187": 10, "27": 10, "74": 10, "uhf": [10, 11], "kbp": 10, "e702c42ba8": 10, "49": 10, "5245a8efe1788c6a1cd36144a270e13b": 10, "j": 10, "w": 10, "arx": 10, "atx": 10, "revers": 10, "json": 10, "new_ident": 10, "984b74a3f768bef236af4371e6f248cd": 10, "new_id": 10, "0f4259fef4521ab75a3409e353fe9073eb10783b4912a6a9937c57bf44a62c1": 10, "hidden": 10, "8dd57a738226809646089335a6b03695": 10, "my_fil": 10, "txt": 10, "bc7291552be7a58f361522990465165c": 10, "rfe": 10, "fetch": 10, "30602def3b3506a28ed33db6f60cc6c9": 10, "2b489d06eaf7c543808c76a5332a447d": 10, "my_ident": 10, "2225fdeecaf6e2db4556c3c2d7637294": 10, "decreas": 10, "overwrit": 10, "c89b4da064bf66d280f0e4d8abfd9806": 10, "f53a1c4278e0726bb73fcc623d6ce763": 10, "max": 10, "rnstransport": 10, "2d03725b327348980d570f739a3a5708": 10, "38": 10, "469": 10, "781": 10, "e7536ee90bd4a440e130490b87a25124": 10, "809": 10, "1726dbad538775b5bf9b0ea25a4079c8": 10, "c50cc4e4f7838b6c31f60ab9032cbc62": 10, "allowed_ident": 10, "copi": 10, "tgz": 10, "73cbd378bb0286ed11a707c13447bb1": 10, "allowed_hash": 10, "silent": 10, "jail": 10, "auth": 10, "941bed5e228775e5a8079fc38b1ccf3f": 10, "1b03013c25f1c2ca068a4f080b844a10": 10, "7a55144adf826958a9529a3bcf08b149": 10, "cat": 10, "proc": 10, "cpuinfo": 10, "pseudo": 10, "stderr": 10, "noauth": 10, "noid": 10, "mirror": 10, "fw": 10, "url": 10, "nocheck": 10, "flash": 10, "baud_flash": 10, "addr": 10, "freq": 10, "hz": 10, "bw": 10, "txp": 10, "sf": 10, "cr": 10, "eeprom": 10, "backup": 10, "dump": 10, "wipe": 10, "hexbyt": 10, "firmware_hash": 10, "product": 10, "model": 10, "hwrev": 10, "revis": 10, "attach": 10, "older": 10, "extract": 10, "cach": 10, "921600": 10, "bluetooth": 10, "intens": 10, "ff": 10, "consol": 10, "unlock": 10, "bootstrap": 10, "rom": 10, "enable_remote_manag": 10, "remote_management_allow": 10, "9fb6d773498fb3feda407ed8ef2c3229": 10, "2d882c5586e548d79b5af27bca1776dc": 10, "administr": 10, "ftdi_ft230x_basic_uart_43891ckm": 10, "if00": 10, "port0": 10, "plug": 10, "unplug": 10, "systemd": 10, "usr": 10, "execstartpr": 10, "restart": 10, "restartsec": 10, "usernameher": 10, "execstart": 10, "wantedbi": 10, "systemctl": 10, "whole": 10, "regular": 10, "rns_bin_dir": 10, "eg": 10, "reload": 10, "loginctl": 10, "linger": 10, "readili": 11, "advers": 11, "unforg": 11, "acknowledg": 11, "empow": 11, "autonomi": 11, "sovereignti": 11, "planetari": 11, "hierarch": 11, "bureaucrat": 11, "resili": 11, "userland": 11, "beta": 11, "bug": 11, "warrant": 11, "heterogen": 11, "scalabl": 11, "mixtur": 11, "foundat": 11, "keyset": 11, "intuit": 11, "decentralis": 11, "gigabyt": 11, "lightweight": 11, "44": 11, "sequenti": 11, "hoc": 11, "transform": 11, "fact": 11, "generalis": 11, "fibr": 11, "popular": 11, "ideal": 11, "stdio": 11, "hack": 11, "foremost": 11, "audit": 11, "privaci": 11, "thorough": 11, "research": 11, "touch": 11}, "objects": {"RNS": [[7, 0, 1, "", "Buffer"], [7, 0, 1, "", "Destination"], [7, 0, 1, "", "Identity"], [7, 0, 1, "", "Link"], [7, 0, 1, "", "MessageBase"], [7, 0, 1, "", "Packet"], [7, 0, 1, "", "PacketReceipt"], [7, 0, 1, "", "RawChannelReader"], [7, 0, 1, "", "RawChannelWriter"], [7, 0, 1, "", "RequestReceipt"], [7, 0, 1, "", "Resource"], [7, 0, 1, "", "Reticulum"], [7, 0, 1, "", "Transport"]], "RNS.Buffer": [[7, 1, 1, "", "create_bidirectional_buffer"], [7, 1, 1, "", "create_reader"], [7, 1, 1, "", "create_writer"]], "RNS.Channel": [[7, 0, 1, "", "Channel"]], "RNS.Channel.Channel": [[7, 1, 1, "", "add_message_handler"], [7, 1, 1, "", "is_ready_to_send"], [7, 2, 1, "", "mdu"], [7, 1, 1, "", "register_message_type"], [7, 1, 1, "", "remove_message_handler"], [7, 1, 1, "", "send"]], "RNS.Destination": [[7, 3, 1, "", "RATCHET_COUNT"], [7, 3, 1, "", "RATCHET_INTERVAL"], [7, 1, 1, "", "accepts_links"], [7, 1, 1, "", "announce"], [7, 1, 1, "", "app_and_aspects_from_name"], [7, 1, 1, "", "clear_default_app_data"], [7, 1, 1, "", "create_keys"], [7, 1, 1, "", "decrypt"], [7, 1, 1, "", "deregister_request_handler"], [7, 1, 1, "", "enable_ratchets"], [7, 1, 1, "", "encrypt"], [7, 1, 1, "", "enforce_ratchets"], [7, 1, 1, "", "expand_name"], [7, 1, 1, "", "get_private_key"], [7, 1, 1, "", "hash"], [7, 1, 1, "", "hash_from_name_and_identity"], [7, 1, 1, "", "load_private_key"], [7, 1, 1, "", "register_request_handler"], [7, 1, 1, "", "set_default_app_data"], [7, 1, 1, "", "set_link_established_callback"], [7, 1, 1, "", "set_packet_callback"], [7, 1, 1, "", "set_proof_requested_callback"], [7, 1, 1, "", "set_proof_strategy"], [7, 1, 1, "", "set_ratchet_interval"], [7, 1, 1, "", "set_retained_ratchets"], [7, 1, 1, "", "sign"]], "RNS.Identity": [[7, 3, 1, "", "CURVE"], [7, 3, 1, "", "KEYSIZE"], [7, 3, 1, "", "RATCHETSIZE"], [7, 3, 1, "", "RATCHET_EXPIRY"], [7, 3, 1, "", "TRUNCATED_HASHLENGTH"], [7, 1, 1, "", "current_ratchet_id"], [7, 1, 1, "", "decrypt"], [7, 1, 1, "", "encrypt"], [7, 1, 1, "", "from_bytes"], [7, 1, 1, "", "from_file"], [7, 1, 1, "", "full_hash"], [7, 1, 1, "", "get_private_key"], [7, 1, 1, "", "get_public_key"], [7, 1, 1, "", "get_random_hash"], [7, 1, 1, "", "load_private_key"], [7, 1, 1, "", "load_public_key"], [7, 1, 1, "", "recall"], [7, 1, 1, "", "recall_app_data"], [7, 1, 1, "", "sign"], [7, 1, 1, "", "to_file"], [7, 1, 1, "", "truncated_hash"], [7, 1, 1, "", "validate"]], "RNS.Link": [[7, 3, 1, "", "CURVE"], [7, 3, 1, "", "ESTABLISHMENT_TIMEOUT_PER_HOP"], [7, 3, 1, "", "KEEPALIVE"], [7, 3, 1, "", "KEEPALIVE_TIMEOUT_FACTOR"], [7, 3, 1, "", "STALE_GRACE"], [7, 3, 1, "", "STALE_TIME"], [7, 1, 1, "", "get_age"], [7, 1, 1, "", "get_channel"], [7, 1, 1, "", "get_establishment_rate"], [7, 1, 1, "", "get_q"], [7, 1, 1, "", "get_remote_identity"], [7, 1, 1, "", "get_rssi"], [7, 1, 1, "", "get_snr"], [7, 1, 1, "", "identify"], [7, 1, 1, "", "inactive_for"], [7, 1, 1, "", "no_data_for"], [7, 1, 1, "", "no_inbound_for"], [7, 1, 1, "", "no_outbound_for"], [7, 1, 1, "", "request"], [7, 1, 1, "", "set_link_closed_callback"], [7, 1, 1, "", "set_packet_callback"], [7, 1, 1, "", "set_remote_identified_callback"], [7, 1, 1, "", "set_resource_callback"], [7, 1, 1, "", "set_resource_concluded_callback"], [7, 1, 1, "", "set_resource_started_callback"], [7, 1, 1, "", "set_resource_strategy"], [7, 1, 1, "", "teardown"], [7, 1, 1, "", "track_phy_stats"]], "RNS.MessageBase": [[7, 3, 1, "", "MSGTYPE"], [7, 1, 1, "", "pack"], [7, 1, 1, "", "unpack"]], "RNS.Packet": [[7, 3, 1, "", "ENCRYPTED_MDU"], [7, 3, 1, "", "PLAIN_MDU"], [7, 1, 1, "", "get_q"], [7, 1, 1, "", "get_rssi"], [7, 1, 1, "", "get_snr"], [7, 1, 1, "", "resend"], [7, 1, 1, "", "send"]], "RNS.PacketReceipt": [[7, 1, 1, "", "get_rtt"], [7, 1, 1, "", "get_status"], [7, 1, 1, "", "set_delivery_callback"], [7, 1, 1, "", "set_timeout"], [7, 1, 1, "", "set_timeout_callback"]], "RNS.RawChannelReader": [[7, 1, 1, "", "__init__"], [7, 1, 1, "", "add_ready_callback"], [7, 1, 1, "", "remove_ready_callback"]], "RNS.RawChannelWriter": [[7, 1, 1, "", "__init__"]], "RNS.RequestReceipt": [[7, 1, 1, "", "concluded"], [7, 1, 1, "", "get_progress"], [7, 1, 1, "", "get_request_id"], [7, 1, 1, "", "get_response"], [7, 1, 1, "", "get_response_time"], [7, 1, 1, "", "get_status"]], "RNS.Resource": [[7, 1, 1, "", "advertise"], [7, 1, 1, "", "cancel"], [7, 1, 1, "", "get_data_size"], [7, 1, 1, "", "get_hash"], [7, 1, 1, "", "get_parts"], [7, 1, 1, "", "get_progress"], [7, 1, 1, "", "get_segments"], [7, 1, 1, "", "get_transfer_size"], [7, 1, 1, "", "is_compressed"]], "RNS.Reticulum": [[7, 3, 1, "", "ANNOUNCE_CAP"], [7, 3, 1, "", "LINK_MTU_DISCOVERY"], [7, 3, 1, "", "MINIMUM_BITRATE"], [7, 3, 1, "", "MTU"], [7, 1, 1, "", "get_instance"], [7, 1, 1, "", "remote_management_enabled"], [7, 1, 1, "", "should_use_implicit_proof"], [7, 1, 1, "", "transport_enabled"]], "RNS.Transport": [[7, 3, 1, "", "PATHFINDER_M"], [7, 1, 1, "", "deregister_announce_handler"], [7, 1, 1, "", "has_path"], [7, 1, 1, "", "hops_to"], [7, 1, 1, "", "next_hop"], [7, 1, 1, "", "next_hop_interface"], [7, 1, 1, "", "register_announce_handler"], [7, 1, 1, "", "request_path"]]}, "objtypes": {"0": "py:class", "1": "py:method", "2": "py:property", "3": "py:attribute"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "method", "Python method"], "2": ["py", "property", "Python property"], "3": ["py", "attribute", "Python attribute"]}, "titleterms": {"code": [0, 8, 9], "exampl": [0, 6], "minim": 0, "announc": [0, 5, 9], "broadcast": 0, "echo": 0, "link": [0, 9], "identif": 0, "request": 0, "respons": 0, "channel": 0, "buffer": 0, "filetransf": 0, "custom": [0, 2, 5], "interfac": [0, 2, 5, 9, 11], "an": 1, "explan": 1, "reticulum": [1, 2, 3, 4, 8, 9, 10, 11], "human": 1, "Beings": 1, "get": [2, 9], "start": 2, "fast": 2, "standalon": 2, "instal": [2, 3], "resolv": 2, "depend": 2, "issu": 2, "try": 2, "us": [2, 10, 11], "base": [2, 3], "program": [2, 10], "remot": [2, 10], "shell": 2, "nomad": 2, "network": [2, 4, 6], "sideband": 2, "meshchat": 2, "includ": [2, 10], "util": [2, 10], "creat": [2, 3], "With": 2, "connect": 2, "instanc": 2, "over": [2, 6], "internet": [2, 6], "public": [2, 9], "testnet": 2, "ad": 2, "radio": [2, 3], "develop": 2, "particip": 2, "platform": 2, "specif": [2, 9], "note": 2, "android": 2, "arm64": 2, "debian": 2, "bookworm": 2, "maco": 2, "openwrt": 2, "raspberri": 2, "pi": 2, "risc": 2, "v": 2, "ubuntu": 2, "lunar": 2, "window": 2, "pure": 2, "python": 2, "commun": 3, "hardwar": 3, "combin": 3, "type": [3, 9, 11], "rnode": [3, 5], "support": [3, 8], "board": 3, "devic": [3, 11], "lilygo": 3, "t": 3, "beam": 3, "suprem": 3, "t3s3": 3, "rak4631": 3, "unsign": 3, "v2": 3, "x": 3, "lora32": 3, "1": 3, "0": 3, "v1": 3, "deck": 3, "heltec": 3, "v3": 3, "usag": 3, "wifi": 3, "ethernet": 3, "serial": [3, 5, 10], "line": 3, "packet": [3, 9], "modem": 3, "stack": 4, "manual": 4, "tabl": 4, "Of": 4, "content": 4, "indic": 4, "configur": [5, 10], "auto": 5, "i2p": 5, "tcp": 5, "server": 5, "client": 5, "udp": 5, "lora": [5, 6], "multi": 5, "pipe": 5, "kiss": 5, "ax": 5, "25": 5, "common": 5, "option": 5, "mode": 5, "rate": 5, "control": 5, "new": 5, "destin": [5, 9], "limit": 5, "build": 6, "concept": 6, "overview": 6, "scenario": 6, "interconnect": 6, "site": 6, "bridg": 6, "growth": 6, "converg": 6, "api": 7, "refer": [7, 9], "donat": 8, "provid": 8, "feedback": 8, "contribut": 8, "understand": 9, "motiv": 9, "goal": 9, "introduct": 9, "basic": 9, "function": 9, "name": [9, 10], "kei": 9, "ident": 9, "further": 9, "transport": 9, "node": 9, "The": [9, 10], "mechan": 9, "detail": 9, "reach": 9, "establish": 9, "resourc": 9, "setup": 9, "protocol": 9, "prioritis": 9, "access": 9, "wire": 9, "format": 9, "propag": 9, "rule": 9, "cryptograph": 9, "primit": 9, "your": 10, "system": 10, "data": 10, "rnsd": 10, "rnstatu": 10, "rnid": 10, "rnpath": 10, "rnprobe": 10, "rncp": 10, "rnx": 10, "rnodeconf": 10, "manag": 10, "improv": 10, "fix": 10, "port": 10, "servic": 10, "systemwid": 10, "userspac": 10, "what": 11, "i": 11, "current": 11, "statu": 11, "doe": 11, "offer": 11, "where": 11, "can": 11, "caveat": 11, "emptor": 11}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "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": 57}, "alltitles": {"Code Examples": [[0, "code-examples"]], "Minimal": [[0, "minimal"]], "Announce": [[0, "announce"]], "Broadcast": [[0, "broadcast"]], "Echo": [[0, "echo"]], "Link": [[0, "link"]], "Identification": [[0, "example-identify"]], "Requests & Responses": [[0, "requests-responses"]], "Channel": [[0, "channel"]], "Buffer": [[0, "buffer"]], "Filetransfer": [[0, "filetransfer"]], "Custom Interfaces": [[0, "custom-interfaces"], [5, "custom-interfaces"]], "An Explanation of Reticulum for Human Beings": [[1, "an-explanation-of-reticulum-for-human-beings"]], "Getting Started Fast": [[2, "getting-started-fast"]], "Standalone Reticulum Installation": [[2, "standalone-reticulum-installation"]], "Resolving Dependency & Installation Issues": [[2, "resolving-dependency-installation-issues"]], "Try Using a Reticulum-based Program": [[2, "try-using-a-reticulum-based-program"]], "Remote Shell": [[2, "remote-shell"]], "Nomad Network": [[2, "nomad-network"]], "Sideband": [[2, "sideband"]], "MeshChat": [[2, "meshchat"]], "Using the Included Utilities": [[2, "using-the-included-utilities"]], "Creating a Network With Reticulum": [[2, "creating-a-network-with-reticulum"]], "Connecting Reticulum Instances Over the Internet": [[2, "connecting-reticulum-instances-over-the-internet"]], "Connect to the Public Testnet": [[2, "connect-to-the-public-testnet"]], "Adding Radio Interfaces": [[2, "adding-radio-interfaces"]], "Creating and Using Custom Interfaces": [[2, "creating-and-using-custom-interfaces"]], "Develop a Program with Reticulum": [[2, "develop-a-program-with-reticulum"]], "Participate in Reticulum Development": [[2, "participate-in-reticulum-development"]], "Platform-Specific Install Notes": [[2, "platform-specific-install-notes"]], "Android": [[2, "android"]], "ARM64": [[2, "arm64"]], "Debian Bookworm": [[2, "debian-bookworm"]], "MacOS": [[2, "macos"]], "OpenWRT": [[2, "openwrt"]], "Raspberry Pi": [[2, "raspberry-pi"]], "RISC-V": [[2, "risc-v"]], "Ubuntu Lunar": [[2, "ubuntu-lunar"]], "Windows": [[2, "windows"]], "Pure-Python Reticulum": [[2, "pure-python-reticulum"]], "Communications Hardware": [[3, "communications-hardware"]], "Combining Hardware Types": [[3, "combining-hardware-types"]], "RNode": [[3, "rnode"]], "Creating RNodes": [[3, "creating-rnodes"]], "Supported Boards and Devices": [[3, "supported-boards-and-devices"]], "LilyGO T-Beam Supreme": [[3, "lilygo-t-beam-supreme"]], "LilyGO T-Beam": [[3, "lilygo-t-beam"]], "LilyGO T3S3": [[3, "lilygo-t3s3"]], "RAK4631-based Boards": [[3, "rak4631-based-boards"]], "Unsigned RNode v2.x": [[3, "unsigned-rnode-v2-x"]], "LilyGO LoRa32 v2.1": [[3, "lilygo-lora32-v2-1"]], "LilyGO LoRa32 v2.0": [[3, "lilygo-lora32-v2-0"]], "LilyGO LoRa32 v1.0": [[3, "lilygo-lora32-v1-0"]], "LilyGO T-Deck": [[3, "lilygo-t-deck"]], "Heltec LoRa32 v3.0": [[3, "heltec-lora32-v3-0"]], "Heltec LoRa32 v2.0": [[3, "heltec-lora32-v2-0"]], "Unsigned RNode v1.x": [[3, "unsigned-rnode-v1-x"]], "Installation": [[3, "installation"]], "Usage with Reticulum": [[3, "usage-with-reticulum"]], "WiFi-based Hardware": [[3, "wifi-based-hardware"]], "Ethernet-based Hardware": [[3, "ethernet-based-hardware"]], "Serial Lines & Devices": [[3, "serial-lines-devices"]], "Packet Radio Modems": [[3, "packet-radio-modems"]], "Reticulum Network Stack Manual": [[4, "reticulum-network-stack-manual"]], "Table Of Contents": [[4, "table-of-contents"]], "Indices and Tables": [[4, "indices-and-tables"]], "Configuring Interfaces": [[5, "configuring-interfaces"]], "Auto Interface": [[5, "auto-interface"]], "I2P Interface": [[5, "i2p-interface"]], "TCP Server Interface": [[5, "tcp-server-interface"]], "TCP Client Interface": [[5, "tcp-client-interface"]], "UDP Interface": [[5, "udp-interface"]], "RNode LoRa Interface": [[5, "rnode-lora-interface"]], "RNode Multi Interface": [[5, "rnode-multi-interface"]], "Serial Interface": [[5, "serial-interface"]], "Pipe Interface": [[5, "pipe-interface"]], "KISS Interface": [[5, "kiss-interface"]], "AX.25 KISS Interface": [[5, "ax-25-kiss-interface"]], "Common Interface Options": [[5, "common-interface-options"]], "Interface Modes": [[5, "interface-modes"]], "Announce Rate Control": [[5, "announce-rate-control"]], "New Destination Rate Limiting": [[5, "new-destination-rate-limiting"]], "Building Networks": [[6, "building-networks"]], "Concepts & Overview": [[6, "concepts-overview"]], "Example Scenarios": [[6, "example-scenarios"]], "Interconnected LoRa Sites": [[6, "interconnected-lora-sites"]], "Bridging Over the Internet": [[6, "bridging-over-the-internet"]], "Growth and Convergence": [[6, "growth-and-convergence"]], "API Reference": [[7, "api-reference"]], "Support Reticulum": [[8, "support-reticulum"]], "Donations": [[8, "donations"]], "Provide Feedback": [[8, "provide-feedback"]], "Contribute Code": [[8, "contribute-code"]], "Understanding Reticulum": [[9, "understanding-reticulum"]], "Motivation": [[9, "motivation"]], "Goals": [[9, "goals"]], "Introduction & Basic Functionality": [[9, "introduction-basic-functionality"]], "Destinations": [[9, "destinations"]], "Destination Naming": [[9, "destination-naming"]], "Public Key Announcements": [[9, "public-key-announcements"]], "Identities": [[9, "understanding-identities"]], "Getting Further": [[9, "getting-further"]], "Reticulum Transport": [[9, "reticulum-transport"]], "Node Types": [[9, "node-types"]], "The Announce Mechanism in Detail": [[9, "the-announce-mechanism-in-detail"]], "Reaching the Destination": [[9, "reaching-the-destination"]], "Link Establishment in Detail": [[9, "link-establishment-in-detail"]], "Resources": [[9, "resources"]], "Reference Setup": [[9, "reference-setup"]], "Protocol Specifics": [[9, "protocol-specifics"]], "Packet Prioritisation": [[9, "packet-prioritisation"]], "Interface Access Codes": [[9, "interface-access-codes"]], "Wire Format": [[9, "wire-format"]], "Announce Propagation Rules": [[9, "announce-propagation-rules"]], "Cryptographic Primitives": [[9, "cryptographic-primitives"]], "Using Reticulum on Your System": [[10, "using-reticulum-on-your-system"]], "Configuration & Data": [[10, "configuration-data"]], "Included Utility Programs": [[10, "included-utility-programs"]], "The rnsd Utility": [[10, "the-rnsd-utility"]], "The rnstatus Utility": [[10, "the-rnstatus-utility"]], "The rnid Utility": [[10, "the-rnid-utility"]], "The rnpath Utility": [[10, "the-rnpath-utility"]], "The rnprobe Utility": [[10, "the-rnprobe-utility"]], "The rncp Utility": [[10, "the-rncp-utility"]], "The rnx Utility": [[10, "the-rnx-utility"]], "The rnodeconf Utility": [[10, "the-rnodeconf-utility"]], "Remote Management": [[10, "remote-management"]], "Improving System Configuration": [[10, "improving-system-configuration"]], "Fixed Serial Port Names": [[10, "fixed-serial-port-names"]], "Reticulum as a System Service": [[10, "reticulum-as-a-system-service"]], "Systemwide Service": [[10, "systemwide-service"]], "Userspace Service": [[10, "userspace-service"]], "What is Reticulum?": [[11, "what-is-reticulum"]], "Current Status": [[11, "current-status"]], "What does Reticulum Offer?": [[11, "what-does-reticulum-offer"]], "Where can Reticulum be Used?": [[11, "where-can-reticulum-be-used"]], "Interface Types and Devices": [[11, "interface-types-and-devices"]], "Caveat Emptor": [[11, "caveat-emptor"]]}, "indexentries": {"announce_cap (rns.reticulum attribute)": [[7, "RNS.Reticulum.ANNOUNCE_CAP"]], "buffer (class in rns)": [[7, "RNS.Buffer"]], "curve (rns.identity attribute)": [[7, "RNS.Identity.CURVE"]], "curve (rns.link attribute)": [[7, "RNS.Link.CURVE"]], "channel (class in rns.channel)": [[7, "RNS.Channel.Channel"]], "destination (class in rns)": [[7, "RNS.Destination"]], "encrypted_mdu (rns.packet attribute)": [[7, "RNS.Packet.ENCRYPTED_MDU"]], "establishment_timeout_per_hop (rns.link attribute)": [[7, "RNS.Link.ESTABLISHMENT_TIMEOUT_PER_HOP"]], "identity (class in rns)": [[7, "RNS.Identity"]], "keepalive (rns.link attribute)": [[7, "RNS.Link.KEEPALIVE"]], "keepalive_timeout_factor (rns.link attribute)": [[7, "RNS.Link.KEEPALIVE_TIMEOUT_FACTOR"]], "keysize (rns.identity attribute)": [[7, "RNS.Identity.KEYSIZE"]], "link_mtu_discovery (rns.reticulum attribute)": [[7, "RNS.Reticulum.LINK_MTU_DISCOVERY"]], "link (class in rns)": [[7, "RNS.Link"]], "minimum_bitrate (rns.reticulum attribute)": [[7, "RNS.Reticulum.MINIMUM_BITRATE"]], "msgtype (rns.messagebase attribute)": [[7, "RNS.MessageBase.MSGTYPE"]], "mtu (rns.reticulum attribute)": [[7, "RNS.Reticulum.MTU"]], "messagebase (class in rns)": [[7, "RNS.MessageBase"]], "pathfinder_m (rns.transport attribute)": [[7, "RNS.Transport.PATHFINDER_M"]], "plain_mdu (rns.packet attribute)": [[7, "RNS.Packet.PLAIN_MDU"]], "packet (class in rns)": [[7, "RNS.Packet"]], "packetreceipt (class in rns)": [[7, "RNS.PacketReceipt"]], "ratchetsize (rns.identity attribute)": [[7, "RNS.Identity.RATCHETSIZE"]], "ratchet_count (rns.destination attribute)": [[7, "RNS.Destination.RATCHET_COUNT"]], "ratchet_expiry (rns.identity attribute)": [[7, "RNS.Identity.RATCHET_EXPIRY"]], "ratchet_interval (rns.destination attribute)": [[7, "RNS.Destination.RATCHET_INTERVAL"]], "rawchannelreader (class in rns)": [[7, "RNS.RawChannelReader"]], "rawchannelwriter (class in rns)": [[7, "RNS.RawChannelWriter"]], "requestreceipt (class in rns)": [[7, "RNS.RequestReceipt"]], "resource (class in rns)": [[7, "RNS.Resource"]], "reticulum (class in rns)": [[7, "RNS.Reticulum"]], "stale_grace (rns.link attribute)": [[7, "RNS.Link.STALE_GRACE"]], "stale_time (rns.link attribute)": [[7, "RNS.Link.STALE_TIME"]], "truncated_hashlength (rns.identity attribute)": [[7, "RNS.Identity.TRUNCATED_HASHLENGTH"]], "transport (class in rns)": [[7, "RNS.Transport"]], "__init__() (rns.rawchannelreader method)": [[7, "RNS.RawChannelReader.__init__"]], "__init__() (rns.rawchannelwriter method)": [[7, "RNS.RawChannelWriter.__init__"]], "accepts_links() (rns.destination method)": [[7, "RNS.Destination.accepts_links"]], "add_message_handler() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.add_message_handler"]], "add_ready_callback() (rns.rawchannelreader method)": [[7, "RNS.RawChannelReader.add_ready_callback"]], "advertise() (rns.resource method)": [[7, "RNS.Resource.advertise"]], "announce() (rns.destination method)": [[7, "RNS.Destination.announce"]], "app_and_aspects_from_name() (rns.destination static method)": [[7, "RNS.Destination.app_and_aspects_from_name"]], "cancel() (rns.resource method)": [[7, "RNS.Resource.cancel"]], "clear_default_app_data() (rns.destination method)": [[7, "RNS.Destination.clear_default_app_data"]], "concluded() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.concluded"]], "create_bidirectional_buffer() (rns.buffer static method)": [[7, "RNS.Buffer.create_bidirectional_buffer"]], "create_keys() (rns.destination method)": [[7, "RNS.Destination.create_keys"]], "create_reader() (rns.buffer static method)": [[7, "RNS.Buffer.create_reader"]], "create_writer() (rns.buffer static method)": [[7, "RNS.Buffer.create_writer"]], "current_ratchet_id() (rns.identity static method)": [[7, "RNS.Identity.current_ratchet_id"]], "decrypt() (rns.destination method)": [[7, "RNS.Destination.decrypt"]], "decrypt() (rns.identity method)": [[7, "RNS.Identity.decrypt"]], "deregister_announce_handler() (rns.transport static method)": [[7, "RNS.Transport.deregister_announce_handler"]], "deregister_request_handler() (rns.destination method)": [[7, "RNS.Destination.deregister_request_handler"]], "enable_ratchets() (rns.destination method)": [[7, "RNS.Destination.enable_ratchets"]], "encrypt() (rns.destination method)": [[7, "RNS.Destination.encrypt"]], "encrypt() (rns.identity method)": [[7, "RNS.Identity.encrypt"]], "enforce_ratchets() (rns.destination method)": [[7, "RNS.Destination.enforce_ratchets"]], "expand_name() (rns.destination static method)": [[7, "RNS.Destination.expand_name"]], "from_bytes() (rns.identity static method)": [[7, "RNS.Identity.from_bytes"]], "from_file() (rns.identity static method)": [[7, "RNS.Identity.from_file"]], "full_hash() (rns.identity static method)": [[7, "RNS.Identity.full_hash"]], "get_age() (rns.link method)": [[7, "RNS.Link.get_age"]], "get_channel() (rns.link method)": [[7, "RNS.Link.get_channel"]], "get_data_size() (rns.resource method)": [[7, "RNS.Resource.get_data_size"]], "get_establishment_rate() (rns.link method)": [[7, "RNS.Link.get_establishment_rate"]], "get_hash() (rns.resource method)": [[7, "RNS.Resource.get_hash"]], "get_instance() (rns.reticulum static method)": [[7, "RNS.Reticulum.get_instance"]], "get_parts() (rns.resource method)": [[7, "RNS.Resource.get_parts"]], "get_private_key() (rns.destination method)": [[7, "RNS.Destination.get_private_key"]], "get_private_key() (rns.identity method)": [[7, "RNS.Identity.get_private_key"]], "get_progress() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_progress"]], "get_progress() (rns.resource method)": [[7, "RNS.Resource.get_progress"]], "get_public_key() (rns.identity method)": [[7, "RNS.Identity.get_public_key"]], "get_q() (rns.link method)": [[7, "RNS.Link.get_q"]], "get_q() (rns.packet method)": [[7, "RNS.Packet.get_q"]], "get_random_hash() (rns.identity static method)": [[7, "RNS.Identity.get_random_hash"]], "get_remote_identity() (rns.link method)": [[7, "RNS.Link.get_remote_identity"]], "get_request_id() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_request_id"]], "get_response() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_response"]], "get_response_time() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_response_time"]], "get_rssi() (rns.link method)": [[7, "RNS.Link.get_rssi"]], "get_rssi() (rns.packet method)": [[7, "RNS.Packet.get_rssi"]], "get_rtt() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.get_rtt"]], "get_segments() (rns.resource method)": [[7, "RNS.Resource.get_segments"]], "get_snr() (rns.link method)": [[7, "RNS.Link.get_snr"]], "get_snr() (rns.packet method)": [[7, "RNS.Packet.get_snr"]], "get_status() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.get_status"]], "get_status() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_status"]], "get_transfer_size() (rns.resource method)": [[7, "RNS.Resource.get_transfer_size"]], "has_path() (rns.transport static method)": [[7, "RNS.Transport.has_path"]], "hash() (rns.destination static method)": [[7, "RNS.Destination.hash"]], "hash_from_name_and_identity() (rns.destination static method)": [[7, "RNS.Destination.hash_from_name_and_identity"]], "hops_to() (rns.transport static method)": [[7, "RNS.Transport.hops_to"]], "identify() (rns.link method)": [[7, "RNS.Link.identify"]], "inactive_for() (rns.link method)": [[7, "RNS.Link.inactive_for"]], "is_compressed() (rns.resource method)": [[7, "RNS.Resource.is_compressed"]], "is_ready_to_send() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.is_ready_to_send"]], "load_private_key() (rns.destination method)": [[7, "RNS.Destination.load_private_key"]], "load_private_key() (rns.identity method)": [[7, "RNS.Identity.load_private_key"]], "load_public_key() (rns.identity method)": [[7, "RNS.Identity.load_public_key"]], "mdu (rns.channel.channel property)": [[7, "RNS.Channel.Channel.mdu"]], "next_hop() (rns.transport static method)": [[7, "RNS.Transport.next_hop"]], "next_hop_interface() (rns.transport static method)": [[7, "RNS.Transport.next_hop_interface"]], "no_data_for() (rns.link method)": [[7, "RNS.Link.no_data_for"]], "no_inbound_for() (rns.link method)": [[7, "RNS.Link.no_inbound_for"]], "no_outbound_for() (rns.link method)": [[7, "RNS.Link.no_outbound_for"]], "pack() (rns.messagebase method)": [[7, "RNS.MessageBase.pack"]], "recall() (rns.identity static method)": [[7, "RNS.Identity.recall"]], "recall_app_data() (rns.identity static method)": [[7, "RNS.Identity.recall_app_data"]], "register_announce_handler() (rns.transport static method)": [[7, "RNS.Transport.register_announce_handler"]], "register_message_type() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.register_message_type"]], "register_request_handler() (rns.destination method)": [[7, "RNS.Destination.register_request_handler"]], "remote_management_enabled() (rns.reticulum static method)": [[7, "RNS.Reticulum.remote_management_enabled"]], "remove_message_handler() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.remove_message_handler"]], "remove_ready_callback() (rns.rawchannelreader method)": [[7, "RNS.RawChannelReader.remove_ready_callback"]], "request() (rns.link method)": [[7, "RNS.Link.request"]], "request_path() (rns.transport static method)": [[7, "RNS.Transport.request_path"]], "resend() (rns.packet method)": [[7, "RNS.Packet.resend"]], "send() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.send"]], "send() (rns.packet method)": [[7, "RNS.Packet.send"]], "set_default_app_data() (rns.destination method)": [[7, "RNS.Destination.set_default_app_data"]], "set_delivery_callback() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.set_delivery_callback"]], "set_link_closed_callback() (rns.link method)": [[7, "RNS.Link.set_link_closed_callback"]], "set_link_established_callback() (rns.destination method)": [[7, "RNS.Destination.set_link_established_callback"]], "set_packet_callback() (rns.destination method)": [[7, "RNS.Destination.set_packet_callback"]], "set_packet_callback() (rns.link method)": [[7, "RNS.Link.set_packet_callback"]], "set_proof_requested_callback() (rns.destination method)": [[7, "RNS.Destination.set_proof_requested_callback"]], "set_proof_strategy() (rns.destination method)": [[7, "RNS.Destination.set_proof_strategy"]], "set_ratchet_interval() (rns.destination method)": [[7, "RNS.Destination.set_ratchet_interval"]], "set_remote_identified_callback() (rns.link method)": [[7, "RNS.Link.set_remote_identified_callback"]], "set_resource_callback() (rns.link method)": [[7, "RNS.Link.set_resource_callback"]], "set_resource_concluded_callback() (rns.link method)": [[7, "RNS.Link.set_resource_concluded_callback"]], "set_resource_started_callback() (rns.link method)": [[7, "RNS.Link.set_resource_started_callback"]], "set_resource_strategy() (rns.link method)": [[7, "RNS.Link.set_resource_strategy"]], "set_retained_ratchets() (rns.destination method)": [[7, "RNS.Destination.set_retained_ratchets"]], "set_timeout() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.set_timeout"]], "set_timeout_callback() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.set_timeout_callback"]], "should_use_implicit_proof() (rns.reticulum static method)": [[7, "RNS.Reticulum.should_use_implicit_proof"]], "sign() (rns.destination method)": [[7, "RNS.Destination.sign"]], "sign() (rns.identity method)": [[7, "RNS.Identity.sign"]], "teardown() (rns.link method)": [[7, "RNS.Link.teardown"]], "to_file() (rns.identity method)": [[7, "RNS.Identity.to_file"]], "track_phy_stats() (rns.link method)": [[7, "RNS.Link.track_phy_stats"]], "transport_enabled() (rns.reticulum static method)": [[7, "RNS.Reticulum.transport_enabled"]], "truncated_hash() (rns.identity static method)": [[7, "RNS.Identity.truncated_hash"]], "unpack() (rns.messagebase method)": [[7, "RNS.MessageBase.unpack"]], "validate() (rns.identity method)": [[7, "RNS.Identity.validate"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["examples", "forhumans", "gettingstartedfast", "hardware", "index", "interfaces", "networks", "reference", "support", "understanding", "using", "whatis"], "filenames": ["examples.rst", "forhumans.rst", "gettingstartedfast.rst", "hardware.rst", "index.rst", "interfaces.rst", "networks.rst", "reference.rst", "support.rst", "understanding.rst", "using.rst", "whatis.rst"], "titles": ["Code Examples", "An Explanation of Reticulum for Human Beings", "Getting Started Fast", "Communications Hardware", "Reticulum Network Stack Manual", "Configuring Interfaces", "Building Networks", "API Reference", "Support Reticulum", "Understanding Reticulum", "Using Reticulum on Your System", "What is Reticulum?"], "terms": {"A": [0, 2, 5, 6, 7, 9, 10], "number": [0, 2, 5, 6, 7, 9, 10], "ar": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "includ": [0, 3, 4, 5, 7, 9, 11], "sourc": [0, 2, 3, 6, 9, 11], "distribut": [0, 2, 6, 7, 9, 10, 11], "reticulum": [0, 5, 6, 7], "you": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "can": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10], "us": [0, 3, 4, 5, 6, 7, 9], "learn": [0, 2, 8, 9], "how": [0, 2, 3, 5, 6, 9, 10, 11], "write": [0, 2, 5, 7, 9, 10], "your": [0, 2, 3, 4, 5, 6, 7, 8, 9, 11], "own": [0, 2, 6, 7, 9, 10, 11], "program": [0, 3, 4, 5, 7, 9, 11], "The": [0, 2, 3, 4, 5, 6, 7, 11], "demonstr": [0, 5], "bare": [0, 5], "minimum": [0, 5, 6, 7, 9], "setup": [0, 2, 4, 5, 10], "requir": [0, 2, 5, 6, 7, 9, 10, 11], "connect": [0, 3, 4, 5, 6, 7, 9, 10, 11], "network": [0, 3, 5, 7, 9, 10, 11], "from": [0, 2, 3, 5, 6, 7, 9, 10, 11], "In": [0, 2, 3, 5, 6, 7, 9, 10, 11], "about": [0, 2, 3, 5, 6, 7, 9], "five": 0, "line": [0, 2, 4, 5, 6, 9, 10, 11], "have": [0, 2, 3, 5, 6, 7, 9, 10], "stack": [0, 2, 6, 7, 9, 10, 11], "initialis": [0, 7, 10], "readi": [0, 2, 3, 5, 6, 7, 11], "pass": [0, 3, 5, 6, 7, 9, 10], "traffic": [0, 2, 5, 6, 7, 9, 10], "thi": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "rn": [0, 2, 3, 7, 9, 10], "start": [0, 3, 4, 5, 7, 9, 10], "up": [0, 2, 3, 5, 6, 7, 9, 10, 11], "gener": [0, 2, 3, 5, 6, 7, 9, 10, 11], "new": [0, 4, 6, 7, 9, 10], "destin": [0, 2, 4, 6, 7, 10], "let": [0, 2, 5, 6, 9, 10], "user": [0, 2, 5, 6, 9, 10, 11], "send": [0, 5, 7, 9, 10], "an": [0, 2, 3, 5, 6, 7, 9, 10, 11], "import": [0, 2, 3, 5, 6, 7, 8, 9], "argpars": 0, "": [0, 2, 5, 6, 9, 10, 11], "defin": [0, 5, 7, 9, 10], "app": [0, 2, 7, 9], "name": [0, 2, 4, 5, 6, 7], "we": [0, 2, 3, 5, 8, 9], "ll": [0, 2, 11], "all": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "creat": [0, 4, 5, 6, 7, 9, 10, 11], "sinc": [0, 2, 5, 6, 7, 9], "basic": [0, 2, 4, 5, 7, 10], "i": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10], "part": [0, 5, 6, 7, 9, 10], "rang": [0, 2, 3, 5, 6, 9, 10, 11], "util": [0, 3, 4, 5, 9], "put": [0, 3, 5, 10], "them": [0, 2, 3, 5, 6, 8, 9, 10, 11], "within": [0, 2, 5, 6, 7, 9], "namespac": 0, "example_util": 0, "app_nam": [0, 7], "execut": [0, 2, 5, 7, 10], "when": [0, 2, 3, 5, 6, 7, 9, 10], "def": 0, "program_setup": 0, "configpath": 0, "must": [0, 2, 5, 6, 7, 9, 10], "first": [0, 2, 5, 7, 9, 10], "randomli": [0, 9], "ident": [0, 2, 4, 7, 10, 11], "our": [0, 9], "just": [0, 2, 3, 5, 6, 9, 11], "endpoint": [0, 6, 7, 9], "address": [0, 2, 5, 6, 7, 9, 10, 11], "commun": [0, 2, 4, 5, 6, 7, 8, 9, 10, 11], "also": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "exist": [0, 2, 3, 5, 9, 10, 11], "which": [0, 2, 5, 6, 7, 9, 10], "know": [0, 2, 3, 6, 7, 9, 11], "thei": [0, 2, 5, 6, 7, 9, 10], "reachabl": [0, 2, 5, 6, 7, 9, 10], "automat": [0, 2, 5, 6, 7, 9, 10, 11], "path": [0, 2, 3, 5, 7, 9, 10], "anywher": [0, 5], "els": [0, 2, 6, 9], "IN": [0, 7], "singl": [0, 5, 7, 9, 10, 11], "minimalsampl": 0, "configur": [0, 2, 3, 4, 6, 7, 9, 11], "prove": [0, 9], "packet": [0, 2, 4, 5, 6, 7, 10, 11], "By": [0, 2, 5, 7, 9, 10], "do": [0, 2, 3, 5, 7, 9, 10, 11], "proof": [0, 7, 9, 10], "each": [0, 2, 5, 6, 7, 9, 10], "incom": [0, 5, 7, 10], "transmit": [0, 5, 9], "back": [0, 5, 9, 11], "sender": [0, 2, 6, 9, 10], "anyon": [0, 2, 3, 5, 6, 7, 9, 10], "tri": 0, "whether": [0, 2, 5, 7, 9], "wa": [0, 3, 5, 6, 7, 9, 10, 11], "receiv": [0, 2, 5, 7, 9, 10], "correctli": 0, "set_proof_strategi": [0, 7], "prove_al": [0, 7], "everyth": [0, 6, 9], "hand": 0, "over": [0, 3, 4, 5, 7, 9, 10, 11], "control": [0, 2, 3, 4, 6, 7, 9, 11], "loop": 0, "announceloop": 0, "log": [0, 2, 5, 10], "prettyhexrep": 0, "hash": [0, 2, 7, 9, 10], "run": [0, 2, 3, 5, 6, 7, 9, 10, 11], "hit": 0, "enter": [0, 10], "manual": [0, 2, 5, 6, 7, 10], "ctrl": 0, "c": [0, 6, 10], "quit": [0, 2], "until": [0, 2, 5, 7], "exit": [0, 2, 7, 10], "If": [0, 2, 3, 5, 6, 7, 9, 10, 11], "server": [0, 2, 3, 4, 7, 10], "client": [0, 2, 3, 4, 7, 10], "messag": [0, 2, 7, 9, 10], "direct": [0, 2, 3, 6, 7, 9, 10], "toward": [0, 5, 9], "while": [0, 2, 3, 5, 6, 7, 9, 11], "true": [0, 2, 5, 7, 10], "input": [0, 10], "sent": [0, 2, 7, 9, 10], "startup": [0, 2, 10], "get": [0, 3, 4, 5, 7, 10, 11], "pars": 0, "desir": [0, 3, 5, 9], "mode": [0, 2, 3, 4, 9, 10, 11], "__name__": 0, "__main__": 0, "try": [0, 4, 5, 7], "parser": 0, "argumentpars": 0, "descript": [0, 10], "add_argu": 0, "config": [0, 2, 5, 6, 10], "action": 0, "store": [0, 7, 9, 10], "default": [0, 2, 3, 5, 6, 7, 9, 10], "none": [0, 2, 5, 7, 9, 10], "help": [0, 2, 6, 8, 9, 10, 11], "altern": [0, 2, 5, 10], "directori": [0, 2, 10], "type": [0, 2, 4, 5, 6, 7, 10], "str": 0, "arg": 0, "parse_arg": 0, "configarg": 0, "except": [0, 5, 7], "keyboardinterrupt": 0, "print": [0, 5, 10], "found": [0, 2, 5, 6, 9, 10], "http": [0, 2, 8], "github": [0, 2, 8], "com": [0, 2, 8], "markqvist": [0, 2, 8], "blob": [0, 9], "master": [0, 7], "py": [0, 2, 9, 10], "build": [0, 2, 3, 4, 5, 9, 11], "upon": [0, 5, 9], "previou": 0, "explor": [0, 9, 11], "notif": [0, 7], "relev": [0, 3, 5, 7, 9, 10], "set": [0, 2, 3, 5, 6, 7, 9, 10, 11], "callback": [0, 7], "applic": [0, 2, 5, 6, 7, 9, 10, 11], "arriv": [0, 9], "random": [0, 7, 9], "two": [0, 2, 3, 5, 6, 7, 9], "list": [0, 2, 3, 5, 7, 9, 11], "string": [0, 7], "app_data": [0, 7], "fruit": 0, "peach": 0, "quinc": 0, "date": [0, 2], "tangerin": 0, "pomelo": 0, "carambola": 0, "grape": 0, "noble_gas": 0, "helium": 0, "neon": 0, "argon": 0, "krypton": 0, "xenon": 0, "radon": 0, "oganesson": 0, "announcesampl": 0, "space": [0, 2, 3, 6, 9, 11], "destination_1": 0, "destination_2": 0, "handler": [0, 7], "onli": [0, 2, 3, 5, 6, 7, 9, 10, 11], "ask": [0, 2, 3, 7], "chang": [0, 2, 5, 7, 9, 10, 11], "filter": [0, 6, 9, 10], "see": [0, 2, 5, 6, 7, 9, 10, 11], "what": [0, 2, 4, 5, 7, 9], "happen": [0, 2, 7, 9], "announce_handl": 0, "exampleannouncehandl": 0, "aspect_filt": [0, 7], "regist": [0, 7], "transport": [0, 2, 4, 5, 6, 7, 10, 11], "register_announce_handl": [0, 7], "select": [0, 5], "randint": 0, "0": [0, 2, 5, 7, 9, 10, 11], "len": 0, "1": [0, 2, 5, 7, 9, 10], "data": [0, 2, 3, 4, 5, 6, 7, 9, 11], "encod": [0, 7], "utf": 0, "8": [0, 5, 10], "nobl": 0, "ga": 0, "noble_ga": 0, "need": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "class": [0, 6, 7, 11], "method": [0, 2, 5, 7, 9], "take": [0, 2, 5, 9, 10, 11], "option": [0, 2, 3, 4, 6, 7, 9, 10], "argument": [0, 7, 10], "instanc": [0, 4, 5, 7, 9, 10], "some": [0, 2, 3, 5, 6, 7, 9, 10], "want": [0, 2, 5, 6, 9, 10, 11], "aspect": [0, 3, 5, 7, 9, 10], "__init__": [0, 7], "self": [0, 6, 11], "call": [0, 2, 6, 7, 9, 11], "system": [0, 2, 3, 4, 5, 6, 7, 8, 9, 11], "match": [0, 5, 9, 10], "specif": [0, 3, 4, 5, 7, 10], "cannot": [0, 2, 5, 11], "wildcard": 0, "received_announc": [0, 7], "destination_hash": [0, 7, 10], "announced_ident": [0, 7], "contain": [0, 6, 7, 9, 10], "follow": [0, 2, 3, 5, 7, 8, 9, 10, 11], "decod": 0, "plaintext": [0, 7], "unencrypt": [0, 7, 9], "inform": [0, 2, 4, 5, 6, 7, 9, 10], "ani": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "listen": [0, 5, 9, 10], "sy": 0, "did": 0, "one": [0, 2, 3, 5, 6, 7, 9, 10, 11], "public_inform": 0, "ad": [0, 3, 4, 5, 6, 7, 9, 11], "so": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "differ": [0, 2, 3, 5, 6, 7, 9, 10, 11], "plain": [0, 3, 5, 7, 9], "uncencrypt": 0, "broadcast_destin": 0, "specifi": [0, 2, 3, 5, 6, 7, 10], "everi": [0, 2, 5, 6, 7, 9], "time": [0, 2, 3, 5, 6, 7, 9, 10], "set_packet_callback": [0, 7], "packet_callback": 0, "main": 0, "broadcastloop": 0, "simpli": [0, 2, 3, 5, 6, 9, 10], "out": [0, 2, 3, 5, 6, 7, 9, 10, 11], "r": [0, 5, 9, 10], "n": [0, 9, 10], "end": [0, 5, 6, 7, 9, 11], "stdout": [0, 5, 10], "flush": 0, "text": [0, 2, 6, 9], "prompt": [0, 2], "channelarg": 0, "between": [0, 5, 6, 7, 9, 10], "simpl": [0, 3, 7, 9, 10, 11], "respond": [0, 7, 10], "receipt": [0, 7, 9], "choos": [0, 2, 5, 9], "global": [0, 2, 5, 6, 7, 9, 11], "server_ident": 0, "queri": [0, 2, 7, 10], "abl": [0, 2, 5, 6, 7, 9, 10], "verifi": [0, 2, 7, 9, 10, 11], "repli": [0, 10], "encrypt": [0, 2, 6, 7, 9, 10, 11], "wai": [0, 2, 5, 6, 7, 9, 10], "certain": [0, 5, 6, 8, 9], "than": [0, 2, 5, 6, 7, 9, 10, 11], "read": [0, 2, 5, 7, 9, 10], "echo_destin": 0, "tell": [0, 5], "function": [0, 2, 3, 4, 5, 6, 7, 8, 10, 11], "server_callback": 0, "wait": [0, 5, 9, 10], "go": [0, 2, 5, 9], "handl": [0, 3, 5, 6, 7, 9, 10, 11], "reception_stat": 0, "is_connected_to_shared_inst": 0, "reception_rssi": 0, "get_packet_rssi": 0, "packet_hash": 0, "reception_snr": 0, "get_packet_snr": 0, "rssi": [0, 7, 10], "dbm": [0, 5, 10], "snr": [0, 7, 10], "db": [0, 10], "destination_hexhash": 0, "timeout": [0, 7, 10], "binari": [0, 2, 7, 9, 10], "represent": [0, 7], "command": [0, 2, 5, 10], "dest_len": 0, "truncated_hashlength": [0, 7], "2": [0, 5, 7, 9, 10], "rais": [0, 7], "valueerror": [0, 7], "length": [0, 5, 7, 9], "invalid": [0, 7], "hex": [0, 10], "hexadecim": [0, 9, 10], "charact": 0, "byte": [0, 7, 9, 10, 11], "format": [0, 4, 10, 11], "fromhex": 0, "e": [0, 6, 10], "check": [0, 2, 7, 9, 10], "overrid": 0, "loglevel": [0, 7, 10], "provid": [0, 2, 3, 4, 5, 6, 7, 9, 11], "feedback": [0, 4], "log_info": 0, "doe": [0, 2, 3, 4, 5, 6, 7, 9, 10], "load": [0, 2, 7, 10, 11], "has_path": [0, 7], "To": [0, 2, 3, 5, 6, 9, 10, 11], "public": [0, 4, 5, 7, 10], "kei": [0, 4, 6, 7, 10, 11], "done": [0, 2, 5, 6, 9, 10], "recal": [0, 7, 10], "modul": [0, 2, 3, 5, 9, 10, 11], "known": [0, 5, 7, 9, 10], "return": [0, 7, 10], "outgo": [0, 5, 7, 9, 10], "got": 0, "correct": [0, 9], "convent": 0, "request_destin": 0, "add": [0, 2, 5, 6, 7, 10], "echo_request": 0, "get_random_hash": [0, 7], "successfulli": [0, 7, 9], "packetreceipt": [0, 4, 7], "packet_receipt": [0, 7], "set_timeout": [0, 7], "set_timeout_callback": [0, 7], "packet_timed_out": 0, "deliveri": [0, 2, 7, 11], "set_delivery_callback": [0, 7], "packet_deliv": 0, "yet": [0, 5, 9, 11], "retri": [0, 7, 9], "onc": [0, 2, 3, 5, 6, 7, 9, 10, 11], "request_path": [0, 7], "statu": [0, 2, 4, 5, 7, 9, 10], "deliv": [0, 7], "rtt": [0, 7, 9], "get_rtt": [0, 7], "round": [0, 7, 10], "3": [0, 2, 5, 9, 10, 11], "rttstring": 0, "second": [0, 5, 7, 9, 10, 11], "1000": 0, "millisecond": [0, 10], "proof_packet": 0, "valid": [0, 5, 7, 9, 10], "trip": [0, 7, 10], "fail": [0, 2, 7], "store_tru": 0, "t": [0, 2, 5, 6, 7, 10], "metavar": 0, "float": [0, 7], "narg": 0, "timeoutarg": 0, "print_help": 0, "establish": [0, 2, 5, 6, 7, 11], "remot": [0, 4, 7], "forth": 0, "o": [0, 2, 9, 10, 11], "refer": [0, 2, 4], "latest": [0, 2, 5, 7, 10], "latest_client_link": 0, "server_destin": 0, "linkexampl": 0, "set_link_established_callback": [0, 7], "client_connect": 0, "server_loop": 0, "set_link_closed_callback": [0, 7], "client_disconnect": 0, "server_packet_receiv": 0, "disconnect": [0, 5], "activ": [0, 2, 5, 7, 9], "last": [0, 5, 7], "reply_text": 0, "reply_data": 0, "server_link": 0, "sleep": [0, 10], "begin": [0, 3, 7], "And": 0, "client_packet_receiv": 0, "close": [0, 6, 7, 10], "link_establish": 0, "link_clos": 0, "interact": [0, 2, 7, 9, 10], "client_loop": 0, "becom": [0, 2, 6, 7, 9], "should_quit": 0, "fals": [0, 5, 7, 10], "should": [0, 2, 5, 6, 7, 9, 10, 11], "q": [0, 10], "teardown": [0, 7], "mdu": [0, 7], "size": [0, 2, 5, 7, 9, 10], "exce": [0, 5, 7], "log_error": 0, "error": [0, 2, 8, 10], "ha": [0, 2, 3, 5, 6, 7, 9, 11], "been": [0, 2, 3, 5, 6, 7, 9, 11], "later": [0, 2, 5, 10], "teardown_reason": 0, "now": [0, 2, 6, 9, 10], "elif": 0, "destination_clos": 0, "exit_handl": 0, "5": [0, 2, 5, 7, 9, 10, 11], "_exit": 0, "identifi": [0, 5, 7, 9, 10], "intiat": 0, "initi": [0, 6, 7, 9, 11], "peer": [0, 2, 5, 7, 9, 10], "identifyexampl": 0, "set_remote_identified_callback": [0, 7], "remote_identifi": 0, "origin": [0, 6, 9], "displai": [0, 9, 10], "remote_p": 0, "unidentifi": 0, "get_remote_ident": [0, 7], "client_ident": 0, "sendig": 0, "perform": [0, 2, 5, 6, 7, 9, 10], "random_text_gener": 0, "request_id": [0, 7], "link_id": [0, 7], "remote_ident": [0, 7], "requested_at": [0, 7], "look": [0, 2, 5, 9, 10], "On": [0, 2, 5, 10], "full": [0, 2, 5, 7, 9, 10, 11], "moon": 0, "becki": 0, "upset": 0, "stai": [0, 9, 10], "awai": [0, 5, 6, 9, 10], "pet": 0, "shop": 0, "stock": 0, "requestexampl": 0, "register_request_handl": [0, 7], "response_gener": [0, 7], "allow": [0, 2, 3, 5, 6, 7, 9, 10, 11], "allow_al": [0, 7], "response_callback": [0, 7], "got_respons": 0, "failed_callback": [0, 7], "request_fail": 0, "request_receipt": [0, 7], "request_receiv": 0, "structur": [0, 7, 9, 11], "datetim": 0, "vendor": [0, 3, 11], "umsgpack": 0, "share": [0, 2, 6, 7, 9, 10], "object": [0, 7], "subclass": [0, 7], "messagebas": [0, 4, 7], "ensur": [0, 5, 7, 9, 10, 11], "serial": [0, 2, 4, 9, 11], "deseri": 0, "multiplex": 0, "other": [0, 2, 3, 5, 6, 7, 9, 10], "both": [0, 2, 3, 5, 6, 7, 9, 10, 11], "same": [0, 2, 3, 5, 6, 7, 9, 10], "definit": [0, 9], "note": [0, 3, 4, 5, 7, 9, 10], "wish": [0, 9, 10], "make": [0, 2, 3, 5, 8, 9, 10, 11], "stringmessag": 0, "convei": 0, "timestamp": [0, 9], "msgtype": [0, 7], "variabl": [0, 2, 7], "assign": [0, 9, 10], "integ": 0, "valu": [0, 5, 7, 9], "constructor": 0, "uniqu": [0, 5, 7, 9, 11], "across": [0, 3, 6, 7], "0xf000": [0, 7], "reserv": [0, 7], "0x0101": 0, "callabl": [0, 7], "paramet": [0, 3, 5, 6, 7, 9, 10], "empti": 0, "version": [0, 2, 7, 9, 10], "unpack": [0, 7], "final": [0, 7, 9], "implement": [0, 5, 6, 7, 8, 9, 11], "pack": [0, 7], "raw": [0, 3, 7], "payload": [0, 7, 9, 10], "packag": [0, 2, 5, 9], "bundl": 0, "could": [0, 2, 5, 6, 7, 9, 11], "struct": 0, "python": [0, 4, 7, 9, 10, 11], "more": [0, 2, 3, 5, 6, 7, 9, 10, 11], "fit": 0, "entir": [0, 2, 6, 7, 9, 10], "avail": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "properti": [0, 6, 7], "slightli": [0, 2], "less": [0, 5, 7, 9, 11], "due": [0, 6], "header": [0, 7, 9], "content": [0, 2, 6, 10], "stream": [0, 7, 9], "packb": 0, "unpackb": 0, "channelexampl": 0, "get_channel": [0, 7], "register_message_typ": [0, 7], "add_message_handl": [0, 7], "server_message_receiv": 0, "param": 0, "deserializ": 0, "unless": [0, 2, 5, 7, 9], "preced": 0, "indic": [0, 7], "isinst": 0, "reply_messag": 0, "order": [0, 7, 10], "were": [0, 6], "consid": [0, 5, 7, 9, 11], "subsequ": [0, 9], "skip": 0, "packed_s": 0, "is_ready_to_send": [0, 7], "pleas": [0, 2, 5, 7, 10, 11], "pend": 0, "complet": [0, 2, 3, 5, 6, 7, 9, 10, 11], "client_message_receiv": 0, "reader": [0, 7], "writer": [0, 7], "__future__": 0, "annot": 0, "latest_buff": 0, "bufferexampl": 0, "old": [0, 3, 8, 9], "stream_id": [0, 7], "bit": [0, 2, 5, 7, 9, 10, 11], "like": [0, 2, 3, 5, 6, 7, 9, 10, 11], "file": [0, 2, 3, 5, 6, 7, 9, 10, 11], "descriptor": 0, "actual": [0, 2, 5, 9], "separ": [0, 2, 5, 6, 9, 10], "unidirect": 0, "flow": [0, 5, 6], "opposit": [0, 5], "create_bidirectional_buff": [0, 7], "server_buffer_readi": 0, "ready_byt": [0, 7], "int": [0, 7], "otherwis": [0, 7], "forc": [0, 10], "server_client_connect": 0, "detail": [0, 2, 4, 5, 7, 10, 11], "client_buffer_readi": 0, "termin": [0, 2, 7], "download": [0, 2, 5, 10], "resourc": [0, 2, 4, 5, 7, 8], "effici": [0, 2, 5, 7, 9, 11], "serv": [0, 3, 5, 6, 9, 10], "larg": [0, 3, 5, 6, 7, 9, 11], "transfer": [0, 7, 9, 10, 11], "recommend": [0, 2, 9], "compress": [0, 7, 9, 11], "hashmap": 0, "sequenc": [0, 7, 9, 11], "long": [0, 2, 3, 5, 7, 9], "slow": [0, 5, 9], "cpu": [0, 9], "probabl": [0, 2, 6, 9, 10, 11], "result": [0, 9, 10], "befor": [0, 2, 5, 7, 9, 10], "prepar": [0, 6], "instead": [0, 2, 5, 7, 9, 10], "slice": 0, "chunk": 0, "suitabl": [0, 2, 5, 6, 9, 11], "thread": 0, "app_timeout": 0, "45": [0, 9], "serve_path": 0, "here": [0, 2, 5, 9, 10], "conveni": 0, "list_fil": 0, "entri": [0, 2, 9], "listdir": 0, "isfil": 0, "join": [0, 2, 6, 8, 9], "host": [0, 2, 5, 9, 10], "still": [0, 2, 5, 6, 9, 10], "isdir": 0, "list_packet": 0, "list_receipt": 0, "list_deliv": 0, "list_timeout": 0, "too": [0, 6], "mani": [0, 2, 3, 5, 6, 7, 9, 10, 11], "split": 0, "filelist": 0, "multipl": [0, 5, 6, 9, 10], "hint": 0, "alreadi": [0, 2, 3, 6, 7, 9, 10], "support": [0, 2, 4, 5, 6, 7, 9, 10, 11], "after": [0, 2, 5, 6, 7, 9, 10], "re": [0, 5, 7, 9], "keep": [0, 6, 7, 9, 10, 11], "open": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "client_request": 0, "longer": [0, 2, 6, 9, 10], "filenam": 0, "rb": 0, "file_resourc": 0, "resource_sending_conclud": 0, "somethign": 0, "went": 0, "wrong": [0, 5], "don": [0, 2, 6, 7, 10], "unknown": [0, 5, 7, 9, 10], "conclud": [0, 7], "hasattr": 0, "server_fil": 0, "current": [0, 2, 4, 5, 7, 9], "current_download": 0, "current_filenam": 0, "statist": [0, 5, 7, 8], "download_start": 0, "download_finish": 0, "download_tim": 0, "transfer_s": 0, "file_s": 0, "expect": [0, 2, 5, 7, 9, 10], "normal": [0, 2, 5, 7, 10], "accordingli": [0, 5], "filelist_receiv": 0, "advertis": [0, 7], "set_resource_strategi": [0, 7], "accept_al": [0, 7], "set_resource_started_callback": [0, 7], "download_began": 0, "set_resource_concluded_callback": [0, 7], "download_conclud": 0, "menu": 0, "menu_mod": 0, "down": [0, 3, 5, 7], "request_packet": 0, "create_receipt": [0, 7], "print_menu": 0, "25": [0, 4, 11], "user_input": 0, "screen": 0, "variou": [0, 2, 5, 6, 9, 10, 11], "state": 0, "It": [0, 2, 3, 5, 7, 9, 10, 11], "uninterest": 0, "won": 0, "clear_screen": 0, "print_filelist": 0, "percent": [0, 5], "get_progress": [0, 7], "100": [0, 5, 9], "rprogress": 0, "save_error": 0, "disk": [0, 7], "hour": [0, 5], "rem": 0, "divmod": 0, "3600": [0, 5], "minut": [0, 2, 5, 9], "60": [0, 5], "timestr": 0, "05": 0, "2f": 0, "ttime": 0, "taken": [0, 9], "tfile": 0, "size_str": 0, "tdata": 0, "teffect": 0, "rate": [0, 4, 7, 10], "suffix": 0, "b": [0, 6, 10], "ttransfer": 0, "press": 0, "index": [0, 2, 4], "enumer": 0, "filelist_data": 0, "extend": [0, 7], "local": [0, 2, 5, 6, 7, 9, 10, 11], "append": [0, 9], "visibl": 0, "updat": [0, 2, 7, 9, 10], "small": [0, 5, 6, 7, 9, 11], "job": 0, "potenti": [0, 2, 5, 8, 9, 10, 11], "target": [0, 5, 10], "filelist_timeout_job": 0, "daemon": [0, 2, 5, 7, 10], "detect": 0, "shown": 0, "progress": [0, 7, 10, 11], "total_s": 0, "saved_filenam": 0, "counter": 0, "wb": 0, "human": [0, 7, 8, 9], "readabl": [0, 7, 9], "num": 0, "unit": [0, 2, 7, 10], "ki": 0, "mi": 0, "gi": 0, "ti": [0, 9], "pi": [0, 4, 6, 9, 10, 11], "ei": 0, "zi": 0, "last_unit": 0, "yi": 0, "k": [0, 10], "m": [0, 2, 9, 10], "g": [0, 10], "p": [0, 10], "z": 0, "y": 0, "ab": 0, "1024": 0, "clear": [0, 5, 7, 9, 10], "cl": 0, "nt": 0, "dir": 0, "exampleinterfac": 0, "utilis": [0, 2, 5, 6, 7, 10, 11], "fulli": [0, 2, 3, 5, 9, 10, 11], "par": [0, 2], "nativ": 0, "common": [0, 3, 4, 6, 9, 10, 11], "mit": 0, "licens": [0, 9], "copyright": 0, "2024": 0, "mark": [0, 7, 9], "qvist": 0, "unsign": 0, "io": [0, 3], "illustr": [0, 6, 9], "runtim": [0, 9], "place": [0, 2, 5, 6, 9, 10], "folder": [0, 2], "similar": [0, 2, 3, 5, 6, 7, 10, 11], "enabl": [0, 2, 3, 5, 6, 7, 9, 10, 11], "gatewai": [0, 2, 5, 6, 9], "port": [0, 3, 4, 5, 6, 9, 11], "dev": [0, 2, 5, 10], "ttyusb0": [0, 5, 10], "speed": [0, 5, 7, 9, 10], "115200": [0, 5, 10], "databit": [0, 5, 10], "pariti": [0, 5, 10], "stopbit": [0, 5, 10], "hdlc": 0, "helper": 0, "delimit": 0, "physic": [0, 2, 3, 5, 7, 9, 10, 11], "medium": [0, 3, 5, 6, 7, 9, 11], "case": [0, 2, 3, 5, 6, 9, 10], "simplifi": 0, "frame": [0, 5], "ppp": 0, "flag": [0, 2, 7, 9], "0x7e": 0, "esc": 0, "0x7d": 0, "esc_mask": 0, "0x20": 0, "staticmethod": 0, "escap": 0, "replac": [0, 2, 7, 9, 10], "sub": [0, 5], "ifac": [0, 9, 10], "default_ifac_s": 0, "particular": [0, 3], "owner": 0, "posit": [0, 10], "dict": 0, "depend": [0, 3, 4, 6, 7, 9, 10], "importlib": 0, "find_spec": 0, "instal": [0, 4, 5, 6, 9, 10, 11], "log_crit": 0, "python3": [0, 2, 3], "pip": [0, 2, 3, 10], "pyseri": [0, 2], "panic": [0, 10], "super": 0, "sure": [0, 2, 3, 10], "through": [0, 2, 3, 5, 6, 7, 9, 10, 11], "step": [0, 2, 3], "compat": [0, 2, 3, 5, 7, 9], "platform": [0, 3, 4, 9, 10], "ifconf": 0, "get_config_obj": 0, "suppli": [0, 5, 6, 7, 9, 11], "miss": [0, 2], "9600": 0, "abort": 0, "f": [0, 2, 10], "No": [0, 2, 5, 9, 10, 11], "hardwar": [0, 2, 4, 5, 6, 7, 9, 10, 11], "mtu": [0, 7, 9, 11], "maximum": [0, 5, 7, 9, 10], "underli": [0, 6, 11], "capabl": [0, 9], "without": [0, 2, 3, 5, 6, 9, 10, 11], "segment": [0, 5, 6, 7, 9, 11], "hw_mtu": 0, "564": 0, "onlin": [0, 10], "bitrat": [0, 5, 7], "intern": [0, 5, 7, 9], "accord": [0, 2, 9], "parity_non": 0, "lower": [0, 2, 5, 10], "even": [0, 2, 5, 6, 7, 9, 10, 11], "parity_even": 0, "odd": 0, "parity_odd": 0, "open_port": 0, "succeed": [0, 7], "post": 0, "is_open": 0, "configure_devic": 0, "ioerror": 0, "log_verbos": 0, "baudrat": 0, "bytes": 0, "xonxoff": 0, "rtsct": 0, "inter_byte_timeout": 0, "write_timeout": 0, "dsrdtr": 0, "thing": [0, 2], "amount": [0, 5, 6, 7, 9, 11], "devic": [0, 2, 4, 5, 6, 7, 9, 10], "read_loop": 0, "whenev": [0, 7, 9], "process_incom": 0, "rxb": 0, "process": [0, 2, 3, 5, 7, 9], "inbound": [0, 5, 7], "process_outgo": 0, "Then": [0, 2], "written": [0, 9], "txb": 0, "wrote": [0, 5], "contin": 0, "meth": 0, "turn": [0, 10], "in_fram": 0, "data_buff": 0, "last_read_m": 0, "in_wait": 0, "ord": 0, "time_since_last": 0, "08": [0, 10], "occur": [0, 5, 10, 11], "experienc": 0, "unrecover": [0, 10], "offlin": [0, 2], "panic_on_interface_error": [0, 10], "attempt": [0, 2, 3, 7], "reconnect": 0, "period": [0, 5, 7, 9], "reconnect_port": 0, "signal": [0, 7, 9], "ingress": [0, 5], "limit": [0, 3, 4, 6, 9], "should_ingress_limit": 0, "extern": [0, 2, 5, 7, 11], "__str__": 0, "interface_class": 0, "best": [2, 9, 11], "guid": [2, 3, 9], "outlin": [2, 3, 9], "sensibl": [2, 3, 5], "scenario": [2, 4, 9], "relat": 2, "easiest": [2, 3, 5, 9], "via": [2, 3, 5, 8, 9, 10, 11], "manag": [2, 4, 6, 7, 9, 11], "sudo": [2, 10], "apt": 2, "pamac": 2, "dowload": 2, "releas": [2, 5, 7, 9], "wheel": 2, "channel": [2, 4, 5, 6, 7, 8, 9, 11], "py3": 2, "whl": 2, "For": [2, 5, 6, 7, 9, 10, 11], "instruct": 2, "section": [2, 3, 5, 6, 9, 10], "might": [2, 5, 6, 9, 10], "chapter": [2, 3, 5, 6, 7, 9, 10, 11], "mai": [2, 5, 7, 9, 10], "usual": 2, "essenti": [2, 5, 9], "deriv": [2, 7, 9, 11], "arch": 2, "manjaro": 2, "devel": 2, "fedora": 2, "dnf": 2, "groupinstal": 2, "tool": [2, 3, 9, 10, 11], "librari": 2, "compil": 2, "pre": [2, 7, 9], "built": [2, 5, 9, 10, 11], "few": [2, 3, 5, 6, 9, 10, 11], "extrem": [2, 9, 10, 11], "low": [2, 3, 5, 6, 9, 11], "bandwidth": [2, 5, 6, 7, 9, 10, 11], "These": [2, 5, 7, 9, 10], "feel": 2, "work": [2, 3, 5, 6, 9, 10, 11], "design": [2, 3, 6, 9, 11], "well": [2, 3, 5, 6, 7, 9, 10, 11], "lora": [2, 3, 4, 9, 11], "link": [2, 3, 4, 5, 6, 7, 10, 11], "wifi": [2, 4, 5, 6, 9, 10, 11], "wire": [2, 3, 4, 5, 11], "ethernet": [2, 4, 5, 6, 9, 11], "combin": [2, 4, 6, 9], "As": [2, 3, 5, 6, 7, 9, 11], "easi": [2, 3, 5, 9, 10, 11], "experi": [2, 9], "transceiv": [2, 3, 5, 9, 11], "infrastructur": [2, 3, 5, 6, 9, 10], "launch": [2, 10], "enough": [2, 3, 9], "rnsh": [2, 10], "session": [2, 9], "pipe": [2, 4, 11], "ssh": 2, "veri": [2, 3, 5, 6, 7, 8, 9, 10, 11], "facilit": 2, "suit": [2, 3, 9, 10], "featur": [2, 7, 8, 9, 11], "delai": [2, 5, 9, 10], "browser": 2, "page": [2, 4, 9], "dynam": [2, 10], "render": 2, "authent": [2, 5, 6, 7, 9, 10, 11], "face": [2, 5], "protocol": [2, 3, 4, 5, 11], "lxmf": [2, 10], "anoth": [2, 7, 9, 10], "project": 2, "nomadnet": 2, "reboot": 2, "again": [2, 5, 9, 10], "environ": [2, 6, 9], "would": [2, 5, 6, 7, 9], "rather": [2, 7], "graphic": 2, "linux": [2, 3, 9], "peopl": [2, 9], "i2p": [2, 4, 11], "qr": 2, "paper": 2, "anyth": [2, 3, 5, 9, 10, 11], "interoper": [2, 3, 6, 9, 11], "friendli": 2, "voic": 2, "interest": [2, 9], "cours": [2, 5, 9], "come": [2, 9], "easier": [2, 5, 6, 10, 11], "rnsd": [2, 4], "background": [2, 5], "foreground": 2, "servic": [2, 4, 6], "rnstatu": [2, 4, 5, 9], "rnpath": [2, 4, 5], "rnprobe": [2, 4], "view": [2, 5, 9, 10], "locat": [2, 5, 6, 9, 10], "exampl": [2, 3, 4, 5, 7, 9, 10, 11], "exampleconfig": [2, 10], "broadcast": [2, 4, 5, 7, 9], "domain": [2, 5], "further": [2, 4, 5], "tcp": [2, 3, 4, 6, 9, 11], "There": [2, 6, 9, 11], "subnet": [2, 6], "rout": [2, 3, 5, 6, 7, 9, 10, 11], "tabl": [2, 5, 6, 9, 10], "discov": [2, 5], "topographi": [2, 6, 9], "situat": [2, 3, 5, 6, 9], "where": [2, 3, 4, 5, 6, 7, 9, 10], "often": [2, 5, 6, 9, 10], "suffici": [2, 5, 9, 10], "act": [2, 7, 9, 10], "wider": [2, 5, 9, 10], "autointerfac": [2, 3, 5, 10], "possibli": 2, "offer": [2, 4, 5, 7, 9], "carefulli": 2, "tcpserverinterfac": [2, 5], "access": [2, 4, 5, 6, 7, 10], "ip": [2, 3, 5, 9, 10, 11], "faster": [2, 5, 9], "latenc": [2, 9, 11], "energi": 2, "i2pinterfac": [2, 5], "howev": [2, 6, 9], "leak": 2, "reveal": [2, 7, 9, 11], "who": [2, 5, 9], "inspect": [2, 5, 6, 9, 10], "someon": [2, 5], "determin": [2, 7, 9], "adversari": 2, "record": [2, 9], "metadata": [2, 9], "transmiss": [2, 5, 7, 9], "though": [2, 5, 9], "publicli": [2, 5], "most": [2, 3, 5, 6, 7, 9, 10], "anymor": 2, "invis": [2, 5], "parallel": 2, "alwai": [2, 5, 7, 9, 10], "node": [2, 4, 5, 6, 10, 11], "i2pd": [2, 5], "mix": [2, 5, 6, 10], "hide": 2, "relai": 2, "extra": [2, 5, 6, 10], "comput": [2, 9, 11], "power": [2, 3, 5, 9, 10, 11], "attack": 2, "form": [2, 5, 6, 7, 9], "deep": 2, "much": [2, 5, 6, 9, 10, 11], "difficult": [2, 3], "non": [2, 7, 9], "behind": [2, 9], "firewal": [2, 5], "nat": 2, "preserv": [2, 7], "anonym": [2, 6, 7, 9, 11], "care": [2, 7, 11], "experiment": [2, 11], "made": [2, 7, 9], "amsterdam": 2, "hub": [2, 5], "tcpclientinterfac": [2, 3, 5], "ye": [2, 5, 9, 10], "target_host": [2, 5], "target_port": [2, 5], "4965": [2, 10], "betweenthebord": 2, "4242": [2, 5], "g3br23bvx3lq5uddcsjii74xgmn6y5q325ovrkq2zw2wbzbqgbuq": 2, "b32": [2, 5], "point": [2, 3, 5, 6, 9, 10], "absolut": [2, 8, 11], "usag": [2, 4, 5, 7, 8, 10], "occasion": 2, "test": [2, 9, 10], "failur": [2, 5, 7], "guarante": [2, 9], "weird": 2, "goe": 2, "sai": 2, "hardcod": 2, "ship": 2, "practic": [2, 9, 11], "solut": [2, 9, 10], "leav": [2, 6, 9], "wide": [2, 3, 5, 9, 10, 11], "easili": [2, 5, 6, 9, 10, 11], "cheapli": 2, "rnode": [2, 4, 9, 10, 11], "purpos": [2, 3, 5, 7, 9, 10], "digit": [2, 3, 9, 11], "integr": [2, 6, 9], "yourself": [2, 9, 11], "firmwar": [2, 3, 9, 10], "board": [2, 4, 5, 9, 11], "auto": [2, 3, 4, 7, 9], "script": [2, 3], "prefer": [2, 9], "purchas": [2, 6, 9, 11], "supplier": 2, "addit": [2, 3, 5, 7, 9, 10, 11], "privat": [2, 5, 7, 8, 9, 10, 11], "secur": [2, 9, 11], "uncensor": 2, "mesh": [2, 5, 6, 11], "think": 2, "welcom": 2, "head": 2, "discuss": [2, 3, 9], "propos": 2, "flexibl": [2, 3, 5, 11], "broad": [2, 3], "cover": [2, 3, 9, 11], "conceiv": [2, 3], "therefor": [2, 9, 11], "possibl": [2, 3, 5, 6, 7, 9, 10, 11], "subject": [2, 11], "code": [2, 3, 4, 5, 10], "abov": [2, 3, 5, 9, 10], "next": [2, 6, 7, 9], "api": [2, 4, 9, 11], "document": [2, 7, 9], "associ": [2, 7, 9], "recip": 2, "cryptographi": [2, 9, 11], "clone": 2, "repositori": [2, 8, 9], "git": 2, "move": [2, 5, 9, 10], "symlink": [2, 10], "cd": 2, "ln": [2, 10], "echo": [2, 4], "ve": 2, "immedi": [2, 5, 10], "necessari": [2, 3, 5, 6, 7, 9], "nano": 2, "repeat": 2, "h": [2, 10], "ping": [2, 10], "below": [2, 3, 5, 10], "174a64852a75682259ad8b921b8bf416": 2, "filetransf": [2, 4, 7], "understand": [2, 4, 7, 10], "submit": 2, "pull": 2, "request": [2, 4, 5, 7, 9, 10, 11], "good": [2, 3, 6, 9, 10], "idea": [2, 9, 10], "introduc": [2, 9], "disucss": 2, "forum": 2, "maintain": [2, 9], "procedur": [2, 7, 9], "quirk": 2, "worth": 2, "being": [2, 5, 7, 9], "awar": [2, 5, 9], "termux": 2, "droid": 2, "emul": 2, "abil": [2, 3, 11], "pkg": 2, "upgrad": [2, 7, 9], "reason": [2, 5, 9], "openssl": [2, 9], "libffi": 2, "rust": 2, "export": 2, "cargo_build_target": 2, "aarch64": 2, "sever": [2, 6, 7, 10], "succe": 2, "softwar": [2, 3, 5, 9, 11], "apk": 2, "tutori": 2, "architectur": 2, "precompil": 2, "april": 2, "2023": [2, 10], "onto": [2, 9], "unfortun": 2, "pipx": 2, "isol": [2, 5, 10], "neg": 2, "affect": [2, 5], "ensurepath": 2, "restor": [2, 5], "behaviour": [2, 5, 10], "edit": [2, 10], "conf": 2, "break": [2, 7, 9, 11], "shot": 2, "somewhat": 2, "mislead": 2, "choic": 2, "word": 2, "rare": [2, 5], "lead": [2, 9], "conflict": 2, "pose": [2, 9], "problem": [2, 9], "especi": [2, 3, 5], "vari": [2, 5, 9, 10], "doubt": 2, "pip3": 2, "addition": [2, 3, 5, 9], "init": 2, "zshrc": 2, "9": [2, 7, 10], "bin": [2, 10], "adjust": [2, 7], "storag": 2, "memori": [2, 9], "opkg": 2, "At": [2, 6, 9], "underwai": 2, "uci": 2, "feed": [2, 7], "debug": [2, 10], "vvv": 2, "21": 2, "02": 2, "alter": [2, 7, 9], "free": [2, 6, 8, 11], "overlai": 2, "ram": [2, 5], "rule": [2, 4, 5], "proper": 2, "laucnh": 2, "boot": [2, 10], "ipv6": [2, 5, 10], "intend": [2, 6, 9], "show": [2, 10], "fe80": 2, "question": [2, 3, 5], "64": [2, 9, 10], "32": [2, 7, 9], "rasperri": 2, "os": [2, 5], "oper": [2, 3, 5, 6, 7, 9, 10, 11], "either": [2, 3, 6, 7, 9, 10], "powershel": 2, "12": [2, 5, 10], "7": [2, 5, 9, 10], "directli": [2, 3, 5, 7, 9, 10, 11], "rnspure": 2, "pyca": [2, 9], "cryptograph": [2, 4, 6, 10, 11], "primit": [2, 4], "obscur": 2, "matter": [2, 5], "perfectli": 2, "One": [3, 7], "truli": [3, 9], "valuabl": [3, 8], "almost": [3, 5, 9, 10], "kind": [3, 5, 6, 9], "interfac": [3, 4, 6, 7, 10], "wireless": [3, 6], "decad": 3, "modern": [3, 9], "millimet": 3, "wave": 3, "backhaul": [3, 6], "chanc": 3, "box": 3, "glue": 3, "littl": [3, 9], "effort": 3, "pipeinterfac": [3, 5], "kiss": [3, 4, 10, 11], "simplyequip": 3, "abund": 3, "sometim": 3, "scratch": 3, "real": [3, 6, 11], "world": [3, 5, 6, 11], "minim": [3, 4, 9], "cost": [3, 9, 11], "fundament": [3, 9], "categori": 3, "briefli": [3, 9], "describ": [3, 5, 7, 9], "emploi": [3, 9], "pattern": [3, 9], "high": [3, 5, 9, 11], "capac": [3, 5, 7, 9], "gain": [3, 7, 9], "antenna": 3, "backbon": 3, "area": [3, 5, 6, 9, 11], "reliabl": [3, 5, 6, 7, 9, 11], "commonli": 3, "expens": 3, "hard": 3, "hungri": 3, "allevi": 3, "plaform": 3, "its": [3, 5, 7, 9], "compon": [3, 8, 9], "frequenc": [3, 5, 9, 10], "band": [3, 9], "scheme": 3, "ism": [3, 9], "avoid": [3, 9, 10], "confus": [3, 9], "layer": [3, 5, 6, 7, 9, 11], "noth": [3, 11], "lorawan": [3, 9], "standard": [3, 9], "central": [3, 6, 9], "iot": 3, "overhead": [3, 5, 9], "level": [3, 5, 9, 10], "replic": [3, 9], "togeth": [3, 9, 10], "exact": [3, 5, 9], "explain": [3, 7], "approach": [3, 9, 10], "develop": [3, 4, 7, 8, 9, 11], "boil": 3, "obtain": [3, 7, 9], "autom": [3, 8, 9], "provis": [3, 10], "rnodeinterfac": [3, 5, 10], "ic": 3, "semtech": 3, "sx1262": 3, "sx1268": 3, "esp32": 3, "manufactur": [3, 5], "sx1276": 3, "sx1278": 3, "nrf52": 3, "rak": 3, "avr": 3, "atmega1284p": 3, "rnodeconf": [3, 4], "autoinstal": [3, 10], "seri": 3, "configuraion": 3, "air": 3, "short": [3, 5, 9, 10], "bridg": [3, 4], "behav": 3, "mean": [3, 5, 6, 7, 9, 10], "dhcp": [3, 5, 10], "dn": 3, "least": [3, 5, 9, 10, 11], "transpar": [3, 5, 9, 10], "distanc": [3, 9], "ubiqu": 3, "airmax": 3, "ltu": 3, "mikrotik": 3, "exhaust": [3, 9], "rel": [3, 9], "cheap": [3, 9], "co": [3, 5, 11], "concurr": [3, 9, 10], "switch": [3, 5, 9, 10], "fiber": 3, "optic": [3, 11], "virtual": [3, 5, 6, 9, 10, 11], "adapt": [3, 6], "tun": [3, 5], "tap": 3, "serialinterfac": [3, 5], "usb": [3, 6, 9, 10], "freedv": 3, "tnc": [3, 5, 7, 10, 11], "dire": 3, "wolf": 3, "aim": [4, 9], "particip": [4, 6, 9], "itself": [4, 9], "pdf": 4, "epub": 4, "caveat": 4, "emptor": 4, "fast": [4, 5, 7, 9], "standalon": 4, "resolv": [4, 5, 10], "issu": [4, 6, 8], "base": [4, 5, 6, 7, 9, 10, 11], "shell": [4, 10], "nomad": 4, "sideband": 4, "meshchat": 4, "With": [4, 5, 6, 9, 10], "internet": [4, 5, 9, 11], "testnet": [4, 10], "radio": [4, 5, 6, 7, 9, 10, 11], "custom": [4, 7, 9, 11], "android": [4, 10], "arm64": 4, "debian": [4, 9, 10], "bookworm": 4, "maco": 4, "openwrt": 4, "raspberri": [4, 6, 9, 10, 11], "risc": 4, "v": [4, 10], "ubuntu": [4, 10], "lunar": 4, "window": [4, 5], "pure": [4, 9], "rnid": 4, "rncp": 4, "rnx": 4, "improv": [4, 5, 8], "fix": [4, 9], "motiv": 4, "goal": [4, 5], "introduct": 4, "announc": [4, 7, 10], "mechan": [4, 5, 11], "reach": [4, 5, 6], "prioritis": [4, 5, 6, 7], "propag": [4, 5, 7], "modem": [4, 5, 6, 7, 9, 11], "udp": [4, 6, 9, 10, 11], "multi": [4, 9, 10, 11], "ax": [4, 11], "concept": [4, 9, 10], "overview": [4, 5, 9], "interconnect": [4, 5, 9], "site": [4, 5], "growth": 4, "converg": [4, 9], "identif": [4, 5, 11], "respons": [4, 5, 7, 9, 11], "buffer": [4, 5, 7, 11], "donat": 4, "contribut": 4, "requestreceipt": [4, 7], "rawchannelread": [4, 7], "rawchannelwrit": [4, 7], "search": 4, "distinct": [5, 9], "topologi": [5, 9, 11], "endless": 5, "give": [5, 9, 10], "respect": [5, 11], "extens": [5, 11], "straightforward": 5, "discover": 5, "autoconfigur": [5, 11], "router": [5, 10], "sort": [5, 9, 10], "communica": 5, "tion": 5, "usabl": [5, 9], "interface_en": [5, 10], "spe": 5, "cific": 5, "lan": 5, "group": [5, 7, 9], "id": [5, 7, 9, 10], "group_id": 5, "multicast": 5, "temporari": 5, "perman": [5, 10], "multicast_address_typ": 5, "kernel": [5, 10, 11], "wlan0": 5, "eth1": 5, "Or": [5, 10, 11], "ignor": [5, 7, 9], "ones": [5, 10], "ignored_devic": 5, "tun0": 5, "eth0": 5, "autodiscov": 5, "discoveri": [5, 7, 9, 10], "scope": 5, "admin": 5, "organis": [5, 6, 8], "custom_network_nam": 5, "discovery_scop": 5, "discovery_port": 5, "48555": 5, "data_port": 5, "49555": 5, "frequent": 5, "block": 5, "portabl": [5, 9], "persist": [5, 10], "achiev": [5, 7, 9], "geti2p": 5, "net": 5, "websit": 5, "base32": 5, "comma": 5, "5urvjicpzi7q3ybztsef4i5ow2aq4soktfj7zedz53s47r54jnqq": 5, "output": [5, 10], "event": 5, "simplest": [5, 9], "tunnel": [5, 9, 11], "interchang": 5, "degre": 5, "retain": [5, 7], "eas": [5, 9], "simpler": [5, 11], "ipv4": 5, "listen_ip": 5, "listen_port": 5, "bind": 5, "10": [5, 9, 10], "88": 5, "prefer_ipv6": 5, "yggdrasil": 5, "4343": 5, "i2p_tunnel": 5, "127": 5, "5001": 5, "dedic": [5, 9], "natur": 5, "toler": 5, "intermitt": 5, "gracefulli": 5, "reappear": 5, "hostnam": 5, "201": 5, "5d78": 5, "af73": 5, "5caf": 5, "a4d": 5, "a79f": 5, "3278": 5, "71e5": 5, "expos": [5, 7], "soundmodem": 5, "kiss_fram": 5, "8001": 5, "caution": 5, "conjunct": 5, "never": [5, 7, 9], "disabl": [5, 9, 10], "recoveri": 5, "greatli": 5, "unreli": 5, "implic": 5, "better": 5, "udpinterfac": 5, "forward_ip": 5, "255": [5, 10], "forward_port": 5, "assum": [5, 9], "55": 5, "72": 5, "24": 5, "equival": 5, "forward": [5, 7, 9, 11], "15": 5, "16": [5, 9, 10], "spectrum": [5, 9], "legal": 5, "legisl": 5, "around": [5, 9], "regul": 5, "decis": [5, 9], "ble": 5, "pair": [5, 7, 9, 10], "mac": [5, 9], "3b87": 5, "f4": 5, "73": [5, 10], "29": 5, "4e": 5, "89": 5, "867": 5, "mhz": [5, 9], "867200000": 5, "125": 5, "khz": 5, "125000": 5, "tx": [5, 10], "mw": 5, "txpower": 5, "spread": [5, 10], "factor": [5, 7, 10], "fastest": [5, 9], "longest": 5, "spreadingfactor": 5, "throough": 5, "codingr": 5, "interv": [5, 7, 10], "id_callsign": 5, "mycal": 5, "id_interv": 5, "600": 5, "homebrew": 5, "flow_control": 5, "airtim": 5, "term": [5, 6, 9], "appli": [5, 7, 9], "approxim": 5, "enforc": [5, 7], "roll": 5, "airtime_limit_long": 5, "airtime_limit_short": 5, "33": 5, "individu": [5, 7, 9, 11], "rnodemultiinterfac": 5, "ttyacm0": 5, "subinterfac": 5, "datar": 5, "themselv": 5, "4ghz": 5, "2400000000": 5, "1625": 5, "1625000": 5, "person": [5, 9], "vport": 5, "865": 5, "6": [5, 7, 10], "865600000": 5, "laser": 5, "baud": [5, 10], "stdin": [5, 10], "netcat": 5, "l": [5, 10], "5757": 5, "respawn": 5, "respawn_delai": 5, "continu": [5, 7, 8, 11], "scan": 5, "eof": 5, "respawn_interv": 5, "varieti": [5, 9, 10, 11], "openmodem": [5, 11], "beacon": 5, "station": 5, "kissinterfac": [5, 10], "ttyusb1": 5, "preambl": [5, 10], "150": [5, 10], "tail": 5, "txtail": [5, 10], "cdma": 5, "200": [5, 10], "slottim": [5, 10], "20": [5, 9, 10], "elaps": 5, "comment": [5, 10], "amateur": [5, 11], "encapsul": [5, 11], "callsign": 5, "ssid": 5, "realli": [5, 7], "doesn": 5, "incur": 5, "ax25kissinterfac": 5, "no1cll": 5, "ttyusb2": 5, "150m": 5, "increas": [5, 7, 10], "squelch": 5, "rx": [5, 10], "turnaround": 5, "kept": [5, 6, 7, 9], "wast": 5, "bring": 5, "brought": [5, 10], "access_point": 5, "shorthand": [5, 10], "ap": 5, "shorter": 5, "expiri": [5, 7], "mostli": [5, 6, 9], "quiet": [5, 10], "momentarili": 5, "disappear": [5, 10], "network_nam": 5, "passphras": [5, 9], "alon": 5, "ifac_s": 5, "customis": 5, "carri": [5, 7, 9, 10, 11], "512": [5, 7, 9, 11], "announce_cap": [5, 7], "alloc": [5, 7, 9, 10], "given": [5, 6, 7, 9, 10], "upkeep": 5, "cap": 5, "queue": [5, 9], "nearbi": 5, "overwhelm": [5, 7], "rapidli": 5, "spam": 5, "effect": 5, "excess": 5, "benefici": [5, 10], "balanc": 5, "necesarri": 5, "report": [5, 7, 8, 10], "guess": 5, "per": [5, 7, 9, 10, 11], "strictli": [5, 9], "complex": [5, 9], "left": [5, 7, 9, 10], "gw": 5, "behalf": 5, "resid": 5, "requestor": 5, "chain": 5, "along": [5, 6, 7, 9, 10], "boundari": 5, "remain": [5, 7, 9], "roam": 5, "mobil": [5, 9], "seen": [5, 9], "perspect": [5, 7, 9, 11], "vehicl": 5, "equip": [5, 6, 9], "side": [5, 11], "expir": 5, "significantli": [5, 7], "impact": [5, 7, 9], "announce_rate_target": 5, "announce_rate_grac": 5, "announce_rate_penalti": 5, "basi": [5, 7, 9, 10, 11], "moder": 5, "violat": 5, "penalti": 5, "7200": 5, "annouce_cap": 5, "mention": [5, 9], "strategi": [5, 7], "slower": [5, 7, 9], "hop": [5, 6, 7, 9, 10, 11], "right": [5, 6], "tend": 5, "conserv": 5, "span": [5, 9], "seamlessli": 5, "influx": 5, "newli": [5, 6, 7, 9], "previous": [5, 6, 7, 9], "hold": [5, 7, 9], "interrupt": 5, "burst": 5, "subsid": 5, "held": [5, 10], "decid": [5, 6, 7, 9], "bogu": 5, "retransmit": [5, 9], "disrupt": 5, "neccessari": 5, "modifi": [5, 9, 10], "ingress_control": 5, "ic_new_tim": 5, "spawn": 5, "ic_burst_freq_new": 5, "ic_burst_freq": 5, "temporarili": 5, "ic_max_held_announc": 5, "drop": [5, 7, 9, 10], "256": [5, 7, 9, 10], "ic_burst_hold": 5, "threshold": 5, "ic_burst_penalti": 5, "ic_held_release_interv": 5, "30": [5, 7, 10], "knowledg": [6, 9], "tradit": [6, 9], "worri": 6, "coordin": [6, 7, 9, 11], "evolv": 6, "futur": [6, 7, 9], "mind": [6, 11], "autonom": [6, 9], "terminologi": [6, 9], "rest": [6, 11], "billion": [6, 9], "larger": [6, 9, 10], "higher": [6, 11], "discrimin": 6, "ephemer": [6, 7, 9, 11], "ellipt": [6, 7, 9, 11], "curv": [6, 7, 9, 11], "diffi": [6, 9], "hellman": [6, 9], "exchang": [6, 7, 9, 11], "curve25519": [6, 7, 9, 11], "throttl": 6, "thu": [6, 7, 9], "agnost": [6, 9], "equal": [6, 7, 9], "keystor": 6, "degrad": 6, "stationari": [6, 10], "candid": 6, "optim": 6, "trustless": [6, 9, 11], "unorganis": 6, "manner": 6, "far": [6, 9], "unexplor": 6, "dissolv": 6, "organ": 6, "restrict": [6, 10], "legaci": 6, "unifi": 6, "carrier": [6, 11], "involv": 6, "hardlin": 6, "plan": [6, 9], "member": 6, "mainli": 6, "three": [6, 9], "hill": 6, "top": [6, 9], "chosen": [6, 9], "sight": 6, "becaus": [6, 9], "four": 6, "cabl": 6, "grow": 6, "core": [6, 9, 10, 11], "those": [6, 9], "d": [6, 10], "island": 6, "investig": 6, "dori": 6, "willing": 6, "she": 6, "her": 6, "home": [6, 10], "everyon": [6, 9], "vice": [6, 11], "versa": [6, 11], "vhf": [6, 9, 11], "outli": 6, "geograph": 6, "coverag": 6, "dai": [6, 7], "find": [6, 9], "poorli": 6, "outlier": 6, "signatur": [7, 9, 10, 11], "configdir": 7, "logdest": 7, "verbos": [7, 10], "require_shared_inst": 7, "exactli": [7, 9], "independ": [7, 9, 11], "inter": 7, "soon": 7, "kill": [7, 9], "forcibli": [7, 10], "advantag": 7, "demand": 7, "500": [7, 9, 11], "adher": 7, "prerequisit": 7, "link_mtu_discoveri": 7, "throughput": [7, 9, 11], "intermediari": [7, 9], "percentag": 7, "schedul": 7, "queu": [7, 10], "fewer": 7, "distant": 7, "smaller": 7, "eventu": 7, "minimum_bitr": 7, "static": 7, "get_inst": 7, "should_use_implicit_proof": 7, "explicit": 7, "implicit": [7, 9], "transport_en": 7, "highest": 7, "remote_management_en": 7, "create_kei": 7, "decrypt": [7, 9, 10], "verif": [7, 9, 10], "sign": [7, 9, 10], "dh": 7, "keysiz": 7, "x": [7, 9, 10], "25519": 7, "concaten": 7, "ratchets": 7, "ratchet": [7, 9], "ratchet_expiri": 7, "2592000": 7, "recent": [7, 9], "rememb": [7, 9], "discard": [7, 9], "newer": [7, 9], "meantim": 7, "128": [7, 9, 11], "constant": 7, "truncat": [7, 9, 10], "recall_app_data": 7, "heard": [7, 9], "full_hash": 7, "sha": [7, 9], "truncated_hash": 7, "current_ratchet_id": 7, "from_byt": 7, "prv_byte": 7, "save": [7, 9], "hazard": 7, "from_fil": 7, "to_fil": 7, "Be": [7, 10], "get_private_kei": 7, "get_public_kei": 7, "load_private_kei": 7, "load_public_kei": 7, "pub_byt": 7, "ciphertext": 7, "token": [7, 9, 11], "keyerror": 7, "ciphertext_token": 7, "enforce_ratchet": 7, "ratchet_id_receiv": 7, "presenc": 7, "ingo": 7, "zero": [7, 11], "ratchet_count": 7, "ratchet_interv": 7, "1800": 7, "rotat": [7, 9], "expand_nam": 7, "app_and_aspects_from_nam": 7, "full_nam": [7, 10], "tupl": 7, "hash_from_name_and_ident": 7, "adress": [7, 9], "path_respons": 7, "attached_interfac": 7, "tag": 7, "accepts_link": 7, "accept": [7, 8, 9, 10], "set_proof_requested_callback": 7, "proof_strategi": 7, "prove_non": 7, "prove_app": 7, "proof_requested_callback": 7, "allow_non": 7, "allowed_list": 7, "whatev": [7, 9], "funcion": 7, "allow_list": 7, "deregister_request_handl": 7, "deregist": 7, "enable_ratchet": 7, "ratchets_path": 7, "secreci": [7, 9, 11], "outsid": [7, 11], "set_retained_ratchet": 7, "retained_ratchet": 7, "set_ratchet_interv": 7, "symmetr": [7, 9], "typeerror": 7, "incompat": [7, 9], "set_default_app_data": 7, "clear_default_app_data": 7, "ae": [7, 9, 11], "instanti": 7, "encrypted_mdu": 7, "383": 7, "plain_mdu": 7, "464": 7, "resend": 7, "get_rssi": 7, "strength": [7, 11], "get_snr": 7, "nois": 7, "ratio": 7, "get_q": 7, "qualiti": 7, "get_statu": 7, "cull": 7, "successful": 7, "proven": [7, 9], "established_callback": 7, "closed_callback": 7, "establishment_timeout_per_hop": 7, "keepalive_timeout_factor": 7, "4": [7, 9, 10], "calcul": [7, 9, 10], "stale_grac": 7, "grace": 7, "keepal": [7, 9], "360": 7, "aliv": [7, 9], "stale_tim": 7, "720": 7, "stale": 7, "torn": 7, "progress_callback": 7, "info": [7, 9, 10], "track_phy_stat": 7, "track": 7, "retriev": 7, "stat": [7, 10], "get_establishment_r": 7, "ocur": 7, "get_ag": 7, "no_inbound_for": 7, "no_outbound_for": 7, "outbound": [7, 9], "no_data_for": 7, "travers": [7, 9], "exclud": [7, 9], "inactive_for": 7, "purg": 7, "set_resource_callback": 7, "get_transfer_s": 7, "get_data_s": 7, "get_part": 7, "is_compress": 7, "begun": 7, "resource_strategi": 7, "accept_non": 7, "accept_app": 7, "resource_callback": 7, "unsupport": 7, "get_request_id": 7, "get_respons": 7, "get_response_tim": 7, "auto_compress": 7, "arbitrari": [7, 9, 10, 11], "checksum": [7, 11], "Will": 7, "cancel": 7, "total": [7, 9, 11], "get_seg": 7, "divid": 7, "get_hash": 7, "bi": [7, 9], "neither": [7, 9], "constrain": 7, "message_class": 7, "recept": 7, "messagecallbacktyp": 7, "bool": 7, "stop": [7, 11], "remove_message_handl": 7, "remov": [7, 10], "envelop": 7, "thrown": 7, "consum": 7, "accommod": [7, 9], "abstract": [7, 9], "greater": [7, 9, 11], "popul": 7, "bufferedread": 7, "bufferedwrit": 7, "bufferedrwpair": 7, "create_read": 7, "ready_callback": 7, "create_writ": 7, "receive_stream_id": 7, "send_stream_id": 7, "rawiobas": 7, "add_ready_callback": 7, "cb": [7, 9], "remove_ready_callback": 7, "pathfinder_m": 7, "attribut": 7, "announce_packet_hash": 7, "receive_path_respons": 7, "live": 7, "deregister_announce_handl": 7, "hops_to": 7, "next_hop": 7, "next_hop_interfac": 7, "on_interfac": 7, "recurs": 7, "gratefulli": 8, "monero": 8, "84fpy1qbxhcgdseepynmhthcrgmx4nffbytz2gkytoqhvvhjp8eaw1z1eedrnkd19b3b8nilcgvxzkv17ummmeescrpya5w": 8, "ethereum": 8, "0x81f7b979fea6134ba9fd5c701b3501a2e61e897a": 8, "bitcoin": 8, "3cpmacgm34qyvr6xwlvejmi2ane3pzquuq": 8, "ko": 8, "fi": 8, "roadmap": 8, "realiti": 8, "quickli": [8, 9, 11], "sponsor": [8, 11], "dysfunct": 8, "analyt": 8, "telemetri": 8, "collect": 8, "under": [8, 10, 11], "circumst": [8, 9], "reli": [8, 9], "fashion": 8, "u": [8, 9, 10], "suggest": 8, "overal": 9, "principl": [9, 11], "author": 9, "That": 9, "said": 9, "pretti": 9, "sentiment": 9, "philosophi": 9, "seek": 9, "solv": 9, "primari": 9, "lack": 9, "my": 9, "belief": 9, "highli": 9, "machin": 9, "censorship": [9, 11], "barrier": 9, "todai": 9, "centralis": 9, "trust": [9, 10], "approv": 9, "gatekeep": 9, "inevit": 9, "govern": 9, "censor": 9, "persecut": 9, "unwant": 9, "actor": 9, "imposs": 9, "freeli": 9, "deploi": 9, "enhanc": 9, "agenc": 9, "freedom": 9, "permissionless": 9, "pick": 9, "ghz": 9, "off": [9, 10, 11], "shelf": [9, 11], "ultim": 9, "vast": 9, "myriad": 9, "thousand": 9, "surveil": 9, "disassoci": 9, "oversight": 9, "beings": 9, "useabl": 9, "critic": [9, 10], "agnostic": 9, "shall": 9, "handheld": 9, "strong": 9, "oneself": 9, "unlicens": 9, "condit": [9, 11], "pmr": 9, "programm": 9, "orient": 9, "multipoint": 9, "recipi": 9, "singular": 9, "_represented_": 9, "characterist": 9, "13425ec15b621c1d928589718000d814": 9, "trade": 9, "simultan": 9, "unlik": 9, "nears": 9, "congest": 9, "galact": 9, "scale": [9, 11], "obvious": 9, "ridicul": 9, "asymmetr": [9, 10, 11], "special": [9, 10], "ecdh": [9, 11], "creator": 9, "correspond": 9, "possess": 9, "although": [9, 11], "dot": [9, 10], "notat": [9, 10], "repres": 9, "plenti": 9, "environment": 9, "monitor": 9, "measur": 9, "environmentlogg": 9, "remotesensor": 9, "temperatur": 9, "4faf1b2e0a077e6a9d92fa051f256038": 9, "advis": 9, "expand": [9, 11], "recap": 9, "indirectli": 9, "ledger": 9, "messeng": 9, "nicknam": 9, "ed25519": [9, 11], "reconstruct": 9, "notic": [9, 10], "piec": 9, "intention": 9, "infer": 9, "throughout": 9, "topic": 9, "necessarili": 9, "entiti": 9, "robot": 9, "sensor": 9, "someth": 9, "agent": 9, "manipul": [9, 11], "multilater": 9, "creation": [9, 11], "great": 9, "suffic": 9, "cluster": 9, "hear": 9, "But": 9, "lot": 9, "surviv": 9, "overcom": 9, "challeng": 9, "closer": 9, "distinguish": 9, "contend": 9, "enable_transport": [9, 10], "randomis": 9, "prioriti": 9, "invers": 9, "proport": 9, "count": 9, "insert": 9, "closest": 9, "newest": 9, "contact": 9, "shortest": 9, "predict": 9, "constantli": 9, "earlier": 9, "opt": 9, "against": 9, "bidirect": 9, "ten": 9, "advanc": 9, "confirm": [9, 11], "insid": 9, "moment": [9, 11], "methodologi": [9, 10], "answer": [9, 10], "malici": 9, "pretend": 9, "recreat": 9, "thereaft": 9, "297": [9, 11], "neglig": 9, "1200": 9, "96": 9, "x25519": [9, 11], "keypair": 9, "simplic": 9, "explan": [9, 10], "lki": 9, "laid": 9, "had": 9, "construct": [9, 11], "lkr": 9, "chose": 9, "direction": 9, "unequivoc": 9, "retransmiss": 9, "reassembl": 9, "programmat": 9, "satisfi": 9, "half": [9, 11], "duplex": [9, 11], "averag": 9, "consist": 9, "whereupon": 9, "stabl": [9, 11], "stage": 9, "year": 9, "microcontrol": 9, "430": 9, "868": 9, "900": 9, "tailor": 9, "treat": 9, "regard": 9, "preshar": 9, "compos": 9, "field": 9, "context": 9, "465": 9, "unset": 9, "00": [9, 10], "01": 9, "11": 9, "_______": 9, "________________": 9, "________": 9, "______": 9, "__": 9, "_": 9, "01010000": 9, "00000100": 9, "hash1": 9, "hash2": 9, "header_2": 9, "00000000": 9, "00000111": 9, "header_1": 9, "10000000": 9, "51": 9, "167": 9, "83": [9, 10], "115": 9, "99": 9, "conceptu": 9, "hkdf": 9, "fernet": 9, "spec": 9, "cbc": [9, 11], "pkcs7": [9, 11], "pad": [9, 11], "hmac": [9, 11], "sha256": [9, 11], "iv": [9, 11], "urandom": [9, 11], "hashlib": 9, "trivial": [9, 11], "consequ": 9, "backend": 9, "loss": 9, "scrutini": 9, "review": [9, 11], "risk": 9, "driver": [10, 11], "privileg": 10, "light": 10, "weight": 10, "etc": 10, "ie": 10, "breviti": 10, "socket": [10, 11], "share_inst": 10, "shared_instance_port": 10, "37428": 10, "instance_control_port": 10, "37429": 10, "rpc": 10, "rpc_kei": 10, "e5c032d3ec4e64a6aca9927ba8ab73336780f6d71790": 10, "probe": 10, "respond_to_prob": 10, "warn": 10, "unus": 10, "teach": 10, "task": 10, "18": 10, "17": 10, "59": 10, "56": 10, "ifconfig": 10, "gbp": 10, "13": 10, "kb": 10, "86": 10, "mbp": 10, "63": 10, "23": 10, "80": 10, "tcpinterfac": 10, "dublin": 10, "187": 10, "27": 10, "74": 10, "uhf": [10, 11], "kbp": 10, "e702c42ba8": 10, "49": 10, "5245a8efe1788c6a1cd36144a270e13b": 10, "j": 10, "w": 10, "arx": 10, "atx": 10, "revers": 10, "json": 10, "new_ident": 10, "984b74a3f768bef236af4371e6f248cd": 10, "new_id": 10, "0f4259fef4521ab75a3409e353fe9073eb10783b4912a6a9937c57bf44a62c1": 10, "hidden": 10, "8dd57a738226809646089335a6b03695": 10, "my_fil": 10, "txt": 10, "bc7291552be7a58f361522990465165c": 10, "rfe": 10, "fetch": 10, "30602def3b3506a28ed33db6f60cc6c9": 10, "2b489d06eaf7c543808c76a5332a447d": 10, "my_ident": 10, "2225fdeecaf6e2db4556c3c2d7637294": 10, "decreas": 10, "overwrit": 10, "c89b4da064bf66d280f0e4d8abfd9806": 10, "f53a1c4278e0726bb73fcc623d6ce763": 10, "max": 10, "rnstransport": 10, "2d03725b327348980d570f739a3a5708": 10, "38": 10, "469": 10, "781": 10, "e7536ee90bd4a440e130490b87a25124": 10, "809": 10, "1726dbad538775b5bf9b0ea25a4079c8": 10, "c50cc4e4f7838b6c31f60ab9032cbc62": 10, "allowed_ident": 10, "copi": 10, "tgz": 10, "73cbd378bb0286ed11a707c13447bb1": 10, "allowed_hash": 10, "silent": 10, "jail": 10, "auth": 10, "941bed5e228775e5a8079fc38b1ccf3f": 10, "1b03013c25f1c2ca068a4f080b844a10": 10, "7a55144adf826958a9529a3bcf08b149": 10, "cat": 10, "proc": 10, "cpuinfo": 10, "pseudo": 10, "stderr": 10, "noauth": 10, "noid": 10, "mirror": 10, "fw": 10, "url": 10, "nocheck": 10, "flash": 10, "baud_flash": 10, "addr": 10, "freq": 10, "hz": 10, "bw": 10, "txp": 10, "sf": 10, "cr": 10, "eeprom": 10, "backup": 10, "dump": 10, "wipe": 10, "hexbyt": 10, "firmware_hash": 10, "product": 10, "model": 10, "hwrev": 10, "revis": 10, "attach": 10, "older": 10, "extract": 10, "cach": 10, "921600": 10, "bluetooth": 10, "intens": 10, "ff": 10, "consol": 10, "unlock": 10, "bootstrap": 10, "rom": 10, "enable_remote_manag": 10, "remote_management_allow": 10, "9fb6d773498fb3feda407ed8ef2c3229": 10, "2d882c5586e548d79b5af27bca1776dc": 10, "administr": 10, "ftdi_ft230x_basic_uart_43891ckm": 10, "if00": 10, "port0": 10, "plug": 10, "unplug": 10, "systemd": 10, "usr": 10, "execstartpr": 10, "restart": 10, "restartsec": 10, "usernameher": 10, "execstart": 10, "wantedbi": 10, "systemctl": 10, "whole": 10, "regular": 10, "rns_bin_dir": 10, "eg": 10, "reload": 10, "loginctl": 10, "linger": 10, "readili": 11, "advers": 11, "unforg": 11, "acknowledg": 11, "empow": 11, "autonomi": 11, "sovereignti": 11, "planetari": 11, "hierarch": 11, "bureaucrat": 11, "resili": 11, "userland": 11, "beta": 11, "bug": 11, "warrant": 11, "heterogen": 11, "scalabl": 11, "mixtur": 11, "foundat": 11, "keyset": 11, "intuit": 11, "decentralis": 11, "gigabyt": 11, "lightweight": 11, "44": 11, "sequenti": 11, "hoc": 11, "transform": 11, "fact": 11, "generalis": 11, "fibr": 11, "popular": 11, "ideal": 11, "stdio": 11, "hack": 11, "foremost": 11, "audit": 11, "privaci": 11, "thorough": 11, "research": 11, "touch": 11}, "objects": {"RNS": [[7, 0, 1, "", "Buffer"], [7, 0, 1, "", "Destination"], [7, 0, 1, "", "Identity"], [7, 0, 1, "", "Link"], [7, 0, 1, "", "MessageBase"], [7, 0, 1, "", "Packet"], [7, 0, 1, "", "PacketReceipt"], [7, 0, 1, "", "RawChannelReader"], [7, 0, 1, "", "RawChannelWriter"], [7, 0, 1, "", "RequestReceipt"], [7, 0, 1, "", "Resource"], [7, 0, 1, "", "Reticulum"], [7, 0, 1, "", "Transport"]], "RNS.Buffer": [[7, 1, 1, "", "create_bidirectional_buffer"], [7, 1, 1, "", "create_reader"], [7, 1, 1, "", "create_writer"]], "RNS.Channel": [[7, 0, 1, "", "Channel"]], "RNS.Channel.Channel": [[7, 1, 1, "", "add_message_handler"], [7, 1, 1, "", "is_ready_to_send"], [7, 2, 1, "", "mdu"], [7, 1, 1, "", "register_message_type"], [7, 1, 1, "", "remove_message_handler"], [7, 1, 1, "", "send"]], "RNS.Destination": [[7, 3, 1, "", "RATCHET_COUNT"], [7, 3, 1, "", "RATCHET_INTERVAL"], [7, 1, 1, "", "accepts_links"], [7, 1, 1, "", "announce"], [7, 1, 1, "", "app_and_aspects_from_name"], [7, 1, 1, "", "clear_default_app_data"], [7, 1, 1, "", "create_keys"], [7, 1, 1, "", "decrypt"], [7, 1, 1, "", "deregister_request_handler"], [7, 1, 1, "", "enable_ratchets"], [7, 1, 1, "", "encrypt"], [7, 1, 1, "", "enforce_ratchets"], [7, 1, 1, "", "expand_name"], [7, 1, 1, "", "get_private_key"], [7, 1, 1, "", "hash"], [7, 1, 1, "", "hash_from_name_and_identity"], [7, 1, 1, "", "load_private_key"], [7, 1, 1, "", "register_request_handler"], [7, 1, 1, "", "set_default_app_data"], [7, 1, 1, "", "set_link_established_callback"], [7, 1, 1, "", "set_packet_callback"], [7, 1, 1, "", "set_proof_requested_callback"], [7, 1, 1, "", "set_proof_strategy"], [7, 1, 1, "", "set_ratchet_interval"], [7, 1, 1, "", "set_retained_ratchets"], [7, 1, 1, "", "sign"]], "RNS.Identity": [[7, 3, 1, "", "CURVE"], [7, 3, 1, "", "KEYSIZE"], [7, 3, 1, "", "RATCHETSIZE"], [7, 3, 1, "", "RATCHET_EXPIRY"], [7, 3, 1, "", "TRUNCATED_HASHLENGTH"], [7, 1, 1, "", "current_ratchet_id"], [7, 1, 1, "", "decrypt"], [7, 1, 1, "", "encrypt"], [7, 1, 1, "", "from_bytes"], [7, 1, 1, "", "from_file"], [7, 1, 1, "", "full_hash"], [7, 1, 1, "", "get_private_key"], [7, 1, 1, "", "get_public_key"], [7, 1, 1, "", "get_random_hash"], [7, 1, 1, "", "load_private_key"], [7, 1, 1, "", "load_public_key"], [7, 1, 1, "", "recall"], [7, 1, 1, "", "recall_app_data"], [7, 1, 1, "", "sign"], [7, 1, 1, "", "to_file"], [7, 1, 1, "", "truncated_hash"], [7, 1, 1, "", "validate"]], "RNS.Link": [[7, 3, 1, "", "CURVE"], [7, 3, 1, "", "ESTABLISHMENT_TIMEOUT_PER_HOP"], [7, 3, 1, "", "KEEPALIVE"], [7, 3, 1, "", "KEEPALIVE_TIMEOUT_FACTOR"], [7, 3, 1, "", "STALE_GRACE"], [7, 3, 1, "", "STALE_TIME"], [7, 1, 1, "", "get_age"], [7, 1, 1, "", "get_channel"], [7, 1, 1, "", "get_establishment_rate"], [7, 1, 1, "", "get_q"], [7, 1, 1, "", "get_remote_identity"], [7, 1, 1, "", "get_rssi"], [7, 1, 1, "", "get_snr"], [7, 1, 1, "", "identify"], [7, 1, 1, "", "inactive_for"], [7, 1, 1, "", "no_data_for"], [7, 1, 1, "", "no_inbound_for"], [7, 1, 1, "", "no_outbound_for"], [7, 1, 1, "", "request"], [7, 1, 1, "", "set_link_closed_callback"], [7, 1, 1, "", "set_packet_callback"], [7, 1, 1, "", "set_remote_identified_callback"], [7, 1, 1, "", "set_resource_callback"], [7, 1, 1, "", "set_resource_concluded_callback"], [7, 1, 1, "", "set_resource_started_callback"], [7, 1, 1, "", "set_resource_strategy"], [7, 1, 1, "", "teardown"], [7, 1, 1, "", "track_phy_stats"]], "RNS.MessageBase": [[7, 3, 1, "", "MSGTYPE"], [7, 1, 1, "", "pack"], [7, 1, 1, "", "unpack"]], "RNS.Packet": [[7, 3, 1, "", "ENCRYPTED_MDU"], [7, 3, 1, "", "PLAIN_MDU"], [7, 1, 1, "", "get_q"], [7, 1, 1, "", "get_rssi"], [7, 1, 1, "", "get_snr"], [7, 1, 1, "", "resend"], [7, 1, 1, "", "send"]], "RNS.PacketReceipt": [[7, 1, 1, "", "get_rtt"], [7, 1, 1, "", "get_status"], [7, 1, 1, "", "set_delivery_callback"], [7, 1, 1, "", "set_timeout"], [7, 1, 1, "", "set_timeout_callback"]], "RNS.RawChannelReader": [[7, 1, 1, "", "__init__"], [7, 1, 1, "", "add_ready_callback"], [7, 1, 1, "", "remove_ready_callback"]], "RNS.RawChannelWriter": [[7, 1, 1, "", "__init__"]], "RNS.RequestReceipt": [[7, 1, 1, "", "concluded"], [7, 1, 1, "", "get_progress"], [7, 1, 1, "", "get_request_id"], [7, 1, 1, "", "get_response"], [7, 1, 1, "", "get_response_time"], [7, 1, 1, "", "get_status"]], "RNS.Resource": [[7, 1, 1, "", "advertise"], [7, 1, 1, "", "cancel"], [7, 1, 1, "", "get_data_size"], [7, 1, 1, "", "get_hash"], [7, 1, 1, "", "get_parts"], [7, 1, 1, "", "get_progress"], [7, 1, 1, "", "get_segments"], [7, 1, 1, "", "get_transfer_size"], [7, 1, 1, "", "is_compressed"]], "RNS.Reticulum": [[7, 3, 1, "", "ANNOUNCE_CAP"], [7, 3, 1, "", "LINK_MTU_DISCOVERY"], [7, 3, 1, "", "MINIMUM_BITRATE"], [7, 3, 1, "", "MTU"], [7, 1, 1, "", "get_instance"], [7, 1, 1, "", "link_mtu_discovery"], [7, 1, 1, "", "remote_management_enabled"], [7, 1, 1, "", "should_use_implicit_proof"], [7, 1, 1, "", "transport_enabled"]], "RNS.Transport": [[7, 3, 1, "", "PATHFINDER_M"], [7, 1, 1, "", "deregister_announce_handler"], [7, 1, 1, "", "has_path"], [7, 1, 1, "", "hops_to"], [7, 1, 1, "", "next_hop"], [7, 1, 1, "", "next_hop_interface"], [7, 1, 1, "", "register_announce_handler"], [7, 1, 1, "", "request_path"]]}, "objtypes": {"0": "py:class", "1": "py:method", "2": "py:property", "3": "py:attribute"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "method", "Python method"], "2": ["py", "property", "Python property"], "3": ["py", "attribute", "Python attribute"]}, "titleterms": {"code": [0, 8, 9], "exampl": [0, 6], "minim": 0, "announc": [0, 5, 9], "broadcast": 0, "echo": 0, "link": [0, 9], "identif": 0, "request": 0, "respons": 0, "channel": 0, "buffer": 0, "filetransf": 0, "custom": [0, 2, 5], "interfac": [0, 2, 5, 9, 11], "an": 1, "explan": 1, "reticulum": [1, 2, 3, 4, 8, 9, 10, 11], "human": 1, "Beings": 1, "get": [2, 9], "start": 2, "fast": 2, "standalon": 2, "instal": [2, 3], "resolv": 2, "depend": 2, "issu": 2, "try": 2, "us": [2, 10, 11], "base": [2, 3], "program": [2, 10], "remot": [2, 10], "shell": 2, "nomad": 2, "network": [2, 4, 6], "sideband": 2, "meshchat": 2, "includ": [2, 10], "util": [2, 10], "creat": [2, 3], "With": 2, "connect": 2, "instanc": 2, "over": [2, 6], "internet": [2, 6], "public": [2, 9], "testnet": 2, "ad": 2, "radio": [2, 3], "develop": 2, "particip": 2, "platform": 2, "specif": [2, 9], "note": 2, "android": 2, "arm64": 2, "debian": 2, "bookworm": 2, "maco": 2, "openwrt": 2, "raspberri": 2, "pi": 2, "risc": 2, "v": 2, "ubuntu": 2, "lunar": 2, "window": 2, "pure": 2, "python": 2, "commun": 3, "hardwar": 3, "combin": 3, "type": [3, 9, 11], "rnode": [3, 5], "support": [3, 8], "board": 3, "devic": [3, 11], "lilygo": 3, "t": 3, "beam": 3, "suprem": 3, "t3s3": 3, "rak4631": 3, "unsign": 3, "v2": 3, "x": 3, "lora32": 3, "1": 3, "0": 3, "v1": 3, "deck": 3, "heltec": 3, "v3": 3, "usag": 3, "wifi": 3, "ethernet": 3, "serial": [3, 5, 10], "line": 3, "packet": [3, 9], "modem": 3, "stack": 4, "manual": 4, "tabl": 4, "Of": 4, "content": 4, "indic": 4, "configur": [5, 10], "auto": 5, "i2p": 5, "tcp": 5, "server": 5, "client": 5, "udp": 5, "lora": [5, 6], "multi": 5, "pipe": 5, "kiss": 5, "ax": 5, "25": 5, "common": 5, "option": 5, "mode": 5, "rate": 5, "control": 5, "new": 5, "destin": [5, 9], "limit": 5, "build": 6, "concept": 6, "overview": 6, "scenario": 6, "interconnect": 6, "site": 6, "bridg": 6, "growth": 6, "converg": 6, "api": 7, "refer": [7, 9], "donat": 8, "provid": 8, "feedback": 8, "contribut": 8, "understand": 9, "motiv": 9, "goal": 9, "introduct": 9, "basic": 9, "function": 9, "name": [9, 10], "kei": 9, "ident": 9, "further": 9, "transport": 9, "node": 9, "The": [9, 10], "mechan": 9, "detail": 9, "reach": 9, "establish": 9, "resourc": 9, "setup": 9, "protocol": 9, "prioritis": 9, "access": 9, "wire": 9, "format": 9, "propag": 9, "rule": 9, "cryptograph": 9, "primit": 9, "your": 10, "system": 10, "data": 10, "rnsd": 10, "rnstatu": 10, "rnid": 10, "rnpath": 10, "rnprobe": 10, "rncp": 10, "rnx": 10, "rnodeconf": 10, "manag": 10, "improv": 10, "fix": 10, "port": 10, "servic": 10, "systemwid": 10, "userspac": 10, "what": 11, "i": 11, "current": 11, "statu": 11, "doe": 11, "offer": 11, "where": 11, "can": 11, "caveat": 11, "emptor": 11}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "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": 57}, "alltitles": {"Code Examples": [[0, "code-examples"]], "Minimal": [[0, "minimal"]], "Announce": [[0, "announce"]], "Broadcast": [[0, "broadcast"]], "Echo": [[0, "echo"]], "Link": [[0, "link"]], "Identification": [[0, "example-identify"]], "Requests & Responses": [[0, "requests-responses"]], "Channel": [[0, "channel"]], "Buffer": [[0, "buffer"]], "Filetransfer": [[0, "filetransfer"]], "Custom Interfaces": [[0, "custom-interfaces"], [5, "custom-interfaces"]], "An Explanation of Reticulum for Human Beings": [[1, "an-explanation-of-reticulum-for-human-beings"]], "Getting Started Fast": [[2, "getting-started-fast"]], "Standalone Reticulum Installation": [[2, "standalone-reticulum-installation"]], "Resolving Dependency & Installation Issues": [[2, "resolving-dependency-installation-issues"]], "Try Using a Reticulum-based Program": [[2, "try-using-a-reticulum-based-program"]], "Remote Shell": [[2, "remote-shell"]], "Nomad Network": [[2, "nomad-network"]], "Sideband": [[2, "sideband"]], "MeshChat": [[2, "meshchat"]], "Using the Included Utilities": [[2, "using-the-included-utilities"]], "Creating a Network With Reticulum": [[2, "creating-a-network-with-reticulum"]], "Connecting Reticulum Instances Over the Internet": [[2, "connecting-reticulum-instances-over-the-internet"]], "Connect to the Public Testnet": [[2, "connect-to-the-public-testnet"]], "Adding Radio Interfaces": [[2, "adding-radio-interfaces"]], "Creating and Using Custom Interfaces": [[2, "creating-and-using-custom-interfaces"]], "Develop a Program with Reticulum": [[2, "develop-a-program-with-reticulum"]], "Participate in Reticulum Development": [[2, "participate-in-reticulum-development"]], "Platform-Specific Install Notes": [[2, "platform-specific-install-notes"]], "Android": [[2, "android"]], "ARM64": [[2, "arm64"]], "Debian Bookworm": [[2, "debian-bookworm"]], "MacOS": [[2, "macos"]], "OpenWRT": [[2, "openwrt"]], "Raspberry Pi": [[2, "raspberry-pi"]], "RISC-V": [[2, "risc-v"]], "Ubuntu Lunar": [[2, "ubuntu-lunar"]], "Windows": [[2, "windows"]], "Pure-Python Reticulum": [[2, "pure-python-reticulum"]], "Communications Hardware": [[3, "communications-hardware"]], "Combining Hardware Types": [[3, "combining-hardware-types"]], "RNode": [[3, "rnode"]], "Creating RNodes": [[3, "creating-rnodes"]], "Supported Boards and Devices": [[3, "supported-boards-and-devices"]], "LilyGO T-Beam Supreme": [[3, "lilygo-t-beam-supreme"]], "LilyGO T-Beam": [[3, "lilygo-t-beam"]], "LilyGO T3S3": [[3, "lilygo-t3s3"]], "RAK4631-based Boards": [[3, "rak4631-based-boards"]], "Unsigned RNode v2.x": [[3, "unsigned-rnode-v2-x"]], "LilyGO LoRa32 v2.1": [[3, "lilygo-lora32-v2-1"]], "LilyGO LoRa32 v2.0": [[3, "lilygo-lora32-v2-0"]], "LilyGO LoRa32 v1.0": [[3, "lilygo-lora32-v1-0"]], "LilyGO T-Deck": [[3, "lilygo-t-deck"]], "Heltec LoRa32 v3.0": [[3, "heltec-lora32-v3-0"]], "Heltec LoRa32 v2.0": [[3, "heltec-lora32-v2-0"]], "Unsigned RNode v1.x": [[3, "unsigned-rnode-v1-x"]], "Installation": [[3, "installation"]], "Usage with Reticulum": [[3, "usage-with-reticulum"]], "WiFi-based Hardware": [[3, "wifi-based-hardware"]], "Ethernet-based Hardware": [[3, "ethernet-based-hardware"]], "Serial Lines & Devices": [[3, "serial-lines-devices"]], "Packet Radio Modems": [[3, "packet-radio-modems"]], "Reticulum Network Stack Manual": [[4, "reticulum-network-stack-manual"]], "Table Of Contents": [[4, "table-of-contents"]], "Indices and Tables": [[4, "indices-and-tables"]], "Configuring Interfaces": [[5, "configuring-interfaces"]], "Auto Interface": [[5, "auto-interface"]], "I2P Interface": [[5, "i2p-interface"]], "TCP Server Interface": [[5, "tcp-server-interface"]], "TCP Client Interface": [[5, "tcp-client-interface"]], "UDP Interface": [[5, "udp-interface"]], "RNode LoRa Interface": [[5, "rnode-lora-interface"]], "RNode Multi Interface": [[5, "rnode-multi-interface"]], "Serial Interface": [[5, "serial-interface"]], "Pipe Interface": [[5, "pipe-interface"]], "KISS Interface": [[5, "kiss-interface"]], "AX.25 KISS Interface": [[5, "ax-25-kiss-interface"]], "Common Interface Options": [[5, "common-interface-options"]], "Interface Modes": [[5, "interface-modes"]], "Announce Rate Control": [[5, "announce-rate-control"]], "New Destination Rate Limiting": [[5, "new-destination-rate-limiting"]], "Building Networks": [[6, "building-networks"]], "Concepts & Overview": [[6, "concepts-overview"]], "Example Scenarios": [[6, "example-scenarios"]], "Interconnected LoRa Sites": [[6, "interconnected-lora-sites"]], "Bridging Over the Internet": [[6, "bridging-over-the-internet"]], "Growth and Convergence": [[6, "growth-and-convergence"]], "API Reference": [[7, "api-reference"]], "Support Reticulum": [[8, "support-reticulum"]], "Donations": [[8, "donations"]], "Provide Feedback": [[8, "provide-feedback"]], "Contribute Code": [[8, "contribute-code"]], "Understanding Reticulum": [[9, "understanding-reticulum"]], "Motivation": [[9, "motivation"]], "Goals": [[9, "goals"]], "Introduction & Basic Functionality": [[9, "introduction-basic-functionality"]], "Destinations": [[9, "destinations"]], "Destination Naming": [[9, "destination-naming"]], "Public Key Announcements": [[9, "public-key-announcements"]], "Identities": [[9, "understanding-identities"]], "Getting Further": [[9, "getting-further"]], "Reticulum Transport": [[9, "reticulum-transport"]], "Node Types": [[9, "node-types"]], "The Announce Mechanism in Detail": [[9, "the-announce-mechanism-in-detail"]], "Reaching the Destination": [[9, "reaching-the-destination"]], "Link Establishment in Detail": [[9, "link-establishment-in-detail"]], "Resources": [[9, "resources"]], "Reference Setup": [[9, "reference-setup"]], "Protocol Specifics": [[9, "protocol-specifics"]], "Packet Prioritisation": [[9, "packet-prioritisation"]], "Interface Access Codes": [[9, "interface-access-codes"]], "Wire Format": [[9, "wire-format"]], "Announce Propagation Rules": [[9, "announce-propagation-rules"]], "Cryptographic Primitives": [[9, "cryptographic-primitives"]], "Using Reticulum on Your System": [[10, "using-reticulum-on-your-system"]], "Configuration & Data": [[10, "configuration-data"]], "Included Utility Programs": [[10, "included-utility-programs"]], "The rnsd Utility": [[10, "the-rnsd-utility"]], "The rnstatus Utility": [[10, "the-rnstatus-utility"]], "The rnid Utility": [[10, "the-rnid-utility"]], "The rnpath Utility": [[10, "the-rnpath-utility"]], "The rnprobe Utility": [[10, "the-rnprobe-utility"]], "The rncp Utility": [[10, "the-rncp-utility"]], "The rnx Utility": [[10, "the-rnx-utility"]], "The rnodeconf Utility": [[10, "the-rnodeconf-utility"]], "Remote Management": [[10, "remote-management"]], "Improving System Configuration": [[10, "improving-system-configuration"]], "Fixed Serial Port Names": [[10, "fixed-serial-port-names"]], "Reticulum as a System Service": [[10, "reticulum-as-a-system-service"]], "Systemwide Service": [[10, "systemwide-service"]], "Userspace Service": [[10, "userspace-service"]], "What is Reticulum?": [[11, "what-is-reticulum"]], "Current Status": [[11, "current-status"]], "What does Reticulum Offer?": [[11, "what-does-reticulum-offer"]], "Where can Reticulum be Used?": [[11, "where-can-reticulum-be-used"]], "Interface Types and Devices": [[11, "interface-types-and-devices"]], "Caveat Emptor": [[11, "caveat-emptor"]]}, "indexentries": {"announce_cap (rns.reticulum attribute)": [[7, "RNS.Reticulum.ANNOUNCE_CAP"]], "buffer (class in rns)": [[7, "RNS.Buffer"]], "curve (rns.identity attribute)": [[7, "RNS.Identity.CURVE"]], "curve (rns.link attribute)": [[7, "RNS.Link.CURVE"]], "channel (class in rns.channel)": [[7, "RNS.Channel.Channel"]], "destination (class in rns)": [[7, "RNS.Destination"]], "encrypted_mdu (rns.packet attribute)": [[7, "RNS.Packet.ENCRYPTED_MDU"]], "establishment_timeout_per_hop (rns.link attribute)": [[7, "RNS.Link.ESTABLISHMENT_TIMEOUT_PER_HOP"]], "identity (class in rns)": [[7, "RNS.Identity"]], "keepalive (rns.link attribute)": [[7, "RNS.Link.KEEPALIVE"]], "keepalive_timeout_factor (rns.link attribute)": [[7, "RNS.Link.KEEPALIVE_TIMEOUT_FACTOR"]], "keysize (rns.identity attribute)": [[7, "RNS.Identity.KEYSIZE"]], "link_mtu_discovery (rns.reticulum attribute)": [[7, "RNS.Reticulum.LINK_MTU_DISCOVERY"]], "link (class in rns)": [[7, "RNS.Link"]], "minimum_bitrate (rns.reticulum attribute)": [[7, "RNS.Reticulum.MINIMUM_BITRATE"]], "msgtype (rns.messagebase attribute)": [[7, "RNS.MessageBase.MSGTYPE"]], "mtu (rns.reticulum attribute)": [[7, "RNS.Reticulum.MTU"]], "messagebase (class in rns)": [[7, "RNS.MessageBase"]], "pathfinder_m (rns.transport attribute)": [[7, "RNS.Transport.PATHFINDER_M"]], "plain_mdu (rns.packet attribute)": [[7, "RNS.Packet.PLAIN_MDU"]], "packet (class in rns)": [[7, "RNS.Packet"]], "packetreceipt (class in rns)": [[7, "RNS.PacketReceipt"]], "ratchetsize (rns.identity attribute)": [[7, "RNS.Identity.RATCHETSIZE"]], "ratchet_count (rns.destination attribute)": [[7, "RNS.Destination.RATCHET_COUNT"]], "ratchet_expiry (rns.identity attribute)": [[7, "RNS.Identity.RATCHET_EXPIRY"]], "ratchet_interval (rns.destination attribute)": [[7, "RNS.Destination.RATCHET_INTERVAL"]], "rawchannelreader (class in rns)": [[7, "RNS.RawChannelReader"]], "rawchannelwriter (class in rns)": [[7, "RNS.RawChannelWriter"]], "requestreceipt (class in rns)": [[7, "RNS.RequestReceipt"]], "resource (class in rns)": [[7, "RNS.Resource"]], "reticulum (class in rns)": [[7, "RNS.Reticulum"]], "stale_grace (rns.link attribute)": [[7, "RNS.Link.STALE_GRACE"]], "stale_time (rns.link attribute)": [[7, "RNS.Link.STALE_TIME"]], "truncated_hashlength (rns.identity attribute)": [[7, "RNS.Identity.TRUNCATED_HASHLENGTH"]], "transport (class in rns)": [[7, "RNS.Transport"]], "__init__() (rns.rawchannelreader method)": [[7, "RNS.RawChannelReader.__init__"]], "__init__() (rns.rawchannelwriter method)": [[7, "RNS.RawChannelWriter.__init__"]], "accepts_links() (rns.destination method)": [[7, "RNS.Destination.accepts_links"]], "add_message_handler() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.add_message_handler"]], "add_ready_callback() (rns.rawchannelreader method)": [[7, "RNS.RawChannelReader.add_ready_callback"]], "advertise() (rns.resource method)": [[7, "RNS.Resource.advertise"]], "announce() (rns.destination method)": [[7, "RNS.Destination.announce"]], "app_and_aspects_from_name() (rns.destination static method)": [[7, "RNS.Destination.app_and_aspects_from_name"]], "cancel() (rns.resource method)": [[7, "RNS.Resource.cancel"]], "clear_default_app_data() (rns.destination method)": [[7, "RNS.Destination.clear_default_app_data"]], "concluded() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.concluded"]], "create_bidirectional_buffer() (rns.buffer static method)": [[7, "RNS.Buffer.create_bidirectional_buffer"]], "create_keys() (rns.destination method)": [[7, "RNS.Destination.create_keys"]], "create_reader() (rns.buffer static method)": [[7, "RNS.Buffer.create_reader"]], "create_writer() (rns.buffer static method)": [[7, "RNS.Buffer.create_writer"]], "current_ratchet_id() (rns.identity static method)": [[7, "RNS.Identity.current_ratchet_id"]], "decrypt() (rns.destination method)": [[7, "RNS.Destination.decrypt"]], "decrypt() (rns.identity method)": [[7, "RNS.Identity.decrypt"]], "deregister_announce_handler() (rns.transport static method)": [[7, "RNS.Transport.deregister_announce_handler"]], "deregister_request_handler() (rns.destination method)": [[7, "RNS.Destination.deregister_request_handler"]], "enable_ratchets() (rns.destination method)": [[7, "RNS.Destination.enable_ratchets"]], "encrypt() (rns.destination method)": [[7, "RNS.Destination.encrypt"]], "encrypt() (rns.identity method)": [[7, "RNS.Identity.encrypt"]], "enforce_ratchets() (rns.destination method)": [[7, "RNS.Destination.enforce_ratchets"]], "expand_name() (rns.destination static method)": [[7, "RNS.Destination.expand_name"]], "from_bytes() (rns.identity static method)": [[7, "RNS.Identity.from_bytes"]], "from_file() (rns.identity static method)": [[7, "RNS.Identity.from_file"]], "full_hash() (rns.identity static method)": [[7, "RNS.Identity.full_hash"]], "get_age() (rns.link method)": [[7, "RNS.Link.get_age"]], "get_channel() (rns.link method)": [[7, "RNS.Link.get_channel"]], "get_data_size() (rns.resource method)": [[7, "RNS.Resource.get_data_size"]], "get_establishment_rate() (rns.link method)": [[7, "RNS.Link.get_establishment_rate"]], "get_hash() (rns.resource method)": [[7, "RNS.Resource.get_hash"]], "get_instance() (rns.reticulum static method)": [[7, "RNS.Reticulum.get_instance"]], "get_parts() (rns.resource method)": [[7, "RNS.Resource.get_parts"]], "get_private_key() (rns.destination method)": [[7, "RNS.Destination.get_private_key"]], "get_private_key() (rns.identity method)": [[7, "RNS.Identity.get_private_key"]], "get_progress() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_progress"]], "get_progress() (rns.resource method)": [[7, "RNS.Resource.get_progress"]], "get_public_key() (rns.identity method)": [[7, "RNS.Identity.get_public_key"]], "get_q() (rns.link method)": [[7, "RNS.Link.get_q"]], "get_q() (rns.packet method)": [[7, "RNS.Packet.get_q"]], "get_random_hash() (rns.identity static method)": [[7, "RNS.Identity.get_random_hash"]], "get_remote_identity() (rns.link method)": [[7, "RNS.Link.get_remote_identity"]], "get_request_id() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_request_id"]], "get_response() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_response"]], "get_response_time() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_response_time"]], "get_rssi() (rns.link method)": [[7, "RNS.Link.get_rssi"]], "get_rssi() (rns.packet method)": [[7, "RNS.Packet.get_rssi"]], "get_rtt() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.get_rtt"]], "get_segments() (rns.resource method)": [[7, "RNS.Resource.get_segments"]], "get_snr() (rns.link method)": [[7, "RNS.Link.get_snr"]], "get_snr() (rns.packet method)": [[7, "RNS.Packet.get_snr"]], "get_status() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.get_status"]], "get_status() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_status"]], "get_transfer_size() (rns.resource method)": [[7, "RNS.Resource.get_transfer_size"]], "has_path() (rns.transport static method)": [[7, "RNS.Transport.has_path"]], "hash() (rns.destination static method)": [[7, "RNS.Destination.hash"]], "hash_from_name_and_identity() (rns.destination static method)": [[7, "RNS.Destination.hash_from_name_and_identity"]], "hops_to() (rns.transport static method)": [[7, "RNS.Transport.hops_to"]], "identify() (rns.link method)": [[7, "RNS.Link.identify"]], "inactive_for() (rns.link method)": [[7, "RNS.Link.inactive_for"]], "is_compressed() (rns.resource method)": [[7, "RNS.Resource.is_compressed"]], "is_ready_to_send() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.is_ready_to_send"]], "link_mtu_discovery() (rns.reticulum static method)": [[7, "RNS.Reticulum.link_mtu_discovery"]], "load_private_key() (rns.destination method)": [[7, "RNS.Destination.load_private_key"]], "load_private_key() (rns.identity method)": [[7, "RNS.Identity.load_private_key"]], "load_public_key() (rns.identity method)": [[7, "RNS.Identity.load_public_key"]], "mdu (rns.channel.channel property)": [[7, "RNS.Channel.Channel.mdu"]], "next_hop() (rns.transport static method)": [[7, "RNS.Transport.next_hop"]], "next_hop_interface() (rns.transport static method)": [[7, "RNS.Transport.next_hop_interface"]], "no_data_for() (rns.link method)": [[7, "RNS.Link.no_data_for"]], "no_inbound_for() (rns.link method)": [[7, "RNS.Link.no_inbound_for"]], "no_outbound_for() (rns.link method)": [[7, "RNS.Link.no_outbound_for"]], "pack() (rns.messagebase method)": [[7, "RNS.MessageBase.pack"]], "recall() (rns.identity static method)": [[7, "RNS.Identity.recall"]], "recall_app_data() (rns.identity static method)": [[7, "RNS.Identity.recall_app_data"]], "register_announce_handler() (rns.transport static method)": [[7, "RNS.Transport.register_announce_handler"]], "register_message_type() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.register_message_type"]], "register_request_handler() (rns.destination method)": [[7, "RNS.Destination.register_request_handler"]], "remote_management_enabled() (rns.reticulum static method)": [[7, "RNS.Reticulum.remote_management_enabled"]], "remove_message_handler() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.remove_message_handler"]], "remove_ready_callback() (rns.rawchannelreader method)": [[7, "RNS.RawChannelReader.remove_ready_callback"]], "request() (rns.link method)": [[7, "RNS.Link.request"]], "request_path() (rns.transport static method)": [[7, "RNS.Transport.request_path"]], "resend() (rns.packet method)": [[7, "RNS.Packet.resend"]], "send() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.send"]], "send() (rns.packet method)": [[7, "RNS.Packet.send"]], "set_default_app_data() (rns.destination method)": [[7, "RNS.Destination.set_default_app_data"]], "set_delivery_callback() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.set_delivery_callback"]], "set_link_closed_callback() (rns.link method)": [[7, "RNS.Link.set_link_closed_callback"]], "set_link_established_callback() (rns.destination method)": [[7, "RNS.Destination.set_link_established_callback"]], "set_packet_callback() (rns.destination method)": [[7, "RNS.Destination.set_packet_callback"]], "set_packet_callback() (rns.link method)": [[7, "RNS.Link.set_packet_callback"]], "set_proof_requested_callback() (rns.destination method)": [[7, "RNS.Destination.set_proof_requested_callback"]], "set_proof_strategy() (rns.destination method)": [[7, "RNS.Destination.set_proof_strategy"]], "set_ratchet_interval() (rns.destination method)": [[7, "RNS.Destination.set_ratchet_interval"]], "set_remote_identified_callback() (rns.link method)": [[7, "RNS.Link.set_remote_identified_callback"]], "set_resource_callback() (rns.link method)": [[7, "RNS.Link.set_resource_callback"]], "set_resource_concluded_callback() (rns.link method)": [[7, "RNS.Link.set_resource_concluded_callback"]], "set_resource_started_callback() (rns.link method)": [[7, "RNS.Link.set_resource_started_callback"]], "set_resource_strategy() (rns.link method)": [[7, "RNS.Link.set_resource_strategy"]], "set_retained_ratchets() (rns.destination method)": [[7, "RNS.Destination.set_retained_ratchets"]], "set_timeout() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.set_timeout"]], "set_timeout_callback() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.set_timeout_callback"]], "should_use_implicit_proof() (rns.reticulum static method)": [[7, "RNS.Reticulum.should_use_implicit_proof"]], "sign() (rns.destination method)": [[7, "RNS.Destination.sign"]], "sign() (rns.identity method)": [[7, "RNS.Identity.sign"]], "teardown() (rns.link method)": [[7, "RNS.Link.teardown"]], "to_file() (rns.identity method)": [[7, "RNS.Identity.to_file"]], "track_phy_stats() (rns.link method)": [[7, "RNS.Link.track_phy_stats"]], "transport_enabled() (rns.reticulum static method)": [[7, "RNS.Reticulum.transport_enabled"]], "truncated_hash() (rns.identity static method)": [[7, "RNS.Identity.truncated_hash"]], "unpack() (rns.messagebase method)": [[7, "RNS.MessageBase.unpack"]], "validate() (rns.identity method)": [[7, "RNS.Identity.validate"]]}}) \ No newline at end of file

    aV8iOtTJC2LcSQhVwL`jsc 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 (class in RNS)