- uses: actions/checkout@v2
- name: shfmt
- uses: luizm/action-sh-checker@v0.2.0
+ uses: luizm/action-sh-checker@v0.2.2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- SHFMT_OPTS: -d -s # arguments to shfmt.
+ SHFMT_OPTS: -s # arguments to shfmt.
with:
sh_checker_shellcheck_disable: false
sh_checker_comment: true
# SC2174: When used with -p, -m only applies to the deepest directory.
# https://github.com/koalaman/shellcheck/wiki/SC2174
disable=SC2174
+
+# SC3043: In POSIX sh, 'local' is undefined.
+# https://github.com/koalaman/shellcheck/wiki/SC3043
+# ... but dash supports it
+disable=SC3043
+
+# SC3013: In POSIX sh, -ef is undefined.
+# https://github.com/koalaman/shellcheck/wiki/SC3013
+# ... but dash supports it
+disable=SC3013
+
+# SC3045: In POSIX sh, read -p is undefined.
+# https://github.com/koalaman/shellcheck/wiki/SC3045
+# ... but dash supports it
+disable=SC3045
fi
dracut_args=("$@")
+# shellcheck disable=SC2155
readonly dracut_cmd=$(readlink -f "$0")
set -o pipefail
;;
esac
+# shellcheck disable=SC2155
readonly TMPDIR="$(realpath -e "$tmpdir")"
[ -d "$TMPDIR" ] || {
printf "%s\n" "dracut: Invalid tmpdir '$tmpdir'." >&2
noexec=1
fi
+# shellcheck disable=SC2155
readonly DRACUT_TMPDIR="$(mktemp -p "$TMPDIR/" -d -t dracut.XXXXXX)"
[ -d "$DRACUT_TMPDIR" ] || {
printf "%s\n" "dracut: mktemp -p '$TMPDIR/' -d -t dracut.XXXXXX failed." >&2
-#!/bin/sh
+#!/bin/bash
# This file is part of dracut.
# SPDX-License-Identifier: GPL-2.0-or-later
-#!/bin/sh
+#!/bin/bash
# This file is part of dracut.
# SPDX-License-Identifier: GPL-2.0-or-later
-#!/bin/sh
+#!/bin/bash
# This file is part of dracut.
# SPDX-License-Identifier: GPL-2.0-or-later
-#!/bin/sh
+#!/bin/bash
# This file is part of dracut.
# SPDX-License-Identifier: GPL-2.0-or-later
-#!/bin/sh
+#!/bin/bash
# This file is part of dracut.
# SPDX-License-Identifier: GPL-2.0-or-later
-#!/bin/sh
+#!/bin/bash
# This file is part of dracut.
# SPDX-License-Identifier: GPL-2.0-or-later
-#!/bin/sh
+#!/bin/bash
# This file is part of dracut.
# SPDX-License-Identifier: GPL-2.0-or-later
warn "dhcp for interface $netif failed"
# nuke those files since we failed; we might retry dhcp again if it's e.g.
# `ip=dhcp,dhcp6` and we check for the PID file earlier
- rm -f /tmp/dhclient."$netif".{pid,lease}
+ rm -f /tmp/dhclient."$netif".pid /tmp/dhclient."$netif".lease
return 1
}
warn "dhcp for interface $netif failed"
# nuke those files since we failed; we might retry dhcp again if it's e.g.
# `ip=dhcp,dhcp6` and we check for the PID file at the top
- rm -f "/tmp/dhclient.${netif}".{pid,lease}
+ rm -f /tmp/dhclient."$netif".pid /tmp/dhclient."$netif".lease
return 1
}
# shellcheck disable=SC1090
. "$i"
for testslave in $bondslaves; do
- [ "$netif" != "testslave" ] && continue
+ [ "$netif" != "$testslave" ] && continue
# already setup
[ -e "/tmp/bond.$bondname.up" ] && exit 0
# called by dracut
check() {
- require_binaries ip dhclient sed awk grep pgrep tr || return 1
+ require_binaries ip dhclient sed awk grep pgrep tr expr || return 1
require_any_binary arping arping2 || return 1
return 255
[[ $hostonly ]] && inst_multiple -H -o "${systemdsystemconfdir}/network/*.link"
fi
- inst_multiple ip dhclient sed awk grep pgrep tr
+ inst_multiple ip dhclient sed awk grep pgrep tr expr
inst_multiple -o arping arping2
strstr "$(arping 2>&1)" "ARPing 2" && mv "$initdir/bin/arping" "$initdir/bin/arping2"
fi
if str_starts "$dev" "enx" && [ ${#dev} -eq 15 ]; then
+ # shellcheck disable=SC2003
printf -- "ifname=%s:%s:%s:%s:%s:%s:%s\n" \
"$dev" \
- "${dev:3:2}" \
- "${dev:5:2}" \
- "${dev:7:2}" \
- "${dev:9:2}" \
- "${dev:11:2}" \
- "${dev:13:2}" >> /etc/cmdline.d/80-enx.conf
+ "$(expr substr "$dev" 3 2)" \
+ "$(expr substr "$dev" 5 2)" \
+ "$(expr substr "$dev" 7 2)" \
+ "$(expr substr "$dev" 9 2)" \
+ "$(expr substr "$dev" 11 2)" \
+ "$(expr substr "$dev" 13 2)" \
+ >> /etc/cmdline.d/80-enx.conf
fi
done
inst_simple "$moddir/net-lib.sh" "/lib/net-lib.sh"
inst_hook pre-udev 50 "$moddir/ifname-genrules.sh"
inst_hook cmdline 91 "$moddir/dhcp-root.sh"
-
+ inst_multiple ip sed awk grep pgrep tr
+ inst_multiple -o arping arping2
dracut_need_initqueue
}
[ -e "${iface}"/flags ] && read -r flags < "${iface}"/flags
# Skip invalid interfaces
- ((flags & 1)) || continue
+ awk -- 'BEGIN { exit (!and('"$flags"',1)) }' || continue
# Skip interfaces not used for booting unless using multipath
if ! getargbool 0 rd.iscsi.mp; then
- ((flags & 2)) || continue
+ awk -- 'BEGIN { exit (!and('"$flags"',2)) }' || continue
fi
[ -e "${iface}"/dhcp ] && read -r dhcp < "${iface}"/dhcp
[ -e "${iface}"/origin ] && read -r origin < "${iface}"/origin
-#!/bin/sh
+#!/bin/bash
# This file is part of dracut.
# SPDX-License-Identifier: GPL-2.0-or-later
IFS=,
# shellcheck disable=SC2086
set -- $CIO_ACCEPT
- while (($# > 0)); do
+ while [ "$#" -gt 0 ]; do
info "Enabling device $1"
cio_ignore --remove "$1"
shift
# called by dracut
cmdline() {
local dev UUID
+ # shellcheck disable=SC2031
for dev in "${!host_fs_types[@]}"; do
[[ ${host_fs_types[$dev]} != "crypto_LUKS" ]] && continue
if [ "${forceentry}" = "yes" ]; then
echo "$_mapper $_dev $_luksfile $_luksoptions"
else
+ # shellcheck disable=SC2031
for _hdev in "${!host_fs_types[@]}"; do
[[ ${host_fs_types[$_hdev]} == "crypto_LUKS" ]] || continue
if [[ $_hdev -ef $_dev ]] || [[ /dev/block/$_hdev -ef $_dev ]]; then
-#!/bin/sh
+#!/bin/bash
type getarg > /dev/null 2>&1 || . /lib/dracut-lib.sh
-#!/bin/sh
+#!/bin/bash
type getarg > /dev/null 2>&1 || . /lib/dracut-lib.sh
depends() {
# if dmsetup is not installed, then we cannot support fedora/red hat
# style live images
- echo dm rootfs-block img-lib
+ echo dm rootfs-block img-lib bash
return 0
}
-#!/bin/sh
+#!/bin/bash
type getarg > /dev/null 2>&1 || . /lib/dracut-lib.sh
# called by dracut
depends() {
- echo network url-lib dmsquash-live img-lib
+ echo network url-lib dmsquash-live img-lib bash
return 0
}
LV_DEVS="$(getargs rd.lvm.vg -d rd_LVM_VG=) $(getargs rd.lvm.lv -d rd_LVM_LV=)"
if ! getargbool 1 rd.lvm -d -n rd_NO_LVM \
- || ([ -z "$LV_DEVS" ] && ! getargbool 0 rd.auto); then
+ || { [ -z "$LV_DEVS" ] && ! getargbool 0 rd.auto; }; then
info "rd.lvm=0: removing LVM activation"
rm -f -- /etc/udev/rules.d/64-lvm*.rules
else
MD_UUID=$(str_replace "$MD_UUID" "-" "")
MD_UUID=$(str_replace "$MD_UUID" ":" "")
-if ([ -z "$MD_UUID" ] && ! getargbool 0 rd.auto) || ! getargbool 1 rd.md -d -n rd_NO_MD; then
+if { [ -z "$MD_UUID" ] && ! getargbool 0 rd.auto; } || ! getargbool 1 rd.md -d -n rd_NO_MD; then
info "rd.md=0: removing MD RAID activation"
udevproperty rd_NO_MD=1
else
preopts="-systemd-mark $preopts"
fi
-if [ "$nbdport" -gt 0 ] 2> /dev/null; then
- nbdport="$nbdport"
-else
+if ! [ "$nbdport" -gt 0 ] 2> /dev/null; then
nbdport="-name $nbdport"
fi
# called by dracut
depends() {
+ echo bash
return 0
}
-#!/bin/sh
+#!/bin/bash
for ccw_arg in $(getargs rd.ccw -d 'rd_CCW=') $(getargs rd.znet -d 'rd_ZNET='); do
echo "$ccw_arg" >> /etc/ccw.conf
echo
echo
echo "Enter additional kernel command line parameter (end with ctrl-d or .)"
-while read -r -e -p "> " line || [ -n "$line" ]; do
+while read -r -p "> " ${BASH:+-e} line || [ -n "$line" ]; do
[ "$line" = "." ] && break
[ -n "$line" ] && printf -- "%s\n" "$line" >> /etc/cmdline.d/99-cmdline-ask.conf
done
if getarg "rd.cmdline=ask"; then
echo "Enter additional kernel command line parameter (end with ctrl-d or .)"
- while read -r -p "> " line || [ -n "$line" ]; do
+ while read -r -p "> " ${BASH:+-e} line || [ -n "$line" ]; do
[ "$line" = "." ] && break
echo "$line" >> /etc/cmdline.d/99-cmdline-ask.conf
done
local bz xz gz zs
local headerblock
bz="BZh"
+ # shellcheck disable=SC3037
xz="$(/bin/echo -e '\xfd7zXZ')"
+ # shellcheck disable=SC3037
gz="$(/bin/echo -e '\x1f\x8b')"
+ # shellcheck disable=SC3037
zs="$(/bin/echo -e '\x28\xB5\x2F\xFD')"
headerblock="$(dd ${1:+if=$1} bs=262 count=1 2> /dev/null | tr -d '\0')"
case "$headerblock" in
-#!/bin/sh
+#!/bin/bash
# Mount kernel debug fs so debug tools can work.
# memdebug=4 and memdebug=5 requires debug fs to be mounted.
# And there is no need to umount it.
sleep 1
echo $PID > /run/memstrack.pid
+# bash specific - non posix
disown
}
depends() {
- echo systemd
+ echo systemd bash
return 0
}
# the process will be killed when when running as PID 1.
# shellcheck disable=SC2217
[ -w /dev/console ] \
- && (echo < /dev/console &> /dev/null) \
+ && (echo < /dev/console > /dev/null 2> /dev/null) \
&& exec < /dev/console >> /dev/console 2>> /dev/console
export TERM=linux
"$testdir"/run-qemu \
"${disk_args[@]}" \
-watchdog i6300esb -watchdog-action poweroff \
- -append "panic=1 systemd.crash_reboot \"root=LABEL= rdinit=/bin/sh\" rw systemd.log_level=debug systemd.log_target=console rd.retry=3 rd.debug console=ttyS0,115200n81 rd.shell=0 $DEBUGFAIL" \
+ -append "panic=1 hung_task_panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot \"root=LABEL= rdinit=/bin/sh\" rw systemd.log_level=debug systemd.log_target=console rd.retry=3 rd.debug console=ttyS0,115200n81 rd.shell=0 $DEBUGFAIL" \
-initrd "$TESTDIR"/initramfs.testing || return 1
grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img
"$testdir"/run-qemu \
"${disk_args[@]}" \
- -append "panic=1 systemd.crash_reboot root=LABEL=dracut rw loglevel=77 systemd.log_level=debug systemd.log_target=console rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 init=/sbin/init rd.shell=0 $DEBUGFAIL" \
+ -append "panic=1 hung_task_panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot root=LABEL=dracut rw loglevel=77 systemd.log_level=debug systemd.log_target=console rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 init=/sbin/init rd.shell=0 $DEBUGFAIL" \
-initrd "$TESTDIR"/initramfs.testing || return 1
grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img
"$testdir"/run-qemu \
"${disk_args[@]}" \
-watchdog i6300esb -watchdog-action poweroff \
- -append "panic=1 systemd.crash_reboot root=LABEL=dracut $client_opts loglevel=7 rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug rd.shell=0 $DEBUGFAIL" \
+ -append "panic=1 hung_task_panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot root=LABEL=dracut $client_opts loglevel=7 rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug rd.shell=0 $DEBUGFAIL" \
-initrd "$TESTDIR"/initramfs.testing || return 1
if ! grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img; then
"$testdir"/run-qemu \
"${disk_args[@]}" \
- -append "panic=1 systemd.crash_reboot root=LABEL=dracut $client_opts rd.retry=3 console=ttyS0,115200n81 selinux=0 $DEBUGOUT rd.shell=0 $DEBUGFAIL" \
+ -append "panic=1 hung_task_panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot root=LABEL=dracut $client_opts rd.retry=3 console=ttyS0,115200n81 selinux=0 $DEBUGOUT rd.shell=0 $DEBUGFAIL" \
-initrd "$TESTDIR"/initramfs.testing || return 1
if ! grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img; then
"$testdir"/run-qemu \
"${disk_args[@]}" \
- -append "panic=1 systemd.crash_reboot root=/dev/dracut/root rd.auto rw rd.retry=10 console=ttyS0,115200n81 selinux=0 rd.shell=0 $DEBUGFAIL" \
+ -append "panic=1 hung_task_panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot root=/dev/dracut/root rd.auto rw rd.retry=10 console=ttyS0,115200n81 selinux=0 rd.shell=0 $DEBUGFAIL" \
-initrd "$TESTDIR"/initramfs.testing || return 1
grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img
"$testdir"/run-qemu \
"${disk_args[@]}" \
- -append "panic=1 systemd.crash_reboot root=/dev/dracut/root rw rd.auto=1 quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug rd.shell=0 $DEBUGFAIL" \
+ -append "panic=1 hung_task_panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot root=/dev/dracut/root rw rd.auto=1 quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug rd.shell=0 $DEBUGFAIL" \
-initrd "$TESTDIR"/initramfs.testing || return 1
grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img
"$testdir"/run-qemu \
"${disk_args[@]}" \
- -append "panic=1 systemd.crash_reboot $* systemd.log_target=kmsg root=LABEL=root rw rd.retry=10 rd.info console=ttyS0,115200n81 log_buf_len=2M selinux=0 rd.shell=0 $DEBUGFAIL " \
+ -append "panic=1 hung_task_panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot $* systemd.log_target=kmsg root=LABEL=root rw rd.retry=10 rd.info console=ttyS0,115200n81 log_buf_len=2M selinux=0 rd.shell=0 $DEBUGFAIL " \
-initrd "$TESTDIR"/initramfs.testing
if ! grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img; then
"$testdir"/run-qemu \
"${disk_args[@]}" \
- -append "panic=1 systemd.crash_reboot root=/dev/dracut/root rw rd.auto rd.retry=20 console=ttyS0,115200n81 selinux=0 rd.debug rootwait $LUKSARGS rd.shell=0 $DEBUGFAIL" \
+ -append "panic=1 hung_task_panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot root=/dev/dracut/root rw rd.auto rd.retry=20 console=ttyS0,115200n81 selinux=0 rd.debug rootwait $LUKSARGS rd.shell=0 $DEBUGFAIL" \
-initrd "$TESTDIR"/initramfs.testing
grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img || return 1
echo "CLIENT TEST END: [OK]"
echo "CLIENT TEST START: Any LUKS"
"$testdir"/run-qemu \
"${disk_args[@]}" \
- -append "panic=1 systemd.crash_reboot root=/dev/dracut/root rw quiet rd.auto rd.retry=20 rd.info console=ttyS0,115200n81 selinux=0 rd.debug $DEBUGFAIL" \
+ -append "panic=1 hung_task_panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot root=/dev/dracut/root rw quiet rd.auto rd.retry=20 rd.info console=ttyS0,115200n81 selinux=0 rd.debug $DEBUGFAIL" \
-initrd "$TESTDIR"/initramfs.testing
grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img || return 1
echo "CLIENT TEST END: [OK]"
echo "CLIENT TEST START: Wrong LUKS UUID"
"$testdir"/run-qemu \
"${disk_args[@]}" \
- -append "panic=1 systemd.crash_reboot root=/dev/dracut/root rw quiet rd.auto rd.retry=10 rd.info console=ttyS0,115200n81 selinux=0 rd.debug $DEBUGFAIL rd.luks.uuid=failme" \
+ -append "panic=1 hung_task_panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot root=/dev/dracut/root rw quiet rd.auto rd.retry=10 rd.info console=ttyS0,115200n81 selinux=0 rd.debug $DEBUGFAIL rd.luks.uuid=failme" \
-initrd "$TESTDIR"/initramfs.testing
grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img && return 1
echo "CLIENT TEST END: [OK]"
"$testdir"/run-qemu \
"${disk_args[@]}" \
- -append "panic=1 systemd.crash_reboot $* root=LABEL=root rw debug rd.retry=5 rd.debug console=ttyS0,115200n81 selinux=0 rd.info rd.shell=0 $DEBUGFAIL" \
+ -append "panic=1 hung_task_panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot $* root=LABEL=root rw debug rd.retry=5 rd.debug console=ttyS0,115200n81 selinux=0 rd.info rd.shell=0 $DEBUGFAIL" \
-initrd "$TESTDIR"/initramfs.testing || return 1
if ! grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img; then
"$testdir"/run-qemu \
"${disk_args[@]}" \
- -append "panic=1 systemd.crash_reboot root=LABEL=root rw rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.shell=0 $DEBUGFAIL" \
+ -append "panic=1 hung_task_panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot root=LABEL=root rw rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.shell=0 $DEBUGFAIL" \
-initrd "$TESTDIR"/initramfs.testing
grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img || return 1
}
"$testdir"/run-qemu \
"${disk_args[@]}" \
-boot order=d \
- -append "panic=1 systemd.crash_reboot root=live:CDLABEL=LiveCD live rw quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.shell=0 $DEBUGFAIL" \
+ -append "panic=1 hung_task_panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot root=live:CDLABEL=LiveCD live rw quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.shell=0 $DEBUGFAIL" \
-initrd "$TESTDIR"/initramfs.testing
# mediacheck test with qemu GUI
"$testdir"/run-qemu \
"${disk_args[@]}" \
- -append "panic=1 systemd.crash_reboot root=/dev/dracut/root rw rd.auto=1 quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug rd.shell=0 $DEBUGFAIL" \
+ -append "panic=1 hung_task_panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot root=/dev/dracut/root rw rd.auto=1 quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug rd.shell=0 $DEBUGFAIL" \
-initrd "$TESTDIR"/initramfs.testing || return 1
grep -U --binary-files=binary -F -m 1 -q dracut-root-block-success "$TESTDIR"/marker.img || return 1
}
while [ $cnt -lt 600 ]; do
li=$(ip -o link show dev "$1" 2> /dev/null)
[ -n "$li" ] && return 0
- if [[ $2 ]]; then
- li=$(ip -o link show dev "$2" 2> /dev/null)
- [ -n "$li" ] && return 0
- fi
sleep 0.1
cnt=$((cnt + 1))
done
wait_for_if_link "$1" 2> /dev/null && ip link set "$1" up 2> /dev/null && wait_for_if_up "$1" 2> /dev/null
}
-wait_for_if_link eth0 enp0s1
+wait_for_if_link enp0s1
ip addr add 127.0.0.1/8 dev lo
ip link set lo up
-ip link set dev eth0 name enp0s1
ip addr add 192.168.50.1/24 dev enp0s1
ip addr add 192.168.50.2/24 dev enp0s1
ip addr add 192.168.50.3/24 dev enp0s1
-net nic,macaddr=52:54:00:12:34:56,model=e1000 \
-serial "${SERIAL:-"file:$TESTDIR/server.log"}" \
-watchdog i6300esb -watchdog-action poweroff \
- -append "panic=1 quiet root=LABEL=dracut rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0 $SERVER_DEBUG" \
+ -append "panic=1 hung_task_panic=1 oops=panic softlockup_panic=1 quiet root=LABEL=dracut rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0 $SERVER_DEBUG" \
-initrd "$TESTDIR"/initramfs.server \
-pidfile "$TESTDIR"/server.pid -daemonize || return 1
chmod 644 "$TESTDIR"/server.pid || return 1
-net nic,macaddr="$mac",model=e1000 \
-net socket,connect=127.0.0.1:12320 \
-watchdog i6300esb -watchdog-action poweroff \
- -append "panic=1 systemd.crash_reboot rd.shell=0 $cmdline $DEBUGFAIL rd.retry=10 quiet ro console=ttyS0,115200n81 selinux=0" \
+ -append "panic=1 hung_task_panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot rd.shell=0 $cmdline $DEBUGFAIL rd.retry=10 quiet ro console=ttyS0,115200n81 selinux=0" \
-initrd "$TESTDIR"/initramfs.testing
# shellcheck disable=SC2181
-net nic,macaddr=52:54:00:12:34:56,model=e1000 \
-net nic,macaddr=52:54:00:12:34:57,model=e1000 \
-net socket,listen=127.0.0.1:12330 \
- -append "panic=1 quiet root=/dev/disk/by-id/ata-disk_serverroot rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0 $SERVER_DEBUG" \
+ -append "panic=1 hung_task_panic=1 oops=panic softlockup_panic=1 quiet root=/dev/disk/by-id/ata-disk_serverroot rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0 $SERVER_DEBUG" \
-initrd "$TESTDIR"/initramfs.server \
-pidfile "$TESTDIR"/server.pid -daemonize || return 1
chmod 644 "$TESTDIR"/server.pid || return 1
-net nic,macaddr=52:54:00:12:34:01,model=e1000 \
-net socket,connect=127.0.0.1:12330 \
-acpitable file=ibft.table \
- -append "panic=1 systemd.crash_reboot rw rd.auto rd.retry=50 console=ttyS0,115200n81 selinux=0 rd.debug=0 rd.shell=0 $DEBUGFAIL $*" \
+ -append "panic=1 hung_task_panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot rw rd.auto rd.retry=50 console=ttyS0,115200n81 selinux=0 rd.debug=0 rd.shell=0 $DEBUGFAIL $*" \
-initrd "$TESTDIR"/initramfs.testing
# shellcheck disable=SC2181
# Make server root
dd if=/dev/zero of="$TESTDIR"/server.ext3 bs=1M count=120
+ # shellcheck disable=SC2031
export kernel=$KVERSION
rm -rf -- "$TESTDIR"/overlay
(
ip addr add 127.0.0.1/8 dev lo
ip link set lo up
-ip link set dev eth0 name enp0s1
ip addr add 192.168.50.1/24 dev enp0s1
linkup enp0s1
-ip link set dev eth1 name enp0s2
ip addr add 192.168.51.1/24 dev enp0s2
linkup enp0s2
-net nic,macaddr=52:54:00:12:34:56,model=e1000 \
-net nic,macaddr=52:54:00:12:34:57,model=e1000 \
-net socket,listen=127.0.0.1:12331 \
- -append "panic=1 systemd.crash_reboot root=/dev/disk/by-id/ata-disk_serverroot rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0 $SERVER_DEBUG" \
+ -append "panic=1 hung_task_panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot root=/dev/disk/by-id/ata-disk_serverroot rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0 $SERVER_DEBUG" \
-initrd "$TESTDIR"/initramfs.server \
-pidfile "$TESTDIR"/server.pid -daemonize || return 1
chmod 644 "$TESTDIR"/server.pid || return 1
-net nic,macaddr=52:54:00:12:34:00,model=e1000 \
-net nic,macaddr=52:54:00:12:34:01,model=e1000 \
-net socket,connect=127.0.0.1:12331 \
- -append "panic=1 systemd.crash_reboot rw rd.auto rd.retry=50 console=ttyS0,115200n81 selinux=0 rd.debug=0 rd.shell=0 $DEBUGFAIL $*" \
+ -append "panic=1 hung_task_panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot rw rd.auto rd.retry=50 console=ttyS0,115200n81 selinux=0 rd.debug=0 rd.shell=0 $DEBUGFAIL $*" \
-initrd "$TESTDIR"/initramfs.testing
if ! grep -U --binary-files=binary -F -m 1 -q iscsi-OK "$TESTDIR"/marker.img; then
echo "CLIENT TEST END: $test_name [FAILED - BAD EXIT]"
# Make server root
echo "MAKE SERVER ROOT"
+ # shellcheck disable=SC2031
export kernel=$KVERSION
rm -rf -- "$TESTDIR"/overlay
(
-serial "${SERIAL:-"file:$TESTDIR/server.log"}" \
-net nic,macaddr=52:54:00:12:34:56,model=e1000 \
-net socket,listen=127.0.0.1:12340 \
- -append "panic=1 rd.luks=0 systemd.crash_reboot quiet root=/dev/disk/by-id/ata-disk_serverroot rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0 $SERVER_DEBUG" \
+ -append "panic=1 hung_task_panic=1 oops=panic softlockup_panic=1 rd.luks=0 systemd.crash_reboot quiet root=/dev/disk/by-id/ata-disk_serverroot rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0 $SERVER_DEBUG" \
-initrd "$TESTDIR"/initramfs.server \
-pidfile "$TESTDIR"/server.pid -daemonize || return 1
chmod 644 "$TESTDIR"/server.pid || return 1
"${disk_args[@]}" \
-net nic,macaddr="$mac",model=e1000 \
-net socket,connect=127.0.0.1:12340 \
- -append "panic=1 systemd.crash_reboot rd.shell=0 $cmdline $DEBUGFAIL rd.auto rd.info rd.retry=10 ro console=ttyS0,115200n81 selinux=0 " \
+ -append "panic=1 hung_task_panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot rd.shell=0 $cmdline $DEBUGFAIL rd.auto rd.info rd.retry=10 ro console=ttyS0,115200n81 selinux=0 " \
-initrd "$TESTDIR"/initramfs.testing
# shellcheck disable=SC2181
make_server_root() {
rm -fr "$TESTDIR"/overlay
+ # shellcheck disable=SC2031
export kernel=$KVERSION
(
mkdir -p "$TESTDIR"/overlay/source
grep -q connection-uuid= "$state" 2> /dev/null || continue
i=${i##*/}
ip link show "$i" | grep -q master && continue
- IFACES+="$i "
+ IFACES="${IFACES}${i} "
done
for i in /run/initramfs/net.*.did-setup; do
# booting with network-legacy module
[ -f "$i" ] || continue
strglobin "$i" ":*:*:*:*:" && continue
i=${i%.did-setup}
- IFACES+="${i##*/net.} "
+ IFACES="${IFACES}${i##*/net.} "
done
{
echo "OK"
-net nic,macaddr=52:54:01:12:34:56,model=e1000 \
-serial "${SERIAL:-"file:$TESTDIR/server.log"}" \
-watchdog i6300esb -watchdog-action poweroff \
- -append "panic=1 systemd.crash_reboot loglevel=7 root=LABEL=dracut rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0" \
+ -append "panic=1 hung_task_panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot loglevel=7 root=LABEL=dracut rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0" \
-initrd "$TESTDIR"/initramfs.server \
-pidfile "$TESTDIR"/server.pid -daemonize || return 1
-device e1000,netdev=n1,mac=52:54:00:12:34:98 \
-device e1000,netdev=n2,mac=52:54:00:12:34:99 \
-watchdog i6300esb -watchdog-action poweroff \
- -append "quiet rd.net.timeout.dhcp=3 panic=1 systemd.crash_reboot rd.shell=0 $cmdline $DEBUGFAIL rd.retry=5 ro console=ttyS0,115200n81 selinux=0 init=/sbin/init rd.debug systemd.log_target=console" \
+ -append "quiet rd.net.timeout.dhcp=3 panic=1 hung_task_panic=1 oops=panic softlockup_panic=1 systemd.crash_reboot rd.shell=0 $cmdline $DEBUGFAIL rd.retry=5 ro console=ttyS0,115200n81 selinux=0 init=/sbin/init rd.debug systemd.log_target=console" \
-initrd "$TESTDIR"/initramfs.testing || return 1
{
OriginalName=*
[Link]
-NamePolicy=keep kernel database onboard slot path
+NamePolicy=mac
MACAddressPolicy=keep
li=$(ip -o link show dev "$1" 2> /dev/null)
[ -n "$li" ] && return 0
- if [[ $2 ]]; then
- li=$(ip -o link show dev "$2" 2> /dev/null)
- [ -n "$li" ] && return 0
- fi
sleep 0.1
cnt=$((cnt + 1))
done
ip link show
-wait_for_if_link eth0 ens3
-wait_for_if_link eth1 ens4
-wait_for_if_link eth2 ens5
-wait_for_if_link eth3 ens6
+wait_for_if_link enx525401123456
+wait_for_if_link enx525401123457
+wait_for_if_link enx525401123458
+wait_for_if_link enx525401123459
+
+ip link set dev enx525401123456 name net1
+ip link set dev enx525401123457 name net2
+ip link set dev enx525401123458 name net3
+ip link set dev enx525401123459 name net4
modprobe --all -b -q 8021q ipvlan macvlan
: > /dev/watchdog
ip addr add 127.0.0.1/8 dev lo
linkup lo
-ip link set dev eth0 name ens3
-ip addr add 192.168.50.1/24 dev ens3
-linkup ens3
-: > /dev/watchdog
-ip link set dev eth1 name ens4
-ip link add dev ens4.1 link ens4 type vlan id 1
-ip link add dev ens4.2 link ens4 type vlan id 2
-ip link add dev ens4.3 link ens4 type vlan id 3
-ip link add dev ens4.4 link ens4 type vlan id 4
-ip addr add 192.168.54.1/24 dev ens4.1
-ip addr add 192.168.55.1/24 dev ens4.2
-ip addr add 192.168.56.1/24 dev ens4.3
-ip addr add 192.168.57.1/24 dev ens4.4
-linkup ens4
-ip link set dev ens4.1 up
-ip link set dev ens4.2 up
-ip link set dev ens4.3 up
-ip link set dev ens4.4 up
-ip link set dev eth2 name ens5
-ip addr add 192.168.51.1/24 dev ens5
-linkup ens5
-ip link set dev eth3 name ens6
-linkup ens6
+ip addr add 192.168.50.1/24 dev net1
+linkup net1
+: > /dev/watchdog
+ip link add dev net2.1 link net2 type vlan id 1
+ip link add dev net2.2 link net2 type vlan id 2
+ip link add dev net2.3 link net2 type vlan id 3
+ip link add dev net2.4 link net2 type vlan id 4
+ip addr add 192.168.54.1/24 dev net2.1
+ip addr add 192.168.55.1/24 dev net2.2
+ip addr add 192.168.56.1/24 dev net2.3
+ip addr add 192.168.57.1/24 dev net2.4
+linkup net2
+ip link set dev net2.1 up
+ip link set dev net2.2 up
+ip link set dev net2.3 up
+ip link set dev net2.4 up
+ip addr add 192.168.51.1/24 dev net3
+linkup net3
+linkup net4
: > /dev/watchdog
modprobe af_packet
: > /dev/watchdog
: > /dev/watchdog
chmod 777 /var/lib/dhcpd/dhcpd.leases
: > /dev/watchdog
-dhcpd -cf /etc/dhcpd.conf -lf /var/lib/dhcpd/dhcpd.leases ens3 ens5
+dhcpd -cf /etc/dhcpd.conf -lf /var/lib/dhcpd/dhcpd.leases net1 net3
#echo -n 'V' : > /dev/watchdog
#sh -i
-#tcpdump -i ens3
+#tcpdump -i net1
# Wait forever for the VM to die
echo "Serving"
while :; do
echo "MULTINIC TEST SETUP: Starting DHCP/NFS server"
"$testdir"/run-qemu \
- -hda "$TESTDIR"/server.ext3 \
-netdev socket,id=n0,listen=127.0.0.1:12370 \
-netdev socket,id=n1,listen=127.0.0.1:12371 \
-netdev socket,id=n2,listen=127.0.0.1:12372 \
-netdev socket,id=n3,listen=127.0.0.1:12373 \
- -device e1000,netdev=n0,mac=52:54:01:12:34:56 \
- -device e1000,netdev=n1,mac=52:54:01:12:34:57 \
- -device e1000,netdev=n2,mac=52:54:01:12:34:58 \
- -device e1000,netdev=n3,mac=52:54:01:12:34:59 \
+ -device virtio-net-pci,netdev=n0,mac=52:54:01:12:34:56 \
+ -device virtio-net-pci,netdev=n1,mac=52:54:01:12:34:57 \
+ -device virtio-net-pci,netdev=n2,mac=52:54:01:12:34:58 \
+ -device virtio-net-pci,netdev=n3,mac=52:54:01:12:34:59 \
+ -hda "$TESTDIR"/server.ext3 \
-serial "${SERIAL:-"file:$TESTDIR/server.log"}" \
-watchdog i6300esb -watchdog-action poweroff \
- -append "panic=1 loglevel=7 root=LABEL=dracut rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0 rd.debug" \
+ -append "panic=1 hung_task_panic=1 oops=panic softlockup_panic=1 loglevel=7 root=LABEL=dracut rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0 rd.debug" \
-initrd "$TESTDIR"/initramfs.server \
-pidfile "$TESTDIR"/server.pid -daemonize || return 1
chmod 644 -- "$TESTDIR"/server.pid || return 1
return 1
fi
if [[ $do_vlan13 ]]; then
- nic1=" -netdev socket,connect=127.0.0.1:12371,id=n1"
- nic3=" -netdev socket,connect=127.0.0.1:12373,id=n3"
+ nic1=("-netdev" "socket,connect=127.0.0.1:12371,id=n1")
+ nic3=("-netdev" "socket,connect=127.0.0.1:12373,id=n3")
else
- nic1=" -netdev hubport,id=n1,hubid=2"
- nic3=" -netdev hubport,id=n3,hubid=3"
+ nic1=("-netdev" "hubport,id=n1,hubid=2")
+ nic3=("-netdev" "hubport,id=n3,hubid=3")
fi
"$testdir"/run-qemu \
- -hda "$TESTDIR"/client.img \
-netdev socket,connect=127.0.0.1:12370,id=s1 \
-netdev hubport,hubid=1,id=h1,netdev=s1 \
- -netdev hubport,hubid=1,id=h2 -device e1000,mac=52:54:00:12:34:01,netdev=h2 \
- -netdev hubport,hubid=1,id=h3 -device e1000,mac=52:54:00:12:34:02,netdev=h3 \
- "$nic1" -device e1000,mac=52:54:00:12:34:03,netdev=n1 \
- -netdev socket,connect=127.0.0.1:12372,id=n2 -device e1000,mac=52:54:00:12:34:04,netdev=n2 \
- "$nic3" -device e1000,mac=52:54:00:12:34:05,netdev=n3 \
+ -netdev hubport,hubid=1,id=h2 -device virtio-net-pci,mac=52:54:00:12:34:01,netdev=h2 \
+ -netdev hubport,hubid=1,id=h3 -device virtio-net-pci,mac=52:54:00:12:34:02,netdev=h3 \
+ "${nic1[@]}" -device virtio-net-pci,mac=52:54:00:12:34:03,netdev=n1 \
+ -netdev socket,connect=127.0.0.1:12372,id=n2 -device virtio-net-pci,mac=52:54:00:12:34:04,netdev=n2 \
+ "${nic3[@]}" -device virtio-net-pci,mac=52:54:00:12:34:05,netdev=n3 \
+ -hda "$TESTDIR"/client.img \
-watchdog i6300esb -watchdog-action poweroff \
- -append "panic=1 $cmdline systemd.crash_reboot rd.debug $DEBUGFAIL rd.retry=5 rw console=ttyS0,115200n81 selinux=0 init=/sbin/init" \
- -initrd "$TESTDIR"/initramfs.testing
+ -append "
+ panic=1 hung_task_panic=1 oops=panic softlockup_panic=1
+ ifname=net1:52:54:00:12:34:01
+ ifname=net2:52:54:00:12:34:02
+ ifname=net3:52:54:00:12:34:03
+ ifname=net4:52:54:00:12:34:04
+ ifname=net5:52:54:00:12:34:05
+ $cmdline rd.net.timeout.dhcp=3 systemd.crash_reboot rd.debug
+ $DEBUGFAIL rd.retry=5 rw console=ttyS0,115200n81 selinux=0 init=/sbin/init" \
+ -initrd "$TESTDIR"/initramfs.testing || return 1
{
read -r OK _
test_client() {
if [[ $NM ]]; then
- EXPECT='ens3 ens5.0004 ens5.3 vlan0001 vlan2 /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-* EOF '
+ EXPECT='net1 net3.0004 net3.3 vlan0001 vlan2 /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-* EOF '
else
- EXPECT='ens3 ens5.0004 ens5.3 vlan0001 vlan2 /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens3 # Generated by dracut initrd NAME="ens3" DEVICE="ens3" ONBOOT=yes NETBOOT=yes IPV6INIT=yes BOOTPROTO=dhcp TYPE=Ethernet /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens5.0004 # Generated by dracut initrd NAME="ens5.0004" ONBOOT=yes NETBOOT=yes BOOTPROTO=none IPADDR="192.168.57.104" PREFIX="24" GATEWAY="192.168.57.1" TYPE=Vlan DEVICE="ens5.0004" VLAN=yes PHYSDEV="ens5" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens5.3 # Generated by dracut initrd NAME="ens5.3" ONBOOT=yes NETBOOT=yes BOOTPROTO=none IPADDR="192.168.56.103" PREFIX="24" GATEWAY="192.168.56.1" TYPE=Vlan DEVICE="ens5.3" VLAN=yes PHYSDEV="ens5" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-vlan0001 # Generated by dracut initrd NAME="vlan0001" ONBOOT=yes NETBOOT=yes BOOTPROTO=none IPADDR="192.168.54.101" PREFIX="24" GATEWAY="192.168.54.1" TYPE=Vlan DEVICE="vlan0001" VLAN=yes PHYSDEV="ens5" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-vlan2 # Generated by dracut initrd NAME="vlan2" ONBOOT=yes NETBOOT=yes BOOTPROTO=none IPADDR="192.168.55.102" PREFIX="24" GATEWAY="192.168.55.1" TYPE=Vlan DEVICE="vlan2" VLAN=yes PHYSDEV="ens5" EOF '
+ EXPECT='net1 net3.0004 net3.3 vlan0001 vlan2 /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-net1 # Generated by dracut initrd NAME="net1" HWADDR="52:54:00:12:34:01" DEVICE="net1" ONBOOT=yes NETBOOT=yes IPV6INIT=yes BOOTPROTO=dhcp TYPE=Ethernet /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-net3.0004 # Generated by dracut initrd NAME="net3.0004" ONBOOT=yes NETBOOT=yes BOOTPROTO=none IPADDR="192.168.57.104" PREFIX="24" GATEWAY="192.168.57.1" TYPE=Vlan DEVICE="net3.0004" VLAN=yes PHYSDEV="net3" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-net3.3 # Generated by dracut initrd NAME="net3.3" ONBOOT=yes NETBOOT=yes BOOTPROTO=none IPADDR="192.168.56.103" PREFIX="24" GATEWAY="192.168.56.1" TYPE=Vlan DEVICE="net3.3" VLAN=yes PHYSDEV="net3" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-vlan0001 # Generated by dracut initrd NAME="vlan0001" ONBOOT=yes NETBOOT=yes BOOTPROTO=none IPADDR="192.168.54.101" PREFIX="24" GATEWAY="192.168.54.1" TYPE=Vlan DEVICE="vlan0001" VLAN=yes PHYSDEV="net3" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-vlan2 # Generated by dracut initrd NAME="vlan2" ONBOOT=yes NETBOOT=yes BOOTPROTO=none IPADDR="192.168.55.102" PREFIX="24" GATEWAY="192.168.55.1" TYPE=Vlan DEVICE="vlan2" VLAN=yes PHYSDEV="net3" EOF '
fi
client_test "Multiple VLAN" \
"yes" \
"
-vlan=vlan0001:ens5
-vlan=vlan2:ens5
-vlan=ens5.3:ens5
-vlan=ens5.0004:ens5
-ip=ens3:dhcp
+vlan=vlan0001:net3
+vlan=vlan2:net3
+vlan=net3.3:net3
+vlan=net3.0004:net3
+ip=net1:dhcp
ip=192.168.54.101::192.168.54.1:24:test:vlan0001:none
ip=192.168.55.102::192.168.55.1:24:test:vlan2:none
-ip=192.168.56.103::192.168.56.1:24:test:ens5.3:none
-ip=192.168.57.104::192.168.57.1:24:test:ens5.0004:none
+ip=192.168.56.103::192.168.56.1:24:test:net3.3:none
+ip=192.168.57.104::192.168.57.1:24:test:net3.0004:none
rd.neednet=1
-root=nfs:192.168.50.1:/nfs/client bootdev=ens3
+root=nfs:192.168.50.1:/nfs/client bootdev=net1
" \
"$EXPECT" \
|| return 1
if [[ $NM ]]; then
- EXPECT='bond0 bond1 /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-* EOF '
+ EXPECT='bond0 /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-* EOF '
else
- EXPECT='bond0 bond1 /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-bond0 # Generated by dracut initrd NAME="bond0" DEVICE="bond0" ONBOOT=yes NETBOOT=yes IPV6INIT=yes BOOTPROTO=dhcp BONDING_OPTS="" NAME="bond0" TYPE=Bond /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-bond1 # Generated by dracut initrd NAME="bond1" DEVICE="bond1" ONBOOT=yes NETBOOT=yes IPV6INIT=yes BOOTPROTO=dhcp BONDING_OPTS="" NAME="bond1" TYPE=Bond /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens3 # Generated by dracut initrd NAME="ens3" TYPE=Ethernet ONBOOT=yes NETBOOT=yes SLAVE=yes MASTER="bond0" DEVICE="ens3" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens4 # Generated by dracut initrd NAME="ens4" TYPE=Ethernet ONBOOT=yes NETBOOT=yes SLAVE=yes MASTER="bond0" DEVICE="ens4" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens6 # Generated by dracut initrd NAME="ens6" TYPE=Ethernet ONBOOT=yes NETBOOT=yes SLAVE=yes MASTER="bond1" DEVICE="ens6" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens7 # Generated by dracut initrd NAME="ens7" TYPE=Ethernet ONBOOT=yes NETBOOT=yes SLAVE=yes MASTER="bond1" DEVICE="ens7" EOF '
+ EXPECT='bond0 bond1 /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-bond0 # Generated by dracut initrd NAME="bond0" DEVICE="bond0" ONBOOT=yes NETBOOT=yes IPV6INIT=yes BOOTPROTO=dhcp BONDING_OPTS="" NAME="bond0" TYPE=Bond /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-bond1 # Generated by dracut initrd NAME="bond1" DEVICE="bond1" ONBOOT=yes NETBOOT=yes IPV6INIT=yes BOOTPROTO=dhcp BONDING_OPTS="" NAME="bond1" TYPE=Bond /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-net1 # Generated by dracut initrd NAME="net1" HWADDR="52:54:00:12:34:01" TYPE=Ethernet ONBOOT=yes NETBOOT=yes SLAVE=yes MASTER="bond0" DEVICE="net1" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-net2 # Generated by dracut initrd NAME="net2" HWADDR="52:54:00:12:34:02" TYPE=Ethernet ONBOOT=yes NETBOOT=yes SLAVE=yes MASTER="bond0" DEVICE="net2" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-net4 # Generated by dracut initrd NAME="net4" HWADDR="52:54:00:12:34:04" TYPE=Ethernet ONBOOT=yes NETBOOT=yes SLAVE=yes MASTER="bond1" DEVICE="net4" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-net5 # Generated by dracut initrd NAME="net5" TYPE=Ethernet ONBOOT=yes NETBOOT=yes SLAVE=yes MASTER="bond1" DEVICE="net5" EOF '
fi
client_test "Multiple Bonds" \
"yes" \
"
-bond=bond0:ens3,ens4
-bond=bond1:ens6,ens7
+bond=bond0:net1,net2:miimon=100
+bond=bond1:net4,net5:miimon=100
ip=bond0:dhcp
ip=bond1:dhcp
rd.neednet=1
if [[ $NM ]]; then
EXPECT='br0 br1 /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-* EOF '
else
- EXPECT='br0 br1 /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-br0 # Generated by dracut initrd NAME="br0" DEVICE="br0" ONBOOT=yes NETBOOT=yes IPV6INIT=yes BOOTPROTO=dhcp TYPE=Bridge NAME="br0" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-br1 # Generated by dracut initrd NAME="br1" DEVICE="br1" ONBOOT=yes NETBOOT=yes IPV6INIT=yes BOOTPROTO=dhcp TYPE=Bridge NAME="br1" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens3 # Generated by dracut initrd NAME="ens3" TYPE=Ethernet ONBOOT=yes NETBOOT=yes BRIDGE="br0" DEVICE="ens3" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens4 # Generated by dracut initrd NAME="ens4" TYPE=Ethernet ONBOOT=yes NETBOOT=yes BRIDGE="br0" DEVICE="ens4" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens6 # Generated by dracut initrd NAME="ens6" TYPE=Ethernet ONBOOT=yes NETBOOT=yes BRIDGE="br1" DEVICE="ens6" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-ens7 # Generated by dracut initrd NAME="ens7" TYPE=Ethernet ONBOOT=yes NETBOOT=yes BRIDGE="br1" DEVICE="ens7" EOF '
+ EXPECT='br0 br1 /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-br0 # Generated by dracut initrd NAME="br0" DEVICE="br0" ONBOOT=yes NETBOOT=yes IPV6INIT=yes BOOTPROTO=dhcp TYPE=Bridge NAME="br0" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-br1 # Generated by dracut initrd NAME="br1" DEVICE="br1" ONBOOT=yes NETBOOT=yes IPV6INIT=yes BOOTPROTO=dhcp TYPE=Bridge NAME="br1" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-net1 # Generated by dracut initrd NAME="net1" HWADDR="52:54:00:12:34:01" TYPE=Ethernet ONBOOT=yes NETBOOT=yes BRIDGE="br0" DEVICE="net1" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-net2 # Generated by dracut initrd NAME="net2" HWADDR="52:54:00:12:34:02" TYPE=Ethernet ONBOOT=yes NETBOOT=yes BRIDGE="br0" DEVICE="net2" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-net4 # Generated by dracut initrd NAME="net4" TYPE=Ethernet ONBOOT=yes NETBOOT=yes BRIDGE="br1" DEVICE="net4" /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-net5 # Generated by dracut initrd NAME="net5" TYPE=Ethernet ONBOOT=yes NETBOOT=yes BRIDGE="br1" DEVICE="net5" EOF '
fi
client_test "Multiple Bridges" \
"no" \
"
-bridge=br0:ens3,ens4
-bridge=br1:ens6,ens7
+bridge=br0:net1,net2
+bridge=br1:net4,net5
ip=br0:dhcp
ip=br1:dhcp
rd.neednet=1
" \
"$EXPECT" \
|| return 1
+
kill_server
return 0
}
# Make an overlay with needed tools for the test harness
(
# shellcheck disable=SC2031
+ # shellcheck disable=SC2030
export initdir="$TESTDIR"/overlay
# shellcheck disable=SC1090
. "$basedir"/dracut-init.sh
inst_multiple poweroff shutdown
inst_hook emergency 000 ./hard-off.sh
- inst_simple ./99-default.link /etc/systemd/network/99-default.link
)
-
- # Make server's dracut image
- "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
- --no-early-microcode \
- -m "udev-rules base rootfs-block fs-lib debug kernel-modules watchdog qemu" \
- -d "ipvlan macvlan af_packet piix ide-gd_mod ata_piix ext3 sd_mod nfsv2 nfsv3 nfsv4 nfs_acl nfs_layout_nfsv41_files nfsd e1000 i6300esb ib700wdt" \
- --no-hostonly-cmdline -N \
- -f "$TESTDIR"/initramfs.server "$KVERSION" || return 1
-
# Make client's dracut image
"$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
--no-early-microcode \
-o "plymouth ${OMIT_NETWORK}" \
-a "debug ${USE_NETWORK}" \
- -d "ipvlan macvlan af_packet piix sd_mod sr_mod ata_piix ide-gd_mod e1000 nfsv2 nfsv3 nfsv4 nfs_acl nfs_layout_nfsv41_files sunrpc i6300esb ib700wdt" \
+ -d "ipvlan macvlan af_packet piix sd_mod sr_mod ata_piix ide-gd_mod virtio-net nfsv2 nfsv3 nfsv4 nfs_acl nfs_layout_nfsv41_files sunrpc i6300esb ib700wdt" \
--no-hostonly-cmdline -N \
-f "$TESTDIR"/initramfs.testing "$KVERSION" || return 1
+
+ (
+ # shellcheck disable=SC2031
+ export initdir="$TESTDIR"/overlay
+ # shellcheck disable=SC1090
+ . "$basedir"/dracut-init.sh
+ inst_simple ./99-default.link /etc/systemd/network/99-default.link
+ inst_hook pre-mount 99 ./wait-if-server.sh
+ )
+ # Make server's dracut image
+ "$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
+ --no-early-microcode \
+ -m "udev-rules base rootfs-block fs-lib debug kernel-modules watchdog qemu network network-legacy" \
+ -d "ipvlan macvlan af_packet piix ide-gd_mod ata_piix ext3 sd_mod nfsv2 nfsv3 nfsv4 nfs_acl nfs_layout_nfsv41_files nfsd virtio-net i6300esb ib700wdt" \
+ --no-hostonly-cmdline -N \
+ -f "$TESTDIR"/initramfs.server "$KVERSION" || return 1
}
kill_server() {
--- /dev/null
+#!/bin/sh
+. /lib/net-lib.sh
+wait_for_if_link enx525401123456
+wait_for_if_link enx525401123457
+wait_for_if_link enx525401123458
+wait_for_if_link enx525401123459