1# $OpenBSD: Makefile,v 1.4 2020/12/17 00:51:13 bluhm Exp $ 2 3PROGS = mc6send mc6recv mc6route 4WARNINGS = Yes 5CLEANFILES = stamp-* *.log 6MSG !!= echo $$RANDOM 7 8SEND = ${.OBJDIR}/mc6send 9RECV = ${.OBJDIR}/mc6recv 10ROUTE = ${.OBJDIR}/mc6route 11LOCALHOST = lo0 12LOCAL = ${LOCAL_IF} 13REMOTE = ${REMOTE_IF} 14OTHER = ${OTHER_IF} 15TARGET = ${TARGET_IF} 16GROUP_LOCAL = ff02::123 17 18# Currently receiving link-local packets via loopback does not work 19# due to wrong scope id. This has to be investigated. 20REGRESS_EXPECTED_FAILURES = run-localhost-local 21 22.if make (regress) || make (all) 23.BEGIN: 24.if ! empty (REMOTE_SSH) 25 ssh -t ${REMOTE_SSH} ${SUDO} true 26.endif 27.if ! empty(TARGET_SSH) 28 ssh -t ${TARGET_SSH} ${SUDO} true 29.endif 30.endif 31 32REGRESS_TARGETS += run-localhost 33run-localhost: 34 # send over localhost interface 35 ${RECV} -f recv.log -i ${LOCALHOST} -r 5 -- \ 36 ${SEND} -f send.log -i ${LOCALHOST} -m '${MSG}' 37 grep '> ${MSG}$$' send.log 38 grep '< ${MSG}$$' recv.log 39 40REGRESS_TARGETS += run-localhost-loop 41run-localhost-loop: 42 # explicitly enable loop back on multicast interface 43 ${RECV} -f recv.log -i ${LOCALHOST} -r 5 -- \ 44 ${SEND} -f send.log -i ${LOCALHOST} -l 1 -m '${MSG}' 45 grep '> ${MSG}$$' send.log 46 grep '< ${MSG}$$' recv.log 47 48REGRESS_TARGETS += run-localhost-loop0 49run-localhost-loop0: 50 # disable loop back on multicast interface, must fail 51 ${RECV} -f recv.log -i ${LOCALHOST} -n 1 -- \ 52 ${SEND} -f send.log -i ${LOCALHOST} -l 0 -m '${MSG}' 53 grep '> ${MSG}$$' send.log 54 ! grep '< ' recv.log 55 56REGRESS_TARGETS += run-localhost-ttl0 57run-localhost-ttl0: 58 # send over localhost interface 59 ${RECV} -f recv.log -i ${LOCALHOST} -r 5 -- \ 60 ${SEND} -f send.log -i ${LOCALHOST} -m '${MSG}' -t 0 61 grep '> ${MSG}$$' send.log 62 grep '< ${MSG}$$' recv.log 63 64REGRESS_TARGETS += run-localhost-local 65run-localhost-local: 66 # send over localhost interface 67 ${RECV} -f recv.log -g ${GROUP_LOCAL} -i ${LOCALHOST} -r 5 -- \ 68 ${SEND} -f send.log -g ${GROUP_LOCAL} -i ${LOCALHOST} -m '${MSG}' -t 0 69 grep '> ${MSG}$$' send.log 70 grep '< ${MSG}$$' recv.log 71 72REGRESS_TARGETS += run-localaddr 73run-localaddr: 74 # send over a local physical interface 75 ${RECV} -f recv.log -i ${LOCAL} -r 5 -- \ 76 ${SEND} -f send.log -i ${LOCAL} -m '${MSG}' 77 grep '> ${MSG}$$' send.log 78 grep '< ${MSG}$$' recv.log 79 80REGRESS_TARGETS += run-localaddr-loop0 81run-localaddr-loop0: 82 # send over physical interface to loopback, ttl is 0 83 ${RECV} -f recv.log -i ${LOCAL} -n 1 -- \ 84 ${SEND} -f send.log -i ${LOCAL} -l 0 -m '${MSG}' 85 grep '> ${MSG}$$' send.log 86 ! grep '< ' recv.log 87 88REGRESS_TARGETS += run-localaddr-ttl0 89run-localaddr-ttl0: 90 # send over physical interface to loopback, ttl is 0 91 ${RECV} -f recv.log -i ${LOCAL} -r 5 -- \ 92 ${SEND} -f send.log -i ${LOCAL} -m '${MSG}' -t 0 93 grep '> ${MSG}$$' send.log 94 grep '< ${MSG}$$' recv.log 95 96REGRESS_TARGETS += run-localaddr-local 97run-localaddr-local: 98 # send over physical interface to loopback, ttl is 0 99 ${RECV} -f recv.log -g ${GROUP_LOCAL} -i ${LOCAL} -r 5 -- \ 100 ${SEND} -f send.log -g ${GROUP_LOCAL} -i ${LOCAL} -m '${MSG}' -t 0 101 grep '> ${MSG}$$' send.log 102 grep '< ${MSG}$$' recv.log 103 104REGRESS_TARGETS += run-remoteaddr 105run-remoteaddr: 106 # send over a local physical interface 107 ${RECV} -f recv.log -i ${LOCAL} -r 5 -- \ 108 ssh ${REMOTE_SSH} ${SEND} -f ${.OBJDIR}/send.log \ 109 -i ${REMOTE} -m '${MSG}' 110 grep '< ${MSG}$$' recv.log 111 112REGRESS_TARGETS += run-remoteaddr-loop0 113run-remoteaddr-loop0: 114 # send over a local physical interface 115 ${RECV} -f recv.log -i ${LOCAL} -r 5 -- \ 116 ssh ${REMOTE_SSH} ${SEND} -f ${.OBJDIR}/send.log \ 117 -i ${REMOTE} -l 0 -m '${MSG}' 118 grep '< ${MSG}$$' recv.log 119 120REGRESS_TARGETS += run-remoteaddr-ttl0 121run-remoteaddr-ttl0: 122 # send over a local physical interface 123 ${RECV} -f recv.log -i ${LOCAL} -n 2 -- \ 124 ssh ${REMOTE_SSH} ${SEND} -f ${.OBJDIR}/send.log \ 125 -i ${REMOTE} -m '${MSG}' -t 0 126 ! grep '< ' recv.log 127 128REGRESS_TARGETS += run-forward 129run-forward: 130 # start multicast router, start receiver, start sender 131 ssh ${REMOTE_SSH} ${SUDO} pkill mcroute mc6route || true 132 ssh ${REMOTE_SSH} ${SUDO} ${ROUTE} -f ${.OBJDIR}/route.log \ 133 -b -i ${OTHER} -o ${REMOTE} -r 5 134.if empty(TARGET_SSH) 135 ${RECV} -f recv.log -i ${LOCAL} -r 5 -- \ 136 ${SEND} -f send.log \ 137 -i ${TARGET} -l 0 -m '${MSG}' -t 2 138 grep '> ${MSG}$$' send.log 139.else 140 ${RECV} -f recv.log -i ${LOCAL} -r 5 -- \ 141 ssh ${TARGET_SSH} ${SEND} -f ${.OBJDIR}/send.log \ 142 -i ${TARGET} -l 0 -m '${MSG}' -t 2 143.endif 144 grep '< ${MSG}$$' recv.log 145 146REGRESS_TARGETS += run-forward-ttl1 147run-forward-ttl1: 148 # try to get ttl 1 over multicast router, must fail 149 ssh ${REMOTE_SSH} ${SUDO} pkill mcroute mc6route || true 150 ssh ${REMOTE_SSH} ${SUDO} ${ROUTE} -f ${.OBJDIR}/route.log \ 151 -b -i ${OTHER} -o ${REMOTE} -n 3 152.if empty(TARGET_SSH) 153 ${RECV} -f recv.log -i ${LOCAL} -n 2 -- \ 154 ${SEND} -f send.log \ 155 -i ${TARGET} -l 0 -m '${MSG}' -t 1 156 grep '> ${MSG}$$' send.log 157.else 158 ${RECV} -f recv.log -i ${LOCAL} -n 2 -- \ 159 ssh ${TARGET_SSH} ${SEND} -f ${.OBJDIR}/send.log \ 160 -i ${TARGET} -l 0 -m '${MSG}' -t 1 161.endif 162 ! grep '< ' recv.log 163 164REGRESS_TARGETS += run-forward-local 165run-forward-local: 166 # try to get local multicast group over router, must fail 167 ssh ${REMOTE_SSH} ${SUDO} pkill mcroute mc6route || true 168 ssh ${REMOTE_SSH} ${SUDO} ${ROUTE} -f ${.OBJDIR}/route.log \ 169 -b -g ${GROUP_LOCAL} -i ${OTHER} -o ${REMOTE} -n 3 170.if empty(TARGET_SSH) 171 ${RECV} -f recv.log -g ${GROUP_LOCAL} -i ${LOCAL} -n 2 -- \ 172 ${SEND} -f send.log \ 173 -g ${GROUP_LOCAL} -i ${TARGET} -l 0 -m '${MSG}' -t 2 174 grep '> ${MSG}$$' send.log 175.else 176 ${RECV} -f recv.log -g ${GROUP_LOCAL} -i ${LOCAL} -n 2 -- \ 177 ssh ${TARGET_SSH} ${SEND} -f ${.OBJDIR}/send.log \ 178 -g ${GROUP_LOCAL} -i ${TARGET} -l 0 -m '${MSG}' -t 2 179.endif 180 ! grep '< ' recv.log 181 182stamp-remote-build: 183 ssh ${REMOTE_SSH} ${MAKE} -C ${.CURDIR} ${PROGS} 184 date >$@ 185 186stamp-target-build: 187 ssh ${TARGET_SSH} ${MAKE} -C ${.CURDIR} ${PROGS} 188 date >$@ 189 190${REGRESS_TARGETS}: ${PROGS} 191${REGRESS_TARGETS:M*-remoteaddr*}: stamp-remote-build 192${REGRESS_TARGETS:M*-forward*}: stamp-remote-build 193.if ! empty(TARGET_SSH) 194${REGRESS_TARGETS:M*-forward*}: stamp-target-build 195.endif 196 197.if empty(LOCAL) 198REGRESS_SKIP_TARGETS += ${REGRESS_TARGETS:M*-localaddr*} 199REGRESS_SKIP_TARGETS += ${REGRESS_TARGETS:M*-remoteaddr*} 200REGRESS_SKIP_TARGETS += ${REGRESS_TARGETS:M*-forward*} 201.endif 202.if empty(REMOTE) || empty(REMOTE_SSH) 203REGRESS_SKIP_TARGETS += ${REGRESS_TARGETS:M*-remoteaddr*} 204REGRESS_SKIP_TARGETS += ${REGRESS_TARGETS:M*-forward*} 205.endif 206.if empty(OTHER) || empty(TARGET) 207REGRESS_SKIP_TARGETS += ${REGRESS_TARGETS:M*-forward*} 208.endif 209 210check-setup: 211 ! ssh ${REMOTE_SSH} route -n get 224/4 212 ssh ${REMOTE_SSH} sysctl net.inet6.ip6.mforwarding | fgrep =1 213 214.include <bsd.regress.mk> 215 216stamp-remote-build: ${SRCS} 217stamp-target-build: ${SRCS} 218