summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbluhm <bluhm@openbsd.org>2016-10-19 13:37:18 +0000
committerbluhm <bluhm@openbsd.org>2016-10-19 13:37:18 +0000
commitf516a404c48ce141c39a48829b7e8ad3ac382596 (patch)
tree121ae7f36564c58e7a19192d0ebe3dc0822eb816
parentdocument -F which somehow escaped documentation (diff)
downloadwireguard-openbsd-f516a404c48ce141c39a48829b7e8ad3ac382596.tar.xz
wireguard-openbsd-f516a404c48ce141c39a48829b7e8ad3ac382596.zip
Do not change routes during test run, but expect that everything
is setup correctly before. Use make check-setup to verify that.
-rw-r--r--regress/sys/netinet/pmtu/Makefile75
-rw-r--r--regress/sys/netinet/pmtu/README14
2 files changed, 68 insertions, 21 deletions
diff --git a/regress/sys/netinet/pmtu/Makefile b/regress/sys/netinet/pmtu/Makefile
index 47b142e47e0..61e95b04ecf 100644
--- a/regress/sys/netinet/pmtu/Makefile
+++ b/regress/sys/netinet/pmtu/Makefile
@@ -1,4 +1,4 @@
-# $OpenBSD: Makefile,v 1.3 2016/09/02 21:30:34 bluhm Exp $
+# $OpenBSD: Makefile,v 1.4 2016/10/19 13:37:18 bluhm Exp $
# The following ports must be installed:
#
@@ -27,6 +27,8 @@ regress:
# Adapt interface and addresse variables to your local setup.
#
LOCAL_IF ?=
+LOCAL_MAC ?=
+REMOTE_MAC ?=
REMOTE_SSH ?=
LOCAL_ADDR ?=
@@ -40,26 +42,26 @@ FAKE_NET6 ?=
FAKE_NET_ADDR6 ?=
.if empty (LOCAL_IF) || empty (REMOTE_SSH) || \
+ empty (LOCAL_MAC) || empty (REMOTE_MAC) || \
empty (LOCAL_ADDR) || empty (LOCAL_ADDR6) || \
empty (REMOTE_ADDR) || empty (REMOTE_ADDR6) || \
empty (FAKE_NET) || empty (FAKE_NET6) || \
empty (FAKE_NET_ADDR) || empty (FAKE_NET_ADDR6)
regress:
@echo This tests needs a remote machine to operate on
- @echo LOCAL_IF REMOTE_SSH LOCAL_ADDR LOCAL_ADDR6 REMOTE_ADDR
- @echo REMOTE_ADDR6 FAKE_NET FAKE_NET6 FAKE_NET_ADDR FAKE_NET_ADDR6
+ @echo LOCAL_IF REMOTE_SSH LOCAL_MAC REMOTE_MAC LOCAL_ADDR LOCAL_ADDR6
+ @echo REMOTE_ADDR REMOTE_ADDR6 FAKE_NET FAKE_NET6 FAKE_NET_ADDR
+ @echo FAKE_NET_ADDR6
@echo are empty. Fill out these variables for additional tests.
@echo SKIPPED
.endif
-.if ! empty (REMOTE_SSH)
.if make (regress) || make (all)
.BEGIN: pf.conf addr.py
@echo
${SUDO} true
ssh -t ${REMOTE_SSH} ${SUDO} true
.endif
-.endif
depend: addr.py
@@ -90,20 +92,12 @@ PYTHON = PYTHONPATH=${.OBJDIR} python2.7 -u ${.CURDIR}/
# Clear local and remote path mtu routes, set fake net route
reset-route:
@echo '\n======== $@ ========'
- -${SUDO} route -n delete -host ${REMOTE_ADDR}
- ssh ${REMOTE_SSH} ${SUDO} sh -c "'\
- route -n delete -inet -host ${LOCAL_ADDR};\
- route -n delete -inet -net ${FAKE_NET};\
- route -n delete -inet -host ${FAKE_NET_ADDR};\
- route -n add -inet -net ${FAKE_NET} ${LOCAL_ADDR}'"
+ ${SUDO} route -n delete -inet -host ${REMOTE_ADDR} || true
+ ssh ${REMOTE_SSH} ${SUDO} route -n delete -inet -host ${FAKE_NET_ADDR} || true
reset-route6:
@echo '\n======== $@ ========'
- -${SUDO} route -n delete -host ${REMOTE_ADDR6}
- ssh ${REMOTE_SSH} ${SUDO} sh -c "'\
- route -n delete -inet6 -host ${LOCAL_ADDR6};\
- route -n delete -inet6 -net ${FAKE_NET6};\
- route -n delete -inet6 -host ${FAKE_NET_ADDR6};\
- route -n add -inet6 -net ${FAKE_NET6} ${LOCAL_ADDR6}'"
+ ${SUDO} route -n delete -inet6 -host ${REMOTE_ADDR6} || true
+ ssh ${REMOTE_SSH} ${SUDO} route -n delete -inet6 -host ${FAKE_NET_ADDR6} || true
# Clear host routes and ping all addresses. This ensures that
# the IP addresses are configured and all routing table are set up
@@ -154,4 +148,51 @@ REGRESS_TARGETS = ${TARGETS:S/^/run-regress-/}
CLEANFILES += addr.py *.pyc *.log *.route
+.PHONY: check-setup check-setup-local check-setup-remote
+
+# Check wether the address, route and remote setup is correct
+check-setup: check-setup-local check-setup-remote
+
+check-setup-local:
+ @echo '\n======== $@ ========'
+ ping -n -c 1 ${LOCAL_ADDR} # LOCAL_ADDR
+ route -n get -inet ${LOCAL_ADDR} | grep -q 'flags: .*LOCAL' # LOCAL_ADDR
+ arp -na | grep -q '^${LOCAL_ADDR} * ${LOCAL_MAC} * ${LOCAL_IF} permanent' # LOCAL_ADDR LOCAL_MAC LOCAL_IF
+ ping -n -c 1 ${REMOTE_ADDR} # REMOTE_ADDR
+ route -n get -inet ${REMOTE_ADDR} | fgrep -q 'interface: ${LOCAL_IF}' # REMOTE_ADDR LOCAL_IF
+ ! ping -n -c 1 -w 1 ${FAKE_NET_ADDR} # FAKE_NET_ADDR
+ route -n get -inet ${FAKE_NET_ADDR} | grep -q 'flags: .*BLACKHOLE' # FAKE_NET_ADDR
+ route -n get -inet -net ${FAKE_NET} | grep -q 'flags: .*BLACKHOLE' # FAKE_NET
+ ping6 -n -c 1 ${LOCAL_ADDR6} # LOCAL_ADDR6
+ route -n get -inet6 ${LOCAL_ADDR6} | grep -q 'flags: .*LOCAL' # LOCAL_ADDR6
+ ndp -na | grep -q '^${LOCAL_ADDR6} * ${LOCAL_MAC} * ${LOCAL_IF} permanent' # LOCAL_ADDR6 LOCAL_MAC LOCAL_IF
+ ping6 -n -c 1 ${REMOTE_ADDR6} # REMOTE_ADDR6
+ route -n get -inet6 ${REMOTE_ADDR6} | fgrep -q 'interface: ${LOCAL_IF}' # REMOTE_ADDR6 LOCAL_IF
+ ! ping -n -c 1 -w 1 ${FAKE_NET_ADDR6} # FAKE_NET_ADDR6
+ route -n get -inet6 ${FAKE_NET_ADDR6} | grep -q 'flags: .*BLACKHOLE' # FAKE_NET_ADDR6
+ route -n get -inet6 -net ${FAKE_NET6} | grep -q 'flags: .*BLACKHOLE' # FAKE_NET6
+
+check-setup-remote:
+ @echo '\n======== $@ ========'
+ ssh ${REMOTE_SSH} ping -n -c 1 ${REMOTE_ADDR} # REMOTE_ADDR
+ ssh ${REMOTE_SSH} route -n get -inet ${REMOTE_ADDR} | grep -q 'flags: .*LOCAL' # REMOTE_ADDR
+ ssh ${REMOTE_SSH} arp -na | grep -q '^${REMOTE_ADDR} * ${REMOTE_MAC} * .* permanent' # REMOTE_ADDR REMOTE_MAC
+ ssh ${REMOTE_SSH} ping -n -c 1 ${LOCAL_ADDR} # LOCAL_ADDR
+.for ip in FAKE_NET FAKE_NET_ADDR
+ ssh ${REMOTE_SSH} route -n get -inet ${${ip}} | fgrep -q 'gateway: ${LOCAL_ADDR}' # ${ip} LOCAL_ADDR
+.endfor
+ ssh ${REMOTE_SSH} ping6 -n -c 1 ${REMOTE_ADDR6} # REMOTE_ADDR6
+ ssh ${REMOTE_SSH} route -n get -inet6 ${REMOTE_ADDR6} | grep -q 'flags: .*LOCAL' # REMOTE_ADDR6
+ ssh ${REMOTE_SSH} ndp -na | grep -q '^${REMOTE_ADDR6} * ${REMOTE_MAC} * .* permanent' # REMOTE_ADDR6 REMOTE_MAC
+ ssh ${REMOTE_SSH} ping6 -n -c 1 ${LOCAL_ADDR6} # LOCAL_ADDR6
+.for ip in FAKE_NET6 FAKE_NET_ADDR6
+ ssh ${REMOTE_SSH} route -n get -inet6 ${${ip}} | fgrep -q 'gateway: ${LOCAL_ADDR6}' # ${ip} LOCAL_ADDR6
+.endfor
+.for af in inet inet6
+ ssh ${ECO_SSH} netstat -a -f ${af} -p tcp | fgrep ' *.chargen '
+.endfor
+ ssh ${ECO_SSH} netstat -a -f inet6 -p udp | fgrep ' *.echo '
+ ssh ${REMOTE_SSH} ${SUDO} pfctl -sr | grep '^anchor "regress" all$$'
+ ssh ${REMOTE_SSH} ${SUDO} pfctl -si | grep '^Status: Enabled '
+
.include <bsd.regress.mk>
diff --git a/regress/sys/netinet/pmtu/README b/regress/sys/netinet/pmtu/README
index ae08e5c2cec..092b24b9cb7 100644
--- a/regress/sys/netinet/pmtu/README
+++ b/regress/sys/netinet/pmtu/README
@@ -41,6 +41,8 @@ fe80::725f:caff:fe21:8d70%tap0 q70
lladdr fe:e1:ba:d0:d5:6d up
inet 10.188.70.17 255.255.255.0
inet6 fdd7:e83e:66bc:70:3e97:eff:fea7:9b2
+!route add -inet 10.188.219.0/24 127.0.0.1 -blackhole
+!route add -inet6 fdd7:e83e:66bc:219::/64 ::1 -blackhole
- My qemu where the kernel under test is running
@@ -48,6 +50,8 @@ inet6 fdd7:e83e:66bc:70:3e97:eff:fea7:9b2
lladdr 70:5f:ca:21:8d:70
inet 10.188.70.70 255.255.255.0
inet6 fdd7:e83e:66bc:70:725f:caff:fe21:8d70
+!route add -inet 10.188.219.0/24 10.188.70.17
+!route add -inet6 fdd7:e83e:66bc:219::/64 fdd7:e83e:66bc:70:3e97:eff:fea7:9b2
/etc/inetd.conf
chargen stream tcp nowait root internal
@@ -67,10 +71,12 @@ REMOTE_SSH=q70
LOCAL_ADDR=10.188.70.17
REMOTE_ADDR=10.188.70.70
-FAKE_NET=10.188.188.0/24
-FAKE_NET_ADDR=10.188.188.188
+FAKE_NET=10.188.219.0/24
+FAKE_NET_ADDR=10.188.219.188
LOCAL_ADDR6=fdd7:e83e:66bc:70:3e97:eff:fea7:9b2
REMOTE_ADDR6=fdd7:e83e:66bc:70:725f:caff:fe21:8d70
-FAKE_NET6=fdd7:e83e:66bc:188::/64
-FAKE_NET_ADDR6=fdd7:e83e:66bc:188::188
+FAKE_NET6=fdd7:e83e:66bc:219::/64
+FAKE_NET_ADDR6=fdd7:e83e:66bc:219::188
+
+- Fix your configuration until make check-setup passes