Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Bump version number |
---|---|
Timelines: | family | ancestors | descendants | both | trunk | 0.9.1-20191010 |
Files: | files | file ages | folders |
SHA1: |
9277fd8b03a64bcfc6e40298aa53085f |
User & Date: | bernd 2019-10-10 17:45:02.578 |
Context
2019-10-11
| ||
20:07 | Send first packet to open DHT both to IPv4 and IPv6 check-in: 127dfc04ac user: bernd tags: trunk | |
2019-10-10
| ||
17:45 | Bump version number check-in: 9277fd8b03 user: bernd tags: trunk, 0.9.1-20191010 | |
2019-10-09
| ||
22:31 | Some refactoring check-in: c62870935b user: bernd tags: trunk | |
Changes
Changes to addr.fs.
︙ | ︙ | |||
60 61 62 63 64 65 66 | in net2o : new-addr ( -- o ) address-class new >o address-table @ token-table ! o o> ; in net2o : dispose-addr ( o:addr -- o:addr ) host:id $free host:anchor $free host:route $free host:revoke $free host:key sec-free host:ekey sec-free dispose ; | | | | > > | | 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | in net2o : new-addr ( -- o ) address-class new >o address-table @ token-table ! o o> ; in net2o : dispose-addr ( o:addr -- o:addr ) host:id $free host:anchor $free host:route $free host:revoke $free host:key sec-free host:ekey sec-free dispose ; in net2o : dispose-addrs ( addr -- ) dup >r [: .net2o:dispose-addr ;] $[]o-map r> $free ; :noname ( -- ) dest-addrs net2o:dispose-addrs punch-addrs net2o:dispose-addrs defers extra-dispose ; is extra-dispose : new-addr ( addr u -- o ) \G create a new address object from string net2o:new-addr n:>o nest-cmd-loop o n:o> ; also net2o-base : o-genaddr ( o -- ) >o \G create new address string from object host:pri# @ ulit, addr-pri# |
︙ | ︙ |
Changes to classes.fs.
︙ | ︙ | |||
233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 | enum pend# enum qr# drop }scope cmd-class class \ callbacks defer: timeout-xt \ callback for timeout defer: setip-xt \ callback for set-ip defer: ack-xt \ callback for acknowledge defer: punch-done-xt \ callback for NAT traversal ok defer: sync-done-xt \ callback for sync done defer: sync-none-xt \ callback for sync not needed \ maps for data and code transfer 0 +field start-maps value: code-map value: code-rmap value: data-map value: data-rmap 0 +field end-maps \ strings 0 +field start-strings field: resend0 field: data-resend field: pubkey \ other side official pubkey | > < > > | 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 | enum pend# enum qr# drop }scope cmd-class class \ callbacks defer: send0-xt \ send out a stateless packet defer: timeout-xt \ callback for timeout defer: setip-xt \ callback for set-ip defer: ack-xt \ callback for acknowledge defer: punch-done-xt \ callback for NAT traversal ok defer: sync-done-xt \ callback for sync done defer: sync-none-xt \ callback for sync not needed \ maps for data and code transfer 0 +field start-maps value: code-map value: code-rmap value: data-map value: data-rmap 0 +field end-maps \ strings 0 +field start-strings field: resend0 field: data-resend field: pubkey \ other side official pubkey field: rqd-xts \ callbacks for request done (array) field: my-error-id field: beacon-hash 0 +field end-strings field: dest-addrs \ list of destinations field: punch-addrs \ list of punch destinations field: request-gen \ pre-generated request number field: perm-mask \ secrets 0 +field start-secrets field: crypto-key field: dest-0key \ key for stateless connections 0 +field end-secrets |
︙ | ︙ |
Changes to configure.ac.
︙ | ︙ | |||
11 12 13 14 15 16 17 | # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. | | | 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. AC_INIT([net2o], [0.9.1-20191010], [bernd@net2o.de], [net2o], [https://fossil.net2o.de/net2o/reportlist]) AC_PREREQ([2.59]) AC_CONFIG_MACRO_DIR([m4]) AC_USE_SYSTEM_EXTENSIONS LT_INIT AC_MSG_CHECKING([for gforth]) |
︙ | ︙ |
Changes to connect.fs.
︙ | ︙ | |||
12 13 14 15 16 17 18 | \ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the \ GNU Affero General Public License for more details. \ You should have received a copy of the GNU Affero General Public License \ along with this program. If not, see <http://www.gnu.org/licenses/>. Forward >invitations | | | 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | \ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the \ GNU Affero General Public License for more details. \ You should have received a copy of the GNU Affero General Public License \ along with this program. If not, see <http://www.gnu.org/licenses/>. Forward >invitations in net2o Forward dispose-addrs Forward mynick$ Forward invite-me Forward qr-invite-me Defer <invite-result> scope{ net2o-base \ nat traversal functions |
︙ | ︙ | |||
49 50 51 52 53 54 55 | ELSE 64drop <err> ." cookie: no owncrypt, un-cmd" <default> forth:cr THEN un-cmd ; +net2o: punch-load, ( $:string -- ) \g use for punch payload: nest it $> $, nest o IF nat( ." punch from: " return-address .addr-path forth:cr ) | | | > | 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | ELSE 64drop <err> ." cookie: no owncrypt, un-cmd" <default> forth:cr THEN un-cmd ; +net2o: punch-load, ( $:string -- ) \g use for punch payload: nest it $> $, nest o IF nat( ." punch from: " return-address .addr-path forth:cr ) ['] punchs code-reply is send-xt punch-addrs net2o:dispose-addrs \ first punch load: empty addresses THEN ; +net2o: punch ( $:string -- ) \g punch NAT traversal hole $> nat( ." punch to: " 2dup .addr$ forth:cr ) net2o:punch ; +net2o: punch-done ( -- ) \g punch received o 0<> own-crypt? and IF o-beacon ret+beacon nat( ticks .ticks ." punch done: " return-address .addr-path forth:cr ) ELSE |
︙ | ︙ |
Changes to do.
1 2 3 4 | #!/bin/bash echo "This script builds net2o from scratch" | | | 1 2 3 4 5 6 7 8 9 10 11 12 | #!/bin/bash echo "This script builds net2o from scratch" GFORTH=gforth-0.7.9_20191010 if [ "$(uname -o)" = "Cygwin" ] then CONFOPT="--prefix=/usr $*" else CONFOPT="$*" fi |
︙ | ︙ |
Changes to helper.fs.
︙ | ︙ | |||
53 54 55 56 57 58 59 | lastaddr# 0<> to online? ind-addr off !0key ; : dhtroot-off ( --- ) dhtroot-addr$ $off dhtroot-addr @ ?dup-IF net2o:dispose-addr THEN ; | < < < < < < < > > > > > > > > > > > | | 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | lastaddr# 0<> to online? ind-addr off !0key ; : dhtroot-off ( --- ) dhtroot-addr$ $off dhtroot-addr @ ?dup-IF net2o:dispose-addr THEN ; : pk:connect ( code data key u -- ) connect( [: .time ." Connect to: " dup hex. cr ;] $err ) net2o:new-context >o rdrop o to connection setup! dest-pk \ set our destination key +resend-cmd net2o:connect +flow-control +resend connect( [: .time ." Connected, o=" o hex. cr ;] $err ) ; : pk-addr:connect ( code data key u addr -- ) connect( [: .time ." Connect to: " dup hex. cr ;] $err ) net2o:new-context >o rdrop o to connection setup! ['] dests is send0-xt dest-addrs >stack dest-pk \ set our destination key +resend-cmd net2o:connect +flow-control +resend connect( [: .time ." Connected, o=" o hex. cr ;] $err ) ; Forward renat-all event: :>renat ( -- ) renat-all ; event: :>disconnect ( addr -- ) .disconnect-me ; : dht-beacon ( addr u -- ) <event :>renat main-up@ event> 2drop ; : +dht-beacon ( -- ) beacons# @ 0= IF ret-addr be@ ['] dht-beacon 0 .add-beacon THEN ; : dht-connect ( -- ) dht-connection ?dup-IF >o o to connection rdrop EXIT THEN tick-adjust 64@ 64-0= IF +get-time THEN $8 $8 dhtnick $@ nick>pk dhtroot online? IF +dht-beacon dhtroot-addr@ pk-addr:connect o to dht-connection ELSE 2drop 2drop THEN ; : dht-disconnect ( -- ) 0 addr dht-connection !@ ?dup-IF >o o to connection disconnect-me 0 to connection o> THEN ; Variable announced : subme ( -- ) announced @ IF |
︙ | ︙ |
Changes to net2o.fs.
︙ | ︙ | |||
1074 1075 1076 1077 1078 1079 1080 | new-addr punch-addrs >stack ELSE 2drop THEN ; : punch-wrap ( xt -- ) return-address { ret[ $10 ] } catch ret[ return-address $10 move throw ; | | | | > > > > | | 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 | new-addr punch-addrs >stack ELSE 2drop THEN ; : punch-wrap ( xt -- ) return-address { ret[ $10 ] } catch ret[ return-address $10 move throw ; : addrs-loop ( addrs xt -- ) [{: addrs xt :}l addrs $@ bounds ?DO I @ xt addr>sock cell +LOOP ;] punch-wrap ; : pings ( o:connection -- ) \G ping all addresses (why except the first one?) punch-addrs ['] ping-addr1 addrs-loop ; : punchs ( addr u o:connection -- ) \G send a reply to all addresses punch-addrs ['] send-punch addrs-loop 2drop ; : dests ( addr u o:connection -- ) \G send a reply to all addresses dest-addrs ['] send-punch addrs-loop 2drop ; \ send chunk \ branchless version using floating point : send-size ( u -- n ) min-size umax maxdata umin 1- |
︙ | ︙ |
Changes to wiki/commands.md.
1 2 | # Commands # | | | 1 2 3 4 5 6 7 8 9 10 | # Commands # Version 0.9.1-20191010. net2o separates data and commands. Data is passed through to higher layers, commands are interpreted when they arrive. For connection requests, a special bit is set, and the address then isn't used as address, but as IV for the opportunistic encoding. The command interpreter is a stack machine with two data types: 64 |
︙ | ︙ |