# This is not a shell script; it provides functions to network scripts # that source it. source_config () { DEVNAME=`basename $CONFIG | sed 's/^ifcfg-//g'` if basename $CONFIG | grep '[^g]-' >/dev/null 2>&1 ; then PARENTCONFIG=`echo $CONFIG | sed 's/-[^-]*$//g'` PARENTDEVNAME=`basename $PARENTCONFIG | sed 's/^ifcfg-//g'` [ -f $PARENTCONFIG ] || { echo "Missing config file $PARENTCONFIG." >&2 exit 1 } . $PARENTCONFIG fi . $CONFIG } toggle_value() { if [ -z "$2" ] then echo '' elif [ "$2" = "yes" -o "$2" = "YES" ] ; then echo "$1" elif [ "$2" = "no" -o "$2" = "NO" ] ; then echo "-$1" else echo '' fi } do_netreport () { # Notify programs that have requested notification ( cd /var/run/netreport || exit for i in * ; do if [ -f $i ]; then OWNER=`ls -l $i | awk '{ print $3 }'` su $OWNER -c "kill -SIGIO $i >/dev/null 2>&1" > /dev/null 2>&1 || \ rm -f $i >/dev/null 2>&1 fi done ) } need_hostname() { if [ "`hostname`" = "(none)" -o "`hostname`" = "localhost" -o \ "`hostname`" = "localhost.localdomain" ]; then NEEDHOSTNAME=yes else unset NEEDHOSTNAME fi } set_hostname() { hostname $1 if ! grep search /etc/resolv.conf >/dev/null 2>&1; then domain=`echo $1 | sed 's/^[^\.]*\.//'` echo "search $domain" >> /etc/resolv.conf fi } check_device_down () { if echo ${DEVICE} | grep -q ':' ; then if LANG=C ifconfig -a 2>/dev/null | grep -q ${DEVICE} ; then retcode=1 else retcode=0 fi else if LANG=C ifconfig ${DEVICE} 2>/dev/null | grep " UP " >/dev/null 2>&1 ; then retcode=1 else retcode=0 fi fi return $retcode } check_default_route () { return `/sbin/route -n|gawk 'BEGIN{r=1} $3=="0.0.0.0" && $4=="UG" {r=0} END{print r}'` } find_gateway_dev () { . /etc/sysconfig/network if [ "${GATEWAY}" != "" -a "${GATEWAY}" != "none" ] ; then export GATEWAY networks=`/sbin/route -n|awk '{print $1, ENVIRON["GATEWAY"],$3,$8}'|awk '{system("ipcalc --silent --network "$2" "$3" 2>/dev/null")}'|sed s^NETWORK=^^g` for net in $networks; do dev=`/sbin/route -n|grep ^$net|awk '{print $NF}'` if [ "$dev" != "" ] ; then GATEWAYDEV=$dev fi done fi } add_default_route () { . /etc/sysconfig/network find_gateway_dev if [ "${GATEWAY}" != "" -a "${GATEWAY}" != "none" -a "${GATEWAYDEV}" != "" ] ; then if ! check_device_down ; then if [ "$GATEWAY" = "0.0.0.0" ]; then /sbin/route add default ${GATEWAYDEV} else /sbin/route add default gw ${GATEWAY} ${GATEWAYDEV} fi fi fi }