modules.d: get rid of "tr"
[platform/upstream/dracut.git] / modules.d / 40network / parse-bridge.sh
1 #!/bin/sh
2 # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
3 # ex: ts=8 sw=4 sts=4 et filetype=sh
4 #
5 # Format:
6 #       bridge=<bridgename>:<ethnames>
7 #
8 #       <ethnames> is a comma-separated list of physical (ethernet) interfaces
9 #       bridge without parameters assumes bridge=br0:eth0
10 #
11
12 # return if bridge already parsed
13 [ -n "$bridgename" ] && return
14
15 # Check if bridge parameter is valid
16 if getarg bridge= >/dev/null ; then
17     command -v brctl >/dev/null 2>&1 || die "No 'brctl' installed" 
18 fi
19
20 parsebridge() {
21     local v=${1}:
22     set --
23     while [ -n "$v" ]; do
24         set -- "$@" "${v%%:*}"
25         v=${v#*:}
26     done
27
28     unset bridgename ethnames
29     case $# in
30         0)  bridgename=br0; ethnames=$iface ;;
31         1)  die "bridge= requires two parameters" ;;
32         2)  bridgename=$1; ethnames=$(str_replace "$2" "," " ") ;;
33         *)  die "bridge= requires two parameters" ;;
34     esac
35 }
36
37 unset bridgename ethnames
38
39 iface=eth0
40 if [ -e /tmp/bond.info ]; then
41     . /tmp/bond.info
42     if [ -n "$bondname" ] ; then
43         iface=$bondname
44     fi
45 fi
46
47 # Parse bridge for bridgename and ethnames
48 if bridge="$(getarg bridge)"; then
49     # Read bridge= parameters if they exist
50     if [ -n "$bridge" ]; then
51         parsebridge $bridge
52     fi
53     # Simple default bridge
54     if [ -z "$bridgename" ]; then
55         bridgename=br0
56         ethnames=$iface
57     fi
58     echo "bridgename=$bridgename" > /tmp/bridge.info
59     echo "ethnames=\"$ethnames\"" >> /tmp/bridge.info
60     return
61 fi