#!/bin/bash #. /etc/profile #. /etc/systemconfig #BASE=/tmp ETCNETDIR=$BASE/etc/net/ifaces function kill_dhcp () { #for i in ${BASE}/etc/dhcpc/dhcpcd-*.pid for i in ${BASE}/var/run/dhcpcd-*.pid do if [ -f ${i} ] then pid=`cat ${i}` kill -9 $pid rm -f ${i} fi if [ x$1 = xflush ] then for ifdev in eth0 wlan0 eth1 wlan1 do echo ${i} |grep $ifdev status=$? if [ $status = 1 ] then ip address flush $ifdev fi done fi done } function kill_dhcp_chroot () { #for i in ${BASE}/etc/dhcpc/dhcpcd-*.pid for i in ${mountpoint}/var/run/dhcpcd-*.pid do if [ -f ${i} ] then pid=`cat ${i}` kill -9 $pid rm -f ${i} fi done } function setup_nameserver(){ grep -q $1 ${BASE}/etc/resolv.conf status=$? if [ ! $status = 0 ] then echo "nameserver $1" >> ${BASE}/etc/resolv.conf fi } function change_iface_state () { if [ x$2 = xenabled ] then echo "setting $1 to active" sed -i -e 's/^ONBOOT=.*$/ONBOOT=yes/g' $ETCNETDIR/$1/options sed -i -e 's/^DISABLED=.*$/DISABLED=no/g' $ETCNETDIR/$1/options else echo "setting $1 to inactive" if [ -e $ETCNETDIR/$1/options ] then sed -i -e 's/^ONBOOT=.*$/ONBOOT=no/g' $ETCNETDIR/$1/options sed -i -e 's/^DISABLED=.*$/DISABLED=yes/g' $ETCNETDIR/$1/options fi /sbin/ifconfig $1 down ip address flush $1 fi } function setup_interfaces() { local IS_WIRELESS local ip local netmask local isactive local dns local UseDHCP local GW local ESSID local KEY local ENCRYPT local TEMPNET local MTU IS_WIRELESS=false #local ip TEMPNET="Hostip"$1 echo $TEMPNET eval ip=\$${TEMPNET} TEMPNET=Hostnetmask$1 eval netmask=\$${TEMPNET} netmask=`echo "$netmask" | cut -d " " -f1` TEMPNET=HostActive$1 eval isactive=\$${TEMPNET} TEMPNET=HostDNS$1 eval dns=\$${TEMPNET} TEMPNET="HostUSEDHCP"$1 eval UseDHCP=\$${TEMPNET} TEMPNET=HostGW$1 eval GW=\$${TEMPNET} TEMPNET=HOST_iswireless$1 eval wireless=\$${TEMPNET} TEMPNET=HostMTU$1 eval MTU=\$${TEMPNET} if [ x$wireless = x1 ] then IS_WIRELESS=TRUE TEMPNET=HostESSID$1 eval ESSID=\$${TEMPNET} TEMPNET="HostKey"$1 eval KEY=\$${TEMPNET} TEMPNET=HostUseEncryption$1 eval ENCRYPT=\$${TEMPNET} fi echo "Setup $1 in progress, wireless: $IS_WIRELESS" if [ ! -d $ETCNETDIR/$1 ] then mkdir -p $ETCNETDIR/$1 fi if [ ! -f $ETCNETDIR/$1/options ] then cp -f $TEMPLATES/etcnet/eth/options $ETCNETDIR/$1/options fi if [ x$isactive = x1 ] then change_iface_state $1 enabled #echo "setting $1 to active" #sed -i -e 's/^ONBOOT=.*$/ONBOOT=yes/g' $ETCNETDIR/$1/options #sed -i -e 's/^DISABLED=.*$/DISABLED=no/g' $ETCNETDIR/$1/options else change_iface_state $1 disabled #echo "setting $1 to inactive" #sed -i -e 's/^ONBOOT=.*$/ONBOOT=no/g' $ETCNETDIR/$1/options #sed -i -e 's/^DISABLED=.*$/DISABLED=yes/g' $ETCNETDIR/$1/options fi if [ x$IS_WIRELESS = xTRUE ] then echo "setting $1 wireless" sed -i -e 's/^CONFIG_WIRELESS=.*$/CONFIG_WIRLESS=yes/g' $ETCNETDIR/$1/options #set the key and essid echo "essid $ESSID" > $ETCNETDIR/$1/iwconfig if [ x$ENCRYPT = x1 ] then echo "key $KEY" >> $ETCNETDIR/$1/iwconfig fi else echo "disabling wireless" sed -i -e 's/^CONFIG_WIRLESS=.*$/CONFIG_WIRLESS=no/g' $ETCNETDIR/$1/options fi if [ x$UseDHCP = x0 ] then echo using dhcp sed -i -e 's/^BOOTPROTO=.*$/BOOTPROTO=dhcp/g' $ETCNETDIR/$1/options else echo "using static ip" sed -i -e 's/^BOOTPROTO=.*$/BOOTPROTO=static/g' $ETCNETDIR/$1/options echo "default via $GW" > $ETCNETDIR/$1/ipv4route echo "$ip$netmask" > $ETCNETDIR/$1/ipv4address setup_nameserver $dns fi if [ x$MTU = x ] then echo "MTU is blank, card will use default values" sed -i '/^mtu.*$/d' /etc/net/ifaces/$1/iplink else echo "setting mtu for $1 to $MTU" sed -i '/^mtu.*$/d' /etc/net/ifaces/$1/iplink echo "mtu $MTU " >> /etc/net/ifaces/$1/iplink fi } function find_active () { #HostActiveeth1="1" if [ ! x$USEVNC = x0 ] then rm -f ${BASE}/etc/resolv.conf fi if [ x$MYTHDHCP = x1 ] then #add 127.0.0.1 to /etc/resolv.conf echo "search lan" > ${BASE}/etc/resolv.conf echo "nameserver 127.0.0.1" >> ${BASE}/etc/resolv.conf fi for i in eth0 eth1 wlan0 wlan1 do CURRENTIF="HostActive"$i eval IFSTATE=\$${CURRENTIF} echo $IFSTATE "---" echo $i if [ x$IFSTATE = x1 ] then setup_interfaces $i else change_iface_state $i disabled fi done } function setup_hostname { #set the hostname if [ ! x$hostname = x ] then echo $hostname > ${BASE}/etc/hostname cat $BASE/etc/hosts |grep -v 127.0.0.1|grep -v $hostname > /tmp/hosts #cat $BASE/etc/hosts |grep -v 127.0.0.1|grep -v $hostname | grep -v $ip > /tmp/hosts if [ x$MYTHDHCP = x1 ] then echo "127.0.0.1 localhost " > ${BASE}/etc/hosts echo "$MYTHIP $hostname " >> ${BASE}/etc/hosts else echo "127.0.0.1 $hostname localhost " > ${BASE}/etc/hosts fi cat /tmp/hosts >> ${BASE}/etc/hosts fi kill_dhcp } function vnc_check() { CMDLINE=$(cat /proc/cmdline) echo $CMDLINE |grep -q vnc USEVNC=$? echo $CMDLINE |grep -q nfsroot NETBOOT=$? echo $USEVNC if [ ! x$USEVNC = x0 ] then echo "not using vnc" if [ ! x$NETBOOT = x0 ] then echo "not using netboot" else echo "using netboot" USEVNC=0 fi else echo " using vnc" fi } function setup_MYTH_vars { TEMPMYTH="Hostip"$default_interface #echo $TEMPMYTH eval MYTHIP=\$${TEMPMYTH} TEMPMYTH="HostUSEDHCP"$default_interface eval MYTHDHCP=\$${TEMPMYTH} } function start_network { if [ ! $USEVNC = 0 ] then /etc/net/scripts/network.init reload /etc/net/scripts/network.init restart else echo "VNC/NETBOOT in use, will NOT restart network" fi } function setup_network { setup_MYTH_vars setup_hostname find_active } function stop_network { if [ ! $USEVNC = 0 ] then echo "stopping the network" kill_dhcp flush ip address flush dev eth0 2>&1 >/dev/null ip address flush dev eth1 2>&1 >/dev/null ip address flush dev wlan0 2>&1 >/dev/null ip address flush dev wlan1 2>&1 >/dev/null else echo "VNC/NETBOOT in use, will NOT restart network" fi } #this is used by the install process to start the network function install_network_setup { setup_MYTH_vars setup_hostname stop_network find_active start_network }