xref: /openbsd-src/regress/sys/netinet6/mcast6/Makefile (revision b5d99089c2c33aceeba7ec4dbfc362d61bc408ea)
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