From 9065de5fb4e05282c687a510781faa82bf769d55 Mon Sep 17 00:00:00 2001 From: Mark Qvist Date: Tue, 4 Oct 2022 09:34:52 +0200 Subject: [PATCH] Updated docs and manual --- docs/Reticulum Manual.pdf | Bin 2365682 -> 2367224 bytes docs/manual/genindex.html | 2 ++ docs/manual/objects.inv | Bin 2139 -> 2142 bytes docs/manual/reference.html | 11 +++++++++++ docs/manual/searchindex.js | 2 +- 5 files changed, 14 insertions(+), 1 deletion(-) diff --git a/docs/Reticulum Manual.pdf b/docs/Reticulum Manual.pdf index c960484566363a8d64d97a1c4b9b85a77a535aca..288b0fe4d2b6acf1cbfceb6d872754c9a85953f3 100644 GIT binary patch delta 49029 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

O@eZi2r!^ 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 z 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

k8g!2ft6KYfk^Wcez_LP(c%*897w@VNZ<~g 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 TQ<5Msv$1l)Q&EY^ioyRswKwFO diff --git a/docs/manual/genindex.html b/docs/manual/genindex.html index ac13423..5efe427 100644 --- a/docs/manual/genindex.html +++ b/docs/manual/genindex.html @@ -383,6 +383,8 @@
    diff --git a/docs/manual/objects.inv b/docs/manual/objects.inv index 479d3506f320066b126b82179bbe60996ba7039f..db959f9b5267a2d04cb2560eb7fa8717aeba3794 100644 GIT binary patch delta 1807 zcmV+q2k`jY5Z(~5WdVQJFsC4?LWd+cmqdDZPZ>%+GW?&lZUVgc(YRF_YTrii4DBcp zDNdpoQMyC%>osBpaPa3t5}dJp?VOJer_vIV!&)7@S4xmW?!qh@ku;KlYtzZ>CH!ly z03;Uwzp=`f7NjIm>ut zCd*WNe0P*s_+xuQu^&}Z8o8z;OI?xv+H46sHNFbvkZNF}-b217=XK!g2F^*=S#ghEM(VlT-YxVZz+97Z(Sjm55{85_aF)fo1j{+)AE`NfG zdu>uS*)lBhPE%vZDU`&t!B%lj9{J!;VP({!=A0_%)$I1?GG0n#y* zwT)Xkuo5^=+`T#RGw%)1&0c3cDZM+YKnP7)3V&8#$tdJMe)Nj#zKkRphV1qs*lP&q z&NfHDRJDKX0P!IF`!lDMz7Uh-Y5`HOT;LDlmH)2Pa1Wi(q%bE}YtsSdT$_1GDyM_oj ze6vCg7dvhdN#c^0nNy4z+sSmbdWH-CJeo~iOZk5jyxhKcGXujs7uL05S3;z$q)Al5 z<|SDHH%($*{&=}*QmswFxQuX)cGS(w+ZuB4vbCM8r`yMe#p)ieOiM?Po#25khdp*O z>`F9VAlEP9ecnW#gkZD6-jk^(#R?Hg<_G2Y9g+hpuA|_R0khpBw_h7h{7>>zeY&~$ z3Kf6kHfj9oB4qNJq8%jR+q3rea_3^K?lVq?86sodPuGhetRGg8zU(;ZYg2Bj4j01s z(GM}lp__4?WL&Im#u&B6?+7vzzO_GjwE)v9tW%AZ#de&bBt}AB=I&}U3*tCsmzg;jDQ^a*`o>nOJHg3)Q#(i;yYo zMDQE@tBXQWD~JkBSlk1H8B1_5H;=6Sz#i)M*9H$bCwYS3+f4mbcePOef~ABUaWGfu zeH|TUaQ#-ze$mf^jcy1YRJf#YEq+5BHwEfv_3W~&%*~pK;L$W%a$ue#%4X0RJXafg1P@or z=!u1BSVUk>x>;_(r`l>zLB>Tq#&2iqU`7e#<+B>XMFYkGcg$gpG8v7^m-}W^LLdxe z!s2*aH|X6B0Z>wGa$>HtL@OQC&$RhnNob-Hph+mgG6T`uLe&A=gB!yc8Rvic2qjV@B9q zHS?%-;xyIulK}@d!PBf7XbFFz!eJ%yq+W5;WvfAV{L->Lqj9DR?aQfMo#NAxw}f&M zqASM` zbs5nYW!GWNwUb~MfrT~hsJ!B19XI-|+PK!b`l2BCijOvUDzu~A-))0xZo4L9QhfvA z7Sc;=+)+_EN*)U*k5#q7RvC9h^u>A4c!s2d&Nl+3{X=El6OyURNJ5O_R5=F%s2Q7G zIZiU7egbyUoT=}7*nxkeB88<~TePRiB#RkUAA71>qf>YoCfL+aN7SCN;wU7}oIFq; z)f+6!qNk@{GPwED*mg9|yiGWxQQwQ~JEogbbk7HIIu}GMvIB_W?=Xm9Q%zr^L%T&Z xcZrLJ_GfZI<|KebfDBz#js)tPw-n;4RleybdK%y0{{Wh;#-9f_{{uw2>!R~ecl`hW delta 1804 zcmV+n2lM#e5Ze&2WdVPu1+T(@BsiBudP`A;l8+4KXRUz%k9;%+m4@1b5j;aXN<@m2 zC`Od-Q2ct0SOFaT`H%!>Y+pO)qr<7RgygVR2k(^<1&Zm6S#*wRlliq_Q?!!cL8^LOG-wn5g%VugQ5G__{%JthWCZh*wIq ztnZGWNai0kl0)@^RBH2HhaZR%n3Pk0PmtFgGLka$%0?A1-)yIMPm9gta=zL|+r@JJ z{IZSK^DugRUi*IteVxzO)2D@B?-sH>KTK!a=g>!^?VjO0TG=$1P#;Pmjxo`B=@Q+s zZs>sXp61b)a60pvw#L+yeW+^R!m}W;0#_79mTj%xo?JTwjs+`uj6Z)$vpl9{^5IcH#mVJQP;syA zDq6zbEn#m?X?|TTnnM!RhLibf7Jgr=LTP#b;LiJrn0ti zO9xg0=ZU*FCw}I=0lL}itS6;+M->R6DNEtc>MI$A{Kt=8aov}ZB*T#1J_LIW;oRBg z2$-st9Uy-mgnxhLl+qVsl3Xny3YH7}LA>(cl^X7$6Pgs}^Rj9rIE352F3 zt{yT}jG&ErA<7l1`i=zo4||iYb#V(S;5ZTflvl_$K!Fb#oX7qk99X#kGk@0*0f%o^ zsNrJAEh0%=(lT?3F=IQKu2#=*;h#sdscR{Jf|q~W7jI@@nCHT}Htb4>l$A7zO4z(4 zE8wO{%*!7yH%+RwDHxX#&e4v#d3jqy4qmplll64__^?>r!?RPg}Tq1$deFkR@i$o^`uxKBFX%q9KSZhK2x-VBz$|;-d^rpjMaU{$uL7?to!MD5rp-_3euMyCw*R+&wkRuM}D!s3x z!wjz9s@X64d9cw9!Gj8y6t2Z@h~uU}{j8o{mX*0#GZ8$RMoSLNvn5c?b6DauUDJPa zW2UD=e}&~6#%(D5~*prU^f4%d^=v*wyo1u5{D&RW?FI)mqGV~^nBN*O(| z5Dkk6%t<%P4fs@B4JydEh{yQtY#q!ffxLWHL%3+bIN**stWhSTQTcM;j7kWEflOE& zZ|erVyCDEdicL<;b(UzQgZh~^zbgq%R01>!MObDadRwSEV0&<5I3wd+AEAHb%iF`X zl|pm8?ed{hVO2qOTYWyF#&J2})>c)J3B!^c&IC#aYRfLaXjmF}Jj+*o8EXMs9iobh z%gClSYhXG>{wR#vPSce5~U}zf~L8T325b1Yhyd22X`{l>57FP|a=EWK61WAlyQF zX^lH7Do4p<;pDNZHrOiTj)=ZE?-|dKbkO-mptOIetb0N-bs0&BQJgC0Kmavkvn$6* zM$}KhE}Ap-eGfZuRHT2flxvIjG?`>Eqw2#=b!&7A55okT8tRDJGgcgh#F>)^>Z5vt zWm)v}^h*XeUmDwv#+kPXXEf@2k$uN>Q;P2SAWr9kXhn7aG5j3{5p1gIYjkM0h~_SF u(a`=(F36k&kO+{WtICl;ee;$=T(!zK{X|dW8~h(Yv(@ +
    +
    +static hash(identity, app_name, *aspects)#
    +
    +
    Returns
    +

    A destination name in adressable hash form, for an app_name and a number of aspects.

    +
    +
    +
    +
    announce(app_data=None, path_response=False, send=True)#
    @@ -1535,6 +1545,7 @@ will announce it.

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