xref: /freebsd-src/usr.sbin/syslogd/tests/syslogd_test_common.sh (revision 1da99b479a741a49bfa9188925bca52345b67e68)
166a022a3SMichal Scigocki#-
266a022a3SMichal Scigocki# SPDX-License-Identifier: BSD-2-Clause
366a022a3SMichal Scigocki#
466a022a3SMichal Scigocki# Copyright (c) 2021, 2023 The FreeBSD Foundation
566a022a3SMichal Scigocki#
666a022a3SMichal Scigocki# This software was developed by Mark Johnston under sponsorship from
766a022a3SMichal Scigocki# the FreeBSD Foundation.
866a022a3SMichal Scigocki#
966a022a3SMichal Scigocki# This software was developed by Jake Freeland under sponsorship from
1066a022a3SMichal Scigocki# the FreeBSD Foundation.
1166a022a3SMichal Scigocki#
1266a022a3SMichal Scigocki
1366a022a3SMichal Scigockireadonly SYSLOGD_UDP_PORT="5140"
1466a022a3SMichal Scigockireadonly SYSLOGD_CONFIG="${PWD}/syslog.conf"
1566a022a3SMichal Scigockireadonly SYSLOGD_LOCAL_SOCKET="${PWD}/log.sock"
1666a022a3SMichal Scigockireadonly SYSLOGD_PIDFILE="${PWD}/syslogd.pid"
1766a022a3SMichal Scigockireadonly SYSLOGD_LOCAL_PRIVSOCKET="${PWD}/logpriv.sock"
1866a022a3SMichal Scigocki
1966a022a3SMichal Scigocki# Start a private syslogd instance.
2066a022a3SMichal Scigockisyslogd_start()
2166a022a3SMichal Scigocki{
22*1da99b47SMark Johnston    local jail bind_arg conf_file pid_file socket privsocket
2366a022a3SMichal Scigocki    local opt next other_args
2466a022a3SMichal Scigocki
2566a022a3SMichal Scigocki    # Setup loopback so we can deliver messages to ourself.
2666a022a3SMichal Scigocki    atf_check ifconfig lo0 inet 127.0.0.1/16
2766a022a3SMichal Scigocki
2866a022a3SMichal Scigocki    OPTIND=1
2966a022a3SMichal Scigocki    while getopts ":b:f:j:P:p:S:" opt; do
3066a022a3SMichal Scigocki        case "${opt}" in
3166a022a3SMichal Scigocki        b)
32*1da99b47SMark Johnston            bind_arg="${bind_arg} -b ${OPTARG}"
3366a022a3SMichal Scigocki            ;;
3466a022a3SMichal Scigocki        f)
3566a022a3SMichal Scigocki            conf_file="${OPTARG}"
3666a022a3SMichal Scigocki            ;;
3766a022a3SMichal Scigocki        j)
3866a022a3SMichal Scigocki            jail="jexec ${OPTARG}"
3966a022a3SMichal Scigocki            ;;
4066a022a3SMichal Scigocki        P)
4166a022a3SMichal Scigocki            pid_file="${OPTARG}"
4266a022a3SMichal Scigocki            ;;
4366a022a3SMichal Scigocki        p)
4466a022a3SMichal Scigocki            socket="${OPTARG}"
4566a022a3SMichal Scigocki            ;;
4666a022a3SMichal Scigocki        S)
4766a022a3SMichal Scigocki            privsocket="${OPTARG}"
4866a022a3SMichal Scigocki            ;;
4966a022a3SMichal Scigocki        ?)
5066a022a3SMichal Scigocki            opt="${OPTARG}"
5166a022a3SMichal Scigocki            next="$(eval echo \${${OPTIND}})"
5266a022a3SMichal Scigocki
5366a022a3SMichal Scigocki            case "${next}" in
5466a022a3SMichal Scigocki            -* | "")
5566a022a3SMichal Scigocki                other_args="${other_args} -${opt}"
5666a022a3SMichal Scigocki                shift $((OPTIND - 1))
5766a022a3SMichal Scigocki                ;;
5866a022a3SMichal Scigocki            *)
5966a022a3SMichal Scigocki                other_args="${other_args} -${opt} ${next}"
6066a022a3SMichal Scigocki                shift ${OPTIND}
6166a022a3SMichal Scigocki                ;;
6266a022a3SMichal Scigocki            esac
6366a022a3SMichal Scigocki
6466a022a3SMichal Scigocki            # Tell getopts to continue parsing.
6566a022a3SMichal Scigocki            OPTIND=1
6666a022a3SMichal Scigocki            ;;
6766a022a3SMichal Scigocki        :)
6866a022a3SMichal Scigocki            atf_fail "The -${OPTARG} flag requires an argument"
6966a022a3SMichal Scigocki            ;;
7066a022a3SMichal Scigocki        esac
7166a022a3SMichal Scigocki    done
7266a022a3SMichal Scigocki
7366a022a3SMichal Scigocki    $jail syslogd \
74*1da99b47SMark Johnston        ${bind_arg:--b :${SYSLOGD_UDP_PORT}} \
7566a022a3SMichal Scigocki        -C \
7666a022a3SMichal Scigocki        -d \
7766a022a3SMichal Scigocki        -f "${conf_file:-${SYSLOGD_CONFIG}}" \
7866a022a3SMichal Scigocki        -H \
7966a022a3SMichal Scigocki        -P "${pid_file:-${SYSLOGD_PIDFILE}}" \
8066a022a3SMichal Scigocki        -p "${socket:-${SYSLOGD_LOCAL_SOCKET}}" \
8166a022a3SMichal Scigocki        -S "${privsocket:-${SYSLOGD_LOCAL_PRIVSOCKET}}" \
8266a022a3SMichal Scigocki        ${other_args} \
8366a022a3SMichal Scigocki        &
8466a022a3SMichal Scigocki
8566a022a3SMichal Scigocki    # Give syslogd a bit of time to spin up.
8666a022a3SMichal Scigocki    while [ "$((i+=1))" -le 20 ]; do
8766a022a3SMichal Scigocki        [ -S "${socket:-${SYSLOGD_LOCAL_SOCKET}}" ] && return
8866a022a3SMichal Scigocki        sleep 0.1
8966a022a3SMichal Scigocki    done
9066a022a3SMichal Scigocki    atf_fail "timed out waiting for syslogd to start"
9166a022a3SMichal Scigocki}
9266a022a3SMichal Scigocki
9366a022a3SMichal Scigocki# Simple logger(1) wrapper.
9466a022a3SMichal Scigockisyslogd_log()
9566a022a3SMichal Scigocki{
9666a022a3SMichal Scigocki    atf_check -s exit:0 -o empty -e empty logger $*
9766a022a3SMichal Scigocki}
9866a022a3SMichal Scigocki
9966a022a3SMichal Scigocki# Make syslogd reload its configuration file.
10066a022a3SMichal Scigockisyslogd_reload()
10166a022a3SMichal Scigocki{
1023fb2371eSMark Johnston    atf_check pkill -HUP -F "${1:-${SYSLOGD_PIDFILE}}"
10366a022a3SMichal Scigocki}
10466a022a3SMichal Scigocki
10566a022a3SMichal Scigocki# Stop a private syslogd instance.
10666a022a3SMichal Scigockisyslogd_stop()
10766a022a3SMichal Scigocki{
10866a022a3SMichal Scigocki    local pid_file="${1:-${SYSLOGD_PIDFILE}}"
10966a022a3SMichal Scigocki    local socket_file="${2:-${SYSLOGD_LOCAL_SOCKET}}"
11066a022a3SMichal Scigocki    local privsocket_file="${3:-${SYSLOGD_LOCAL_PRIVSOCKET}}"
11166a022a3SMichal Scigocki
11266a022a3SMichal Scigocki    pid=$(cat "${pid_file}")
11366a022a3SMichal Scigocki    if pkill -F "${pid_file}"; then
11466a022a3SMichal Scigocki        wait "${pid}"
11566a022a3SMichal Scigocki        rm -f "${pid_file}" "${socket_file}" "${privsocket_file}"
11666a022a3SMichal Scigocki    fi
11766a022a3SMichal Scigocki}
118