HEX
Server: LiteSpeed
System: Linux sarajevo.maychu.cloud 5.14.0-503.40.1.el9_5.x86_64 #1 SMP PREEMPT_DYNAMIC Mon May 5 06:06:04 EDT 2025 x86_64
User: inqua407 (1189)
PHP: 8.3.17
Disabled: exec,execl,system,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,ini_alter,proc_open,dl,popen,show_source,posix_getpwuid,getpwuid,posix_geteuid,posix_getegid,posix_getgrgid,open_basedir,safe_mode_include_dir,pcntl_exec,pcntl_fork,proc_get_status,proc_nice,proc_terminate,pclose,virtual,openlog,popen,pclose,virtual,openlog,escapeshellcmd,escapeshellarg,dl,show_source,symlink,mail
Upload Files
File: //lib64/wireshark/cmake/UseAsn2Wrs.cmake
# - Convert ASN.1 file into C source and header files that can be used to create a wireshark dissector
#
#  A2W_OUTPUT_DIR   - directory where the generated packet-${PROTOCOL_NAME}.c is
#                     saved. The default location is meant for the Wireshark
#                     source tree. For external dissectors, set it to the
#                     absolute path (e.g. "${CMAKE_CURRENT_SOURCE_DIR}").

function(ASN2WRS)
	if(NOT PY_ASN2WRS)
		include(LocatePythonModule)
		locate_python_module(asn2wrs REQUIRED PATHS "${CMAKE_SOURCE_DIR}/tools")
	endif()

	if(NOT PROTO_OPT)
		set(PROTO_OPT -p ${PROTOCOL_NAME})
	elseif(PROTO_OPT STREQUAL "_EMPTY_")
		set(PROTO_OPT)
	endif()

	if(NOT A2W_OUTPUT_DIR)
		set(A2W_OUTPUT_DIR "${CMAKE_SOURCE_DIR}/epan/dissectors")
	endif()

	set(DISSECTOR "${A2W_OUTPUT_DIR}/packet-${PROTOCOL_NAME}.c")

	# Besides the file dependency (for timestamp comparison), add a target such
	# that other directories can request it to be built (ordering dependency).
	foreach(_v EXTRA_CNF EXPORT_DEPENDS)
		set(${_v}_targets)
		foreach(entry IN LISTS ${_v})
			string(REGEX MATCH "[^/]+-exp\\.cnf$" _exp_cnf_filename "${entry}")
			if(_exp_cnf_filename)
				list(APPEND ${_v}_targets generate-${_exp_cnf_filename})
			endif()
		endforeach()
	endforeach()

	# Creates a dissector in the source directory and store the timestamp.
	add_custom_command(
		OUTPUT packet-${PROTOCOL_NAME}-stamp
		COMMAND "${PYTHON_EXECUTABLE}"
			${PY_ASN2WRS}
			${A2W_FLAGS}
			${PROTO_OPT}
			-c "${CMAKE_CURRENT_SOURCE_DIR}/${PROTOCOL_NAME}.cnf"
			-s "${CMAKE_CURRENT_SOURCE_DIR}/packet-${PROTOCOL_NAME}-template"
			-D "${CMAKE_CURRENT_SOURCE_DIR}"
			-O "${A2W_OUTPUT_DIR}"
			${EXT_ASN_FILE_LIST} ${ASN_FILE_LIST} ${EXT_ASN_FILE_LIST_LATE}
		COMMAND
			"${PYTHON_EXECUTABLE}" -c
				"import shutil, sys; x,s,d=sys.argv; open(d, 'w'); shutil.copystat(s, d)"
				"${A2W_OUTPUT_DIR}/packet-${PROTOCOL_NAME}.c"
				packet-${PROTOCOL_NAME}-stamp
		DEPENDS
			"${PY_ASN2WRS}"
			${SRC_FILES}
			${EXTRA_CNF_targets}
			${EXTRA_CNF}
		VERBATIM
	)

	add_custom_target(generate_dissector-${PROTOCOL_NAME} ALL
		DEPENDS packet-${PROTOCOL_NAME}-stamp
	)

	foreach(_asn2wrs_export_file IN LISTS EXPORT_FILES)
		add_custom_command(
			OUTPUT ${_asn2wrs_export_file}
			COMMAND "${PYTHON_EXECUTABLE}"
				"${PY_ASN2WRS}"
				-E
				${A2W_FLAGS}
				${PROTO_OPT}
				-c "${CMAKE_CURRENT_SOURCE_DIR}/${PROTOCOL_NAME}.cnf"
				-D "${CMAKE_CURRENT_SOURCE_DIR}"
				${EXT_ASN_FILE_LIST} ${ASN_FILE_LIST} ${EXT_ASN_FILE_LIST_LATE}
			DEPENDS
				"${PY_ASN2WRS}"
				${SRC_FILES}
				${EXPORT_DEPENDS_targets}
				${EXPORT_DEPENDS}
		)
		# This target enables other dissectors to trigger the -exp cnf build
		add_custom_target(generate-${_asn2wrs_export_file}
			DEPENDS ${_asn2wrs_export_file}
		)
	endforeach()

endfunction()