2019-08-26 11:44:53 +00:00
|
|
|
#!/bin/sh
|
|
|
|
|
2022-04-22 18:24:15 +00:00
|
|
|
# Skip this test if the legacy protocol is disabled
|
|
|
|
if grep -q "define DISABLE_LEGACY 1" "${0%/*}/../config.h"; then
|
|
|
|
exit 77
|
|
|
|
fi
|
|
|
|
|
2019-08-26 11:44:53 +00:00
|
|
|
. "${0%/*}/testlib.sh"
|
|
|
|
|
|
|
|
# Initialize two nodes
|
|
|
|
|
|
|
|
$tinc $c1 <<EOF
|
|
|
|
init foo
|
|
|
|
set DeviceType dummy
|
|
|
|
set Port 32753
|
|
|
|
set Address localhost
|
|
|
|
set PingTimeout 1
|
|
|
|
EOF
|
|
|
|
|
|
|
|
$tinc $c2 <<EOF
|
|
|
|
init bar
|
|
|
|
set DeviceType dummy
|
|
|
|
set Port 0
|
|
|
|
set PingTimeout 1
|
|
|
|
set MaxTimeout 1
|
|
|
|
EOF
|
|
|
|
|
|
|
|
# Exchange host config files
|
|
|
|
|
|
|
|
$tinc $c1 export | $tinc $c2 exchange | $tinc $c1 import
|
|
|
|
$tinc $c2 add ConnectTo foo
|
|
|
|
|
|
|
|
# Foo 1.1, bar 1.0
|
|
|
|
|
|
|
|
$tinc $c2 set ExperimentalProtocol no
|
|
|
|
$tinc $c1 del bar.Ed25519PublicKey
|
|
|
|
$tinc $c2 del foo.Ed25519PublicKey
|
|
|
|
|
|
|
|
$tinc $c1 start $r1
|
|
|
|
$tinc $c2 start $r2
|
|
|
|
|
|
|
|
sleep 1
|
|
|
|
|
|
|
|
test `$tinc $c1 dump reachable nodes | wc -l` = 2
|
|
|
|
test `$tinc $c2 dump reachable nodes | wc -l` = 2
|
|
|
|
|
|
|
|
$tinc $c2 stop
|
|
|
|
$tinc $c1 stop
|
|
|
|
|
|
|
|
test -z "`$tinc $c1 get bar.Ed25519PublicKey`"
|
|
|
|
test -z "`$tinc $c2 get foo.Ed25519PublicKey`"
|
|
|
|
|
|
|
|
# Foo 1.1, bar upgrades to 1.1
|
|
|
|
|
|
|
|
$tinc $c2 del ExperimentalProtocol
|
|
|
|
|
|
|
|
$tinc $c1 start $r1
|
|
|
|
$tinc $c2 start $r2
|
|
|
|
|
|
|
|
sleep 5
|
|
|
|
|
|
|
|
test `$tinc $c1 dump reachable nodes | wc -l` = 2
|
|
|
|
test `$tinc $c2 dump reachable nodes | wc -l` = 2
|
|
|
|
|
|
|
|
$tinc $c2 stop
|
|
|
|
$tinc $c1 stop
|
|
|
|
|
|
|
|
test -n "`$tinc $c1 get bar.Ed25519PublicKey`"
|
|
|
|
test -n "`$tinc $c2 get foo.Ed25519PublicKey`"
|
|
|
|
|
|
|
|
# Bar downgrades, must no longer be allowed to connect
|
|
|
|
|
|
|
|
$tinc $c2 set ExperimentalProtocol no
|
|
|
|
|
|
|
|
$tinc $c1 start $r1
|
|
|
|
$tinc $c2 start $r2
|
|
|
|
|
|
|
|
sleep 1
|
|
|
|
|
|
|
|
test `$tinc $c1 dump reachable nodes | wc -l` = 1
|
|
|
|
test `$tinc $c2 dump reachable nodes | wc -l` = 1
|
|
|
|
|
|
|
|
$tinc $c2 stop
|
|
|
|
$tinc $c1 stop
|