modules.d: get rid of "tr"
[platform/upstream/dracut.git] / modules.d / 80cms / cms-write-ifcfg.sh
1 #!/bin/bash
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 type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
6
7 mkdir -m 0755 -p /run/initramfs/state/etc/sysconfig/network-scripts
8
9 function cms_write_config()
10 {
11     . /tmp/cms.conf
12     OLDIFS=$IFS
13     IFS=,
14     read -a subch_array <<< "indexzero,$SUBCHANNELS"
15     IFS=$OLDIFS
16     devbusid=${subch_array[1]}
17     if [ "$NETTYPE" = "ctc" ]; then
18         driver="ctcm"
19     else
20         driver=$NETTYPE
21     fi
22
23     DEVICE=$(cd /sys/devices/${driver}/$devbusid/net/ && set -- * && [ "$1" != "*" ] && echo $1)
24
25     uuid=$(cat /proc/sys/kernel/random/uuid)
26
27     IFCFGFILE=/run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-$DEVICE
28
29     strstr "$IPADDR" '*:*:*' && ipv6=1
30
31 # to please NetworkManager on startup in loader before loader reconfigures net
32     cat > /etc/sysconfig/network << EOF
33 HOSTNAME=$HOSTNAME
34 EOF
35     if [ "$ipv6" ]; then
36         echo "NETWORKING_IPV6=yes" >> /etc/sysconfig/network
37     else
38         echo "NETWORKING=yes" >> /etc/sysconfig/network
39     fi
40
41     cat > $IFCFGFILE << EOF
42 DEVICE=$DEVICE
43 UUID=$uuid
44 ONBOOT=yes
45 BOOTPROTO=static
46 MTU=$MTU
47 SUBCHANNELS=$SUBCHANNELS
48 EOF
49     if [ "$ipv6" ]; then
50         cat >> $IFCFGFILE << EOF
51 IPV6INIT=yes
52 IPV6_AUTOCONF=no
53 IPV6ADDR=$IPADDR/$NETMASK
54 IPV6_DEFAULTGW=$GATEWAY
55 EOF
56     else
57         cat >> $IFCFGFILE << EOF
58 IPADDR=$IPADDR
59 NETMASK=$NETMASK
60 BROADCAST=$BROADCAST
61 GATEWAY=$GATEWAY
62 EOF
63     fi
64     if [ "$ipv6" ]; then
65         DNS1=$(set -- ${DNS/,/ }; echo $1)
66         DNS2=$(set -- ${DNS/,/ }; echo $2)
67     else
68         DNS1=$(set -- ${DNS/:/ }; echo $1)
69         DNS2=$(set -- ${DNS/:/ }; echo $2)
70     fi
71 # real DNS config for NetworkManager to generate /etc/resolv.conf
72     [ "$DNS1" != "" ] && echo "DNS1=$DNS1" >> $IFCFGFILE
73     [ "$DNS2" != "" ] && echo "DNS2=$DNS2" >> $IFCFGFILE
74 # just to please loader's readNetInfo && writeEnabledNetInfo
75 # which eats DNS1,DNS2,... and generates it themselves based on DNS
76     if [ "$ipv6" ]; then
77         [ "$DNS" != "" ] && echo "DNS=\"$DNS\"" >> $IFCFGFILE
78     else
79         [ "$DNS" != "" ] && echo "DNS=\"${DNS/:/,}\"" >> $IFCFGFILE
80     fi
81 # colons in SEARCHDNS already replaced with spaces above for /etc/resolv.conf
82     [ "$SEARCHDNS" != "" ] && echo "DOMAIN=\"$SEARCHDNS\"" >> $IFCFGFILE
83     [ "$NETTYPE" != "" ] && echo "NETTYPE=$NETTYPE" >> $IFCFGFILE
84     [ "$PEERID" != "" ] && echo "PEERID=$PEERID" >> $IFCFGFILE
85     [ "$PORTNAME" != "" ] && echo "PORTNAME=$PORTNAME" >> $IFCFGFILE
86     [ "$CTCPROT" != "" ] && echo "CTCPROT=$CTCPROT" >> $IFCFGFILE
87     [ "$MACADDR" != "" ] && echo "MACADDR=$MACADDR" >> $IFCFGFILE
88     optstr=""
89     for option in LAYER2 PORTNO; do
90         [ -z "${!option}" ] && continue
91         [ -n "$optstr" ] && optstr=${optstr}" "
92         optstr=${optstr}$(echo ${option} | sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/')"="${!option}
93     done
94 # write single quotes since network.py removes double quotes but we need quotes
95     echo "OPTIONS='$optstr'" >> $IFCFGFILE
96     unset option
97     unset optstr
98     unset DNS1
99     unset DNS2
100     echo "files /etc/sysconfig/network-scripts" >> /run/initramfs/rwtab
101     echo "files /var/lib/dhclient" >> /run/initramfs/rwtab
102 }
103
104 [ -f /tmp/cms.conf ] && cms_write_config