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.
105 lines
3.1 KiB
105 lines
3.1 KiB
![]()
13 years ago
|
#!/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} | tr [[:upper:]] [[:lower:]])"="${!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
|