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