summaryrefslogtreecommitdiffstats
path: root/modules.d/95znet
diff options
context:
space:
mode:
Diffstat (limited to 'modules.d/95znet')
-rwxr-xr-xmodules.d/95znet/module-setup.sh29
-rwxr-xr-xmodules.d/95znet/parse-ccw.sh25
2 files changed, 54 insertions, 0 deletions
diff --git a/modules.d/95znet/module-setup.sh b/modules.d/95znet/module-setup.sh
new file mode 100755
index 0000000..df37c66
--- /dev/null
+++ b/modules.d/95znet/module-setup.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+# called by dracut
+check() {
+ arch=${DRACUT_ARCH:-$(uname -m)}
+ [ "$arch" = "s390" -o "$arch" = "s390x" ] || return 1
+
+ require_binaries znet_cio_free grep sed seq readlink || return 1
+
+ return 0
+}
+
+# called by dracut
+depends() {
+ echo bash
+ return 0
+}
+
+# called by dracut
+installkernel() {
+ instmods ctcm lcs qeth qeth_l2 qeth_l3
+}
+
+# called by dracut
+install() {
+ inst_hook cmdline 30 "$moddir/parse-ccw.sh"
+ inst_rules 81-ccw.rules
+ inst_multiple znet_cio_free grep sed seq readlink /lib/udev/ccw_init
+}
diff --git a/modules.d/95znet/parse-ccw.sh b/modules.d/95znet/parse-ccw.sh
new file mode 100755
index 0000000..d895360
--- /dev/null
+++ b/modules.d/95znet/parse-ccw.sh
@@ -0,0 +1,25 @@
+#!/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
+done
+
+for ifname in $(getargs rd.znet_ifname); do
+ IFS=: read -r ifname_if ifname_subchannels _rest <<< "$ifname"
+ if [ -z "$ifname_if" ] || [ -z "$ifname_subchannels" ] || [ -n "$_rest" ]; then
+ warn "Invalid arguments for rd.znet_ifname="
+ else
+ {
+ ifname_subchannels=${ifname_subchannels//,/|}
+
+ echo 'ACTION!="add|change", GOTO="ccw_ifname_end"'
+ echo 'ATTR{type}!="1", GOTO="ccw_ifname_end"'
+ echo 'SUBSYSTEM!="net", GOTO="ccw_ifname_end"'
+ echo "SUBSYSTEMS==\"ccwgroup\", KERNELS==\"$ifname_subchannels\", DRIVERS==\"?*\" NAME=\"$ifname_if\""
+ echo 'LABEL="ccw_ifname_end"'
+
+ } > /etc/udev/rules.d/81-ccw-ifname.rules
+ fi
+done
+
+znet_cio_free