diff --git a/zdev/src/Makefile b/zdev/src/Makefile index 54785378..f90f73e8 100644 --- a/zdev/src/Makefile +++ b/zdev/src/Makefile @@ -106,13 +106,15 @@ libs = $(rootdir)/libap/libap.a \ chzdev: $(chzdev_objects) $(libs) lszdev: $(lszdev_objects) $(libs) -install: chzdev zdev_id zdev-to-dasd_mod.dasd zdev-from-dasd_mod.dasd +install: chzdev zdev_id zdev-to-dasd_mod.dasd zdev-from-dasd_mod.dasd \ + zdev-to-rd.znet $(INSTALL) -d -m 755 $(DESTDIR)$(BINDIR) $(INSTALL) -c chzdev $(DESTDIR)$(BINDIR) $(INSTALL) -c lszdev $(DESTDIR)$(BINDIR) $(INSTALL) -c zdev_id $(DESTDIR)$(TOOLS_LIBDIR) $(INSTALL) -c zdev-to-dasd_mod.dasd $(DESTDIR)$(TOOLS_LIBDIR) $(INSTALL) -c -m 644 zdev-from-dasd_mod.dasd $(DESTDIR)$(TOOLS_LIBDIR) + $(INSTALL) -c zdev-to-rd.znet $(DESTDIR)$(TOOLS_LIBDIR) ifeq ($(HAVE_DRACUT),1) $(INSTALL) -m 755 zdev-root-update.dracut \ $(DESTDIR)$(TOOLS_LIBDIR)/zdev-root-update diff --git a/zdev/src/zdev-to-rd.znet b/zdev/src/zdev-to-rd.znet new file mode 100755 index 00000000..2dc71670 --- /dev/null +++ b/zdev/src/zdev-to-rd.znet @@ -0,0 +1,49 @@ +#!/bin/bash +# +# Copyright IBM Corp. 2023 +# +# s390-tools is free software; you can redistribute it and/or modify +# it under the terms of the MIT license. See LICENSE for details. +# +# zdev-to-rd.znet +# Converts zdev configuration into the syntax of the dracut cmdline option +# rd.znet. Only znet options with non-default values are emitted. The +# result string occurs on stdout. It represents one device-specification for +# the given network interface name. +# + +function usage() { + echo "usage: ${0##*/} active|persistent " 1>&2 + exit 1 +} + +[[ $# -eq 2 ]] || usage + +[[ "$1" == active ]] || [[ "$1" == persistent ]] || usage + +_selection="--${1}" +_ifname="$2" + +while read -r _line; do + case "$_line" in + \#*) ;; + \[*) + SAVED_IFS="$IFS" + IFS="${IFS}:]" + # shellcheck disable=SC2086 + set -- $_line + shift # skip "[..." prefix + _nettype="$1" + shift # skip nettype + IFS="," # comma-separated subchannel list + _subchannels="$*" + IFS="$SAVED_IFS" + ;; + "online=1") ;; + zdev:early=*) ;; + *) + _attrs="${_attrs},${_line}" + ;; + esac +done < <(chzdev --by-interface "$_ifname" "$_selection" --export - --quiet) +printf "%s,%s%s\n" "$_nettype" "$_subchannels" "$_attrs"