xref: /openbsd-src/regress/usr.sbin/snmpd/Makefile (revision 1434a006ead141f4a995b7fb3ab86f1b270b3ccc)
1# $OpenBSD: Makefile,v 1.14 2024/02/08 17:38:41 martijn Exp $
2# Regress tests for snmpd
3
4PROG =				snmpd_regress
5SRCS =				snmpd_regress.c agentx.c backend.c snmp.c
6SRCS+=				transport.c
7
8LDADD=				-lutil
9DPADD=				${LIBUTIL}
10
11SNMPD ?=			/usr/sbin/snmpd
12SNMPD_START =			${SUDO} ${SNMPD} -Nvvdf ${.CURDIR}/snmpd.conf >> snmpd.log 2>&1 &
13
14REGRESS_CLEANUP =		cleanup
15REGRESS_SETUP_ONCE =		setup
16CLEANFILES =			snmpd.log
17
18setup:
19	-${SUDO} /etc/rc.d/snmpd stop
20	> snmpd.log
21
22cleanup:
23	-${SUDO} pkill -f ${SNMPD}
24	@sleep 1
25	-${SUDO} rcctl restart snmpd
26
27REGRESS_TARGETS +=	 run-snmpd
28run-snmpd:
29	-${SUDO} pkill -f ${SNMPD}
30	@sleep 1
31	${SUDO} env OBJDIR=${.OBJDIR} sh ${.CURDIR}/snmpd.sh
32
33# AgentX administrative commands: application_agentx.c
34AGENTX_TARGETS =		agentx_open_nnbo
35AGENTX_TARGETS+=		agentx_open_nbo
36AGENTX_TARGETS+=		agentx_open_invalidversion
37AGENTX_TARGETS+=		agentx_open_ignore_sessionid
38AGENTX_TARGETS+=		agentx_open_invalid_oid
39AGENTX_TARGETS+=		agentx_open_descr_too_long
40AGENTX_TARGETS+=		agentx_open_descr_invalid
41AGENTX_TARGETS+=		agentx_open_context
42AGENTX_TARGETS+=		agentx_open_instance_registration
43AGENTX_TARGETS+=		agentx_open_new_index
44AGENTX_TARGETS+=		agentx_open_any_index
45AGENTX_TARGETS+=		agentx_ping_notopen
46AGENTX_TARGETS+=		agentx_ping_invalid_sessionid
47AGENTX_TARGETS+=		agentx_ping_default
48AGENTX_TARGETS+=		agentx_ping_context
49AGENTX_TARGETS+=		agentx_ping_invalid_version
50AGENTX_TARGETS+=		agentx_ping_instance_registration
51AGENTX_TARGETS+=		agentx_ping_new_index
52AGENTX_TARGETS+=		agentx_ping_any_index
53AGENTX_TARGETS+=		agentx_ping_nbo_nnbo
54AGENTX_TARGETS+=		agentx_ping_nnbo_nbo
55AGENTX_TARGETS+=		agentx_ping_invalid_version_close
56AGENTX_TARGETS+=		agentx_close_notopen
57AGENTX_TARGETS+=		agentx_close_reasonother
58AGENTX_TARGETS+=		agentx_close_reasonparseerror
59AGENTX_TARGETS+=		agentx_close_reasonprotocolerror
60AGENTX_TARGETS+=		agentx_close_reasontimouts
61AGENTX_TARGETS+=		agentx_close_reasonshutdown
62AGENTX_TARGETS+=		agentx_close_reasonbymanager
63AGENTX_TARGETS+=		agentx_close_reasoninvalid
64AGENTX_TARGETS+=		agentx_close_single
65AGENTX_TARGETS+=		agentx_close_notowned
66AGENTX_TARGETS+=		agentx_close_invalid_sessionid
67AGENTX_TARGETS+=		agentx_close_context
68AGENTX_TARGETS+=		agentx_close_invalid_version
69AGENTX_TARGETS+=		agentx_close_instance_registration
70AGENTX_TARGETS+=		agentx_close_new_index
71AGENTX_TARGETS+=		agentx_close_any_index
72AGENTX_TARGETS+=		agentx_close_nnbo_nbo
73AGENTX_TARGETS+=		agentx_register_notopen
74AGENTX_TARGETS+=		agentx_register_invalid_sessionid
75AGENTX_TARGETS+=		agentx_register_default
76AGENTX_TARGETS+=		agentx_register_context
77AGENTX_TARGETS+=		agentx_register_invalid_version
78AGENTX_TARGETS+=		agentx_register_instance_registration
79AGENTX_TARGETS+=		agentx_register_new_index
80AGENTX_TARGETS+=		agentx_register_duplicate_self
81AGENTX_TARGETS+=		agentx_register_duplicate_twocon
82AGENTX_TARGETS+=		agentx_register_duplicate_priority
83AGENTX_TARGETS+=		agentx_register_range
84AGENTX_TARGETS+=		agentx_register_range_invalidupperbound
85AGENTX_TARGETS+=		agentx_register_range_single
86AGENTX_TARGETS+=		agentx_register_range_overlap_single
87AGENTX_TARGETS+=		agentx_register_single_overlap_range
88AGENTX_TARGETS+=		agentx_register_range_overlap_range
89AGENTX_TARGETS+=		agentx_register_below
90AGENTX_TARGETS+=		agentx_register_above
91AGENTX_TARGETS+=		agentx_register_restricted
92AGENTX_TARGETS+=		agentx_unregister_notopen
93AGENTX_TARGETS+=		agentx_unregister_invalid_sessionid
94AGENTX_TARGETS+=		agentx_unregister_notregistered
95AGENTX_TARGETS+=		agentx_unregister_notregistered
96AGENTX_TARGETS+=		agentx_unregister_single
97AGENTX_TARGETS+=		agentx_unregister_single_notowned
98AGENTX_TARGETS+=		agentx_unregister_range
99AGENTX_TARGETS+=		agentx_unregister_range_single
100# Final choice on if this is the desired behaviour pending on tech@
101REGRESS_EXPECTED_FAILURES+=	agentx_unregister_range_subset
102AGENTX_TARGETS+=		agentx_unregister_range_subset
103AGENTX_TARGETS+=		agentx_unregister_range_extra
104AGENTX_TARGETS+=		agentx_unregister_range_priority
105AGENTX_TARGETS+=		agentx_unregister_range_notowned
106
107REGRESS_TARGETS+=		${AGENTX_TARGETS}
108agentx: ${AGENTX_TARGETS}
109
110# SNMP application core logic: application.c
111BACKEND_TARGETS+=		backend_get_integer
112BACKEND_TARGETS+=		backend_get_octetstring
113BACKEND_TARGETS+=		backend_get_objectidentifier
114BACKEND_TARGETS+=		backend_get_ipaddress
115BACKEND_TARGETS+=		backend_get_counter32
116BACKEND_TARGETS+=		backend_get_gauge32
117BACKEND_TARGETS+=		backend_get_timeticks
118BACKEND_TARGETS+=		backend_get_opaque
119BACKEND_TARGETS+=		backend_get_counter64
120BACKEND_TARGETS+=		backend_get_nosuchobject
121BACKEND_TARGETS+=		backend_get_nosuchinstance
122BACKEND_TARGETS+=		backend_get_endofmibview
123BACKEND_TARGETS+=		backend_get_two_single_backend
124BACKEND_TARGETS+=		backend_get_two_double_backend
125BACKEND_TARGETS+=		backend_get_wrongorder
126BACKEND_TARGETS+=		backend_get_toofew
127BACKEND_TARGETS+=		backend_get_toomany
128BACKEND_TARGETS+=		backend_get_instance
129BACKEND_TARGETS+=		backend_get_instance_below
130BACKEND_TARGETS+=		backend_get_timeout_default
131REGRESS_SLOW_TARGETS+=		backend_get_timeout_default
132BACKEND_TARGETS+=		backend_get_timeout_session_lower
133REGRESS_SLOW_TARGETS+=		backend_get_timeout_session_lower
134BACKEND_TARGETS+=		backend_get_timeout_session_higher
135REGRESS_SLOW_TARGETS+=		backend_get_timeout_session_higher
136BACKEND_TARGETS+=		backend_get_timeout_region_lower
137REGRESS_SLOW_TARGETS+=		backend_get_timeout_region_lower
138BACKEND_TARGETS+=		backend_get_timeout_region_higher
139REGRESS_SLOW_TARGETS+=		backend_get_timeout_region_higher
140BACKEND_TARGETS+=		backend_get_priority_lower
141BACKEND_TARGETS+=		backend_get_priority_higher
142BACKEND_TARGETS+=		backend_get_priority_below_lower
143BACKEND_TARGETS+=		backend_get_priority_below_higher
144BACKEND_TARGETS+=		backend_get_close
145BACKEND_TARGETS+=		backend_get_close_overlap
146BACKEND_TARGETS+=		backend_get_disappear
147BACKEND_TARGETS+=		backend_get_disappear_overlap
148BACKEND_TARGETS+=		backend_get_disappear_doublesession
149BACKEND_TARGETS+=		backend_get_octetstring_max
150BACKEND_TARGETS+=		backend_get_octetstring_too_long
151BACKEND_TARGETS+=		backend_get_ipaddress_too_short
152BACKEND_TARGETS+=		backend_get_ipaddress_too_long
153BACKEND_TARGETS+=		backend_get_opaque_non_ber
154BACKEND_TARGETS+=		backend_get_opaque_double_value
155BACKEND_TARGETS+=		backend_getnext_selfbound
156BACKEND_TARGETS+=		backend_getnext_lowerbound
157BACKEND_TARGETS+=		backend_getnext_lowerbound_self
158BACKEND_TARGETS+=		backend_getnext_lowerbound_highprio
159BACKEND_TARGETS+=		backend_getnext_lowerbound_lowprio
160BACKEND_TARGETS+=		backend_getnext_sibling
161BACKEND_TARGETS+=		backend_getnext_child_gap
162BACKEND_TARGETS+=		backend_getnext_nosuchobject
163BACKEND_TARGETS+=		backend_getnext_nosuchinstance
164BACKEND_TARGETS+=		backend_getnext_endofmibview
165BACKEND_TARGETS+=		backend_getnext_inclusive
166BACKEND_TARGETS+=		backend_getnext_jumpnext
167BACKEND_TARGETS+=		backend_getnext_jumpnext_endofmibview
168BACKEND_TARGETS+=		backend_getnext_jump_up
169BACKEND_TARGETS+=		backend_getnext_two_single_backend
170BACKEND_TARGETS+=		backend_getnext_two_double_backend
171BACKEND_TARGETS+=		backend_getnext_instance_below
172BACKEND_TARGETS+=		backend_getnext_instance
173BACKEND_TARGETS+=		backend_getnext_instance_exact
174BACKEND_TARGETS+=		backend_getnext_instance_ignore
175BACKEND_TARGETS+=		backend_getnext_backwards
176BACKEND_TARGETS+=		backend_getnext_stale
177BACKEND_TARGETS+=		backend_getnext_inclusive_backwards
178BACKEND_TARGETS+=		backend_getnext_toofew
179BACKEND_TARGETS+=		backend_getnext_toomany
180BACKEND_TARGETS+=		backend_getnext_response_equal_end
181BACKEND_TARGETS+=		backend_getnext_instance_below_region_before_instance
182BACKEND_TARGETS+=		backend_getnext_instance_below_region_on_instance
183BACKEND_TARGETS+=		backend_getnext_instance_below_region_below_instance
184BACKEND_TARGETS+=		backend_getbulk_nonrep_zero_maxrep_one
185BACKEND_TARGETS+=		backend_getbulk_nonrep_zero_maxrep_two
186BACKEND_TARGETS+=		backend_getbulk_nonrep_one_maxrep_one
187BACKEND_TARGETS+=		backend_getbulk_nonrep_one_maxrep_two
188BACKEND_TARGETS+=		backend_getbulk_nonrep_two_maxrep_two
189BACKEND_TARGETS+=		backend_getbulk_nonrep_negative
190BACKEND_TARGETS+=		backend_getbulk_endofmibview
191BACKEND_TARGETS+=		backend_getbulk_endofmibview_second_rep
192BACKEND_TARGETS+=		backend_getbulk_endofmibview_two_varbinds
193BACKEND_TARGETS+=		backend_error_get_toobig
194BACKEND_TARGETS+=		backend_error_get_nosuchname
195BACKEND_TARGETS+=		backend_error_get_badvalue
196BACKEND_TARGETS+=		backend_error_get_readonly
197BACKEND_TARGETS+=		backend_error_get_generr
198BACKEND_TARGETS+=		backend_error_get_wrongtype
199BACKEND_TARGETS+=		backend_error_get_wronglength
200BACKEND_TARGETS+=		backend_error_get_wrongvalue
201BACKEND_TARGETS+=		backend_error_get_nocreation
202BACKEND_TARGETS+=		backend_error_get_inconsistentvalue
203BACKEND_TARGETS+=		backend_error_get_commitfailed
204BACKEND_TARGETS+=		backend_error_get_undofailed
205BACKEND_TARGETS+=		backend_error_get_authorizationerror
206BACKEND_TARGETS+=		backend_error_get_notwritable
207BACKEND_TARGETS+=		backend_error_get_inconsistentname
208BACKEND_TARGETS+=		backend_error_get_openfailed
209BACKEND_TARGETS+=		backend_error_get_notopen
210BACKEND_TARGETS+=		backend_error_get_indexwrongtype
211BACKEND_TARGETS+=		backend_error_get_indexalreadyallocated
212BACKEND_TARGETS+=		backend_error_get_indexnonavailable
213BACKEND_TARGETS+=		backend_error_get_indexnotallocated
214BACKEND_TARGETS+=		backend_error_get_duplicateregistration
215BACKEND_TARGETS+=		backend_error_get_requestdenied
216BACKEND_TARGETS+=		backend_error_get_processingerror
217BACKEND_TARGETS+=		backend_error_get_nonstandard
218BACKEND_TARGETS+=		backend_error_getnext_toobig
219BACKEND_TARGETS+=		backend_error_getnext_nosuchname
220BACKEND_TARGETS+=		backend_error_getnext_badvalue
221BACKEND_TARGETS+=		backend_error_getnext_readonly
222BACKEND_TARGETS+=		backend_error_getnext_generr
223BACKEND_TARGETS+=		backend_error_getnext_noaccess
224BACKEND_TARGETS+=		backend_error_getnext_wrongtype
225BACKEND_TARGETS+=		backend_error_getnext_wronglength
226BACKEND_TARGETS+=		backend_error_getnext_wrongencoding
227BACKEND_TARGETS+=		backend_error_getnext_wrongvalue
228BACKEND_TARGETS+=		backend_error_getnext_nocreation
229BACKEND_TARGETS+=		backend_error_getnext_inconsistentvalue
230BACKEND_TARGETS+=		backend_error_getnext_resourceunavailable
231BACKEND_TARGETS+=		backend_error_getnext_commitfailed
232BACKEND_TARGETS+=		backend_error_getnext_undofailed
233BACKEND_TARGETS+=		backend_error_getnext_notwritable
234BACKEND_TARGETS+=		backend_error_getnext_inconsistentname
235BACKEND_TARGETS+=		backend_error_getnext_openfailed
236BACKEND_TARGETS+=		backend_error_getnext_notopen
237BACKEND_TARGETS+=		backend_error_getnext_indexwrongtype
238BACKEND_TARGETS+=		backend_error_getnext_indexalreadyallocated
239BACKEND_TARGETS+=		backend_error_getnext_indexnonavailable
240BACKEND_TARGETS+=		backend_error_getnext_indexnotallocated
241BACKEND_TARGETS+=		backend_error_getnext_unsupportedcontext
242BACKEND_TARGETS+=		backend_error_getnext_duplicateregistration
243BACKEND_TARGETS+=		backend_error_getnext_unknownregistration
244BACKEND_TARGETS+=		backend_error_getnext_parseerror
245BACKEND_TARGETS+=		backend_error_getnext_requestdenied
246BACKEND_TARGETS+=		backend_error_getnext_processingerror
247BACKEND_TARGETS+=		backend_error_getnext_nonstandard
248BACKEND_TARGETS+=		backend_error_getbulk_firstrepetition
249BACKEND_TARGETS+=		backend_error_getbulk_secondrepetition
250
251REGRESS_TARGETS+=		${BACKEND_TARGETS}
252backend: ${BACKEND_TARGETS}
253
254SNMP_TARGETS+=			snmp_v3_usm_noauthpriv
255
256REGRESS_TARGETS+=		${SNMP_TARGETS}
257snmp: ${SNMP_TARGETS}
258
259TRANSPORT_TARGETS+=		transport_tcp_get
260TRANSPORT_TARGETS+=		transport_tcp_disconnect
261TRANSPORT_TARGETS+=		transport_tcp_double_get_disconnect
262
263REGRESS_TARGETS+=		${TRANSPORT_TARGETS}
264transport: ${TRANSPORT_TARGETS}
265
266.PHONY:				agentx backend snmp transport
267
268${REGRESS_TARGETS}: snmpd_regress
269# Always start snmpd if it's not running
270	@pgrep -q snmpd || ( \
271		printf "%s\n" "${SNMPD_START}"; \
272		rm -f /tmp/agentx 2>/dev/null; \
273		${SNMPD_START} \
274		i=0; \
275		while [ ! -S /tmp/agentx ]; do \
276			i=$$((i + 1)); \
277			[ $$i -eq 100 ] && ( \
278				printf "Failed to start snmpd\n"; >&2 \
279				${SUDO} pkill -f ${SNMPD}; \
280				exit 1; \
281			); \
282			sleep 0.1; \
283		done \
284	)
285	./snmpd_regress ${SNMPD_REGRESS_FLAGS} $@
286# Make sure that snmpd hasn't crashed in the meantime.
287	@sleep 0.01
288	@pgrep -q snmpd
289
290.include <bsd.regress.mk>
291