diff options
Diffstat (limited to 'usr.sbin/syslogd/tests/syslogd_forwarded_format_test.sh')
| -rw-r--r-- | usr.sbin/syslogd/tests/syslogd_forwarded_format_test.sh | 239 |
1 files changed, 239 insertions, 0 deletions
diff --git a/usr.sbin/syslogd/tests/syslogd_forwarded_format_test.sh b/usr.sbin/syslogd/tests/syslogd_forwarded_format_test.sh new file mode 100644 index 000000000000..b17627a935c8 --- /dev/null +++ b/usr.sbin/syslogd/tests/syslogd_forwarded_format_test.sh @@ -0,0 +1,239 @@ +#- +# SPDX-License-Identifier: BSD-2-Clause +# +# Copyright (c) 2024 Michal Scigocki <michal.os@hotmail.com> +# + +. $(atf_get_srcdir)/syslogd_format_test_common.sh + +SERVER_1_PORT="5140" +SERVER_2_PORT="5141" + +# Forwarded Message Tests +# Two servers, one sending syslog messages to the other over UDP +setup_forwarded_format_test() +{ + local format="$1" + local logfile="$2" + local pcapfile="$3" + + confirm_INET_support_or_skip + + # Begin packet capture for single packet + tcpdump --immediate-mode -c 1 -i lo0 -w "${pcapfile}" \ + dst port "${SERVER_1_PORT}" & + tcpdump_pid="$!" + + # Start first server: receive UDP, log to file + printf "user.debug\t${logfile}\n" > "$(config_filename ${SERVER_1_PORT})" + syslogd_start_on_port "${SERVER_1_PORT}" -O "${format}" + + # Start second server: send UDP, log to first server + printf "user.debug\t@127.0.0.1:${SERVER_1_PORT}\n" \ + > "$(config_filename ${SERVER_2_PORT})" + syslogd_start_on_port "${SERVER_2_PORT}" -O "${format}" + + # Send test syslog message + syslogd_log -4 -p user.debug -t "${TAG}" -h 127.0.0.1 \ + -P "${SERVER_2_PORT}" -H "${HOSTNAME}" "${MSG}" + + wait "${tcpdump_pid}" # Wait for packet capture to finish +} + +atf_test_case "O_flag_bsd_forwarded" "cleanup" +O_flag_bsd_forwarded_head() +{ + atf_set descr "bsd format test on a forwarded syslog message" + set_common_atf_metadata +} +O_flag_bsd_forwarded_body() +{ + local format="bsd" + local logfile="${PWD}/${format}_forwarded.log" + local pcapfile="${PWD}/${format}_forwarded.pcap" + + setup_forwarded_format_test "${format}" "${logfile}" "${pcapfile}" + + atf_expect_fail \ + "PR 220246 syslog -O bsd deviates from RFC 3164 recommendations" + atf_check -s exit:0 -o match:"${REGEX_RFC3164_LOGFILE}" cat "${logfile}" + atf_check -s exit:0 -e ignore -o match:"${REGEX_RFC3164_PAYLOAD}" \ + tcpdump -A -r "${pcapfile}" +} +O_flag_bsd_forwarded_cleanup() +{ + syslogd_stop_on_ports \ + "${SERVER_1_PORT}" \ + "${SERVER_2_PORT}" +} + +atf_test_case "O_flag_rfc3164_forwarded" "cleanup" +O_flag_rfc3164_forwarded_head() +{ + atf_set descr "rfc3164 format test on a forwarded syslog message" + set_common_atf_metadata +} +O_flag_rfc3164_forwarded_body() +{ + local format="rfc3164" + local logfile="${PWD}/${format}_forwarded.log" + local pcapfile="${PWD}/${format}_forwarded.pcap" + + setup_forwarded_format_test "${format}" "${logfile}" "${pcapfile}" + + atf_expect_fail \ + "PR 220246 syslog -O rfc3164 deviates from RFC 3164 recommendations" + atf_check -s exit:0 -o match:"${REGEX_RFC3164_LOGFILE}" cat "${logfile}" + atf_check -s exit:0 -e ignore -o match:"${REGEX_RFC3164_PAYLOAD}" \ + tcpdump -A -r "${pcapfile}" +} +O_flag_rfc3164_forwarded_cleanup() +{ + syslogd_stop_on_ports \ + "${SERVER_1_PORT}" \ + "${SERVER_2_PORT}" +} + +atf_test_case "O_flag_rfc3164strict_forwarded" "cleanup" +O_flag_rfc3164strict_forwarded_head() +{ + atf_set descr "rfc3164-strict format test on a forwarded syslog message" + set_common_atf_metadata +} +O_flag_rfc3164strict_forwarded_body() +{ + local format="rfc3164-strict" + local logfile="${PWD}/${format}_forwarded.log" + local pcapfile="${PWD}/${format}_forwarded.pcap" + + setup_forwarded_format_test "${format}" "${logfile}" "${pcapfile}" + + atf_check -s exit:0 -o match:"${REGEX_RFC3164_LOGFILE}" cat "${logfile}" + atf_check -s exit:0 -e ignore -o match:"${REGEX_RFC3164_PAYLOAD}" \ + tcpdump -A -r "${pcapfile}" +} +O_flag_rfc3164strict_forwarded_cleanup() +{ + syslogd_stop_on_ports \ + "${SYSLOGD_UDP_PORT_1}" \ + "${SYSLOGD_UDP_PORT_2}" +} + +atf_test_case "O_flag_syslog_forwarded" "cleanup" +O_flag_syslog_forwarded_head() +{ + atf_set descr "syslog format test on a forwarded syslog message" + set_common_atf_metadata +} +O_flag_syslog_forwarded_body() +{ + local format="syslog" + local logfile="${PWD}/${format}_forwarded.log" + local pcapfile="${PWD}/${format}_forwarded.pcap" + + setup_forwarded_format_test "${format}" "${logfile}" "${pcapfile}" + + atf_check -s exit:0 -o match:"${REGEX_RFC5424_LOGFILE}" cat "${logfile}" + atf_check -s exit:0 -e ignore -o match:"${REGEX_RFC5424_PAYLOAD}" \ + tcpdump -A -r "${pcapfile}" +} +O_flag_syslog_forwarded_cleanup() +{ + syslogd_stop_on_ports \ + "${SERVER_1_PORT}" \ + "${SERVER_2_PORT}" +} + +atf_test_case "O_flag_rfc5424_forwarded" "cleanup" +O_flag_rfc5424_forwarded_head() +{ + atf_set descr "rfc5424 format test on a forwarded syslog message" + set_common_atf_metadata +} +O_flag_rfc5424_forwarded_body() +{ + local format="rfc5424" + local logfile="${PWD}/${format}_forwarded.log" + local pcapfile="${PWD}/${format}_forwarded.pcap" + + setup_forwarded_format_test "${format}" "${logfile}" "${pcapfile}" + + atf_check -s exit:0 -o match:"${REGEX_RFC5424_LOGFILE}" cat "${logfile}" + atf_check -s exit:0 -e ignore -o match:"${REGEX_RFC5424_PAYLOAD}" \ + tcpdump -A -r "${pcapfile}" +} +O_flag_rfc5424_forwarded_cleanup() +{ + syslogd_stop_on_ports \ + "${SERVER_1_PORT}" \ + "${SERVER_2_PORT}" +} + +# Legacy bsd/rfc3164 format tests +# The legacy syntax was introduced in FreeBSD PR 7055, circa 1998 +atf_test_case "O_flag_bsd_forwarded_legacy" "cleanup" +O_flag_bsd_forwarded_legacy_head() +{ + atf_set descr "legacy bsd format test on a forwarded syslog message" + set_common_atf_metadata +} +O_flag_bsd_forwarded_legacy_body() +{ + local format="bsd" + local logfile="${PWD}/${format}_forwarded_legacy.log" + local pcapfile="${PWD}/${format}_forwarded.pcap" + + setup_forwarded_format_test "${format}" "${logfile}" "${pcapfile}" + + atf_check -s exit:0 -o match:"${REGEX_RFC3164_LEGACY_LOGFILE}" \ + cat "${logfile}" + atf_check -s exit:0 -e ignore \ + -o match:"${REGEX_RFC3164_LEGACY_PAYLOAD}" \ + tcpdump -A -r "${pcapfile}" +} +O_flag_bsd_forwarded_legacy_cleanup() +{ + syslogd_stop_on_ports \ + "${SERVER_1_PORT}" \ + "${SERVER_2_PORT}" +} + +atf_test_case "O_flag_rfc3164_forwarded_legacy" "cleanup" +O_flag_rfc3164_forwarded_legacy_head() +{ + atf_set descr \ + "legacy rfc3164 format test on a forwarded syslog message" + set_common_atf_metadata +} +O_flag_rfc3164_forwarded_legacy_body() +{ + local format="rfc3164" + local logfile="${PWD}/${format}_forwarded_legacy.log" + local pcapfile="${PWD}/${format}_forwarded.pcap" + + setup_forwarded_format_test "${format}" "${logfile}" "${pcapfile}" + + atf_check -s exit:0 -o match:"${REGEX_RFC3164_LEGACY_LOGFILE}" \ + cat "${logfile}" + atf_check -s exit:0 -e ignore \ + -o match:"${REGEX_RFC3164_LEGACY_PAYLOAD}" \ + tcpdump -A -r "${pcapfile}" +} +O_flag_rfc3164_forwarded_legacy_cleanup() +{ + syslogd_stop_on_ports \ + "${SERVER_1_PORT}" \ + "${SERVER_2_PORT}" +} + +atf_init_test_cases() +{ + atf_add_test_case "O_flag_bsd_forwarded" + atf_add_test_case "O_flag_rfc3164_forwarded" + atf_add_test_case "O_flag_rfc3164strict_forwarded" + atf_add_test_case "O_flag_syslog_forwarded" + atf_add_test_case "O_flag_rfc5424_forwarded" + + atf_add_test_case "O_flag_bsd_forwarded_legacy" + atf_add_test_case "O_flag_rfc3164_forwarded_legacy" +} |
