You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
3.1 KiB
104 lines
3.1 KiB
#!/bin/bash |
|
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- |
|
# ex: ts=8 sw=4 sts=4 et filetype=sh |
|
|
|
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh |
|
|
|
mkdir -m 0755 -p /run/initramfs/state/etc/sysconfig/network-scripts |
|
|
|
function cms_write_config() |
|
{ |
|
. /tmp/cms.conf |
|
OLDIFS=$IFS |
|
IFS=, |
|
read -a subch_array <<< "indexzero,$SUBCHANNELS" |
|
IFS=$OLDIFS |
|
devbusid=${subch_array[1]} |
|
if [ "$NETTYPE" = "ctc" ]; then |
|
driver="ctcm" |
|
else |
|
driver=$NETTYPE |
|
fi |
|
|
|
DEVICE=$(cd /sys/devices/${driver}/$devbusid/net/ && set -- * && [ "$1" != "*" ] && echo $1) |
|
|
|
uuid=$(cat /proc/sys/kernel/random/uuid) |
|
|
|
IFCFGFILE=/run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-$DEVICE |
|
|
|
strstr "$IPADDR" '*:*:*' && ipv6=1 |
|
|
|
# to please NetworkManager on startup in loader before loader reconfigures net |
|
cat > /etc/sysconfig/network << EOF |
|
HOSTNAME=$HOSTNAME |
|
EOF |
|
if [ "$ipv6" ]; then |
|
echo "NETWORKING_IPV6=yes" >> /etc/sysconfig/network |
|
else |
|
echo "NETWORKING=yes" >> /etc/sysconfig/network |
|
fi |
|
|
|
cat > $IFCFGFILE << EOF |
|
DEVICE=$DEVICE |
|
UUID=$uuid |
|
ONBOOT=yes |
|
BOOTPROTO=static |
|
MTU=$MTU |
|
SUBCHANNELS=$SUBCHANNELS |
|
EOF |
|
if [ "$ipv6" ]; then |
|
cat >> $IFCFGFILE << EOF |
|
IPV6INIT=yes |
|
IPV6_AUTOCONF=no |
|
IPV6ADDR=$IPADDR/$NETMASK |
|
IPV6_DEFAULTGW=$GATEWAY |
|
EOF |
|
else |
|
cat >> $IFCFGFILE << EOF |
|
IPADDR=$IPADDR |
|
NETMASK=$NETMASK |
|
BROADCAST=$BROADCAST |
|
GATEWAY=$GATEWAY |
|
EOF |
|
fi |
|
if [ "$ipv6" ]; then |
|
DNS1=$(set -- ${DNS/,/ }; echo $1) |
|
DNS2=$(set -- ${DNS/,/ }; echo $2) |
|
else |
|
DNS1=$(set -- ${DNS/:/ }; echo $1) |
|
DNS2=$(set -- ${DNS/:/ }; echo $2) |
|
fi |
|
# real DNS config for NetworkManager to generate /etc/resolv.conf |
|
[ "$DNS1" != "" ] && echo "DNS1=$DNS1" >> $IFCFGFILE |
|
[ "$DNS2" != "" ] && echo "DNS2=$DNS2" >> $IFCFGFILE |
|
# just to please loader's readNetInfo && writeEnabledNetInfo |
|
# which eats DNS1,DNS2,... and generates it themselves based on DNS |
|
if [ "$ipv6" ]; then |
|
[ "$DNS" != "" ] && echo "DNS=\"$DNS\"" >> $IFCFGFILE |
|
else |
|
[ "$DNS" != "" ] && echo "DNS=\"${DNS/:/,}\"" >> $IFCFGFILE |
|
fi |
|
# colons in SEARCHDNS already replaced with spaces above for /etc/resolv.conf |
|
[ "$SEARCHDNS" != "" ] && echo "DOMAIN=\"$SEARCHDNS\"" >> $IFCFGFILE |
|
[ "$NETTYPE" != "" ] && echo "NETTYPE=$NETTYPE" >> $IFCFGFILE |
|
[ "$PEERID" != "" ] && echo "PEERID=$PEERID" >> $IFCFGFILE |
|
[ "$PORTNAME" != "" ] && echo "PORTNAME=$PORTNAME" >> $IFCFGFILE |
|
[ "$CTCPROT" != "" ] && echo "CTCPROT=$CTCPROT" >> $IFCFGFILE |
|
[ "$MACADDR" != "" ] && echo "MACADDR=$MACADDR" >> $IFCFGFILE |
|
optstr="" |
|
for option in LAYER2 PORTNO; do |
|
[ -z "${!option}" ] && continue |
|
[ -n "$optstr" ] && optstr=${optstr}" " |
|
optstr=${optstr}$(echo ${option} | sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/')"="${!option} |
|
done |
|
# write single quotes since network.py removes double quotes but we need quotes |
|
echo "OPTIONS='$optstr'" >> $IFCFGFILE |
|
unset option |
|
unset optstr |
|
unset DNS1 |
|
unset DNS2 |
|
echo "files /etc/sysconfig/network-scripts" >> /run/initramfs/rwtab |
|
echo "files /var/lib/dhclient" >> /run/initramfs/rwtab |
|
} |
|
|
|
[ -f /tmp/cms.conf ] && cms_write_config
|
|
|