summaryrefslogtreecommitdiffstats
path: root/modules.d/35network-legacy/parse-bridge.sh
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-03 13:54:25 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-03 13:54:25 +0000
commit9cb1c4df7b9ce1a9ad1312621b0f2b16a94fba3a (patch)
tree2efb72864cc69e174c9c5ee33efb88a5f1553b48 /modules.d/35network-legacy/parse-bridge.sh
parentInitial commit. (diff)
downloaddracut-9cb1c4df7b9ce1a9ad1312621b0f2b16a94fba3a.tar.xz
dracut-9cb1c4df7b9ce1a9ad1312621b0f2b16a94fba3a.zip
Adding upstream version 060+5.upstream/060+5
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'modules.d/35network-legacy/parse-bridge.sh')
-rwxr-xr-xmodules.d/35network-legacy/parse-bridge.sh49
1 files changed, 49 insertions, 0 deletions
diff --git a/modules.d/35network-legacy/parse-bridge.sh b/modules.d/35network-legacy/parse-bridge.sh
new file mode 100755
index 0000000..caea1da
--- /dev/null
+++ b/modules.d/35network-legacy/parse-bridge.sh
@@ -0,0 +1,49 @@
+#!/bin/sh
+#
+# Format:
+# bridge=<bridgename>:<bridgeslaves>
+#
+# <bridgeslaves> is a comma-separated list of physical (ethernet) interfaces
+# bridge without parameters assumes bridge=br0:eth0
+#
+
+parsebridge() {
+ local v="${1}":
+ set --
+ while [ -n "$v" ]; do
+ set -- "$@" "${v%%:*}"
+ v=${v#*:}
+ done
+ case $# in
+ 0)
+ bridgename=br0
+ bridgeslaves=$iface
+ ;;
+ 1) die "bridge= requires two parameters" ;;
+ 2)
+ bridgename=$1
+ bridgeslaves=$(str_replace "$2" "," " ")
+ ;;
+ *) die "bridge= requires two parameters" ;;
+ esac
+}
+
+# Parse bridge for bridgename and bridgeslaves
+for bridge in $(getargs bridge=); do
+ unset bridgename
+ unset bridgeslaves
+ iface=eth0
+ # Read bridge= parameters if they exist
+ if [ "$bridge" != "bridge" ]; then
+ parsebridge "$bridge"
+ fi
+ # Simple default bridge
+ if [ -z "$bridgename" ]; then
+ bridgename=br0
+ bridgeslaves=$iface
+ fi
+ {
+ echo "bridgename=$bridgename"
+ echo "bridgeslaves=\"$bridgeslaves\""
+ } > /tmp/bridge.${bridgename}.info
+done