# 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 on" elif [ "$2" = "no" -o "$2" = "NO" ] ; then echo "$1 off" 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 || rm -f $i >/dev/null 2>&1" > /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 $1 | grep -q ':' ; then if LANG=C ifconfig -a 2>/dev/null | grep -q $1 ; then retcode=1 else retcode=0 fi else if LANG=C ip -o link ls dev $1 2>/dev/null | grep ",UP" >/dev/null 2>&1 ; then retcode=1 else retcode=0 fi fi return $retcode } check_link_down () { if [ -x /sbin/mii-tool ]; then output=`/sbin/mii-tool $1 2>&1` if echo $output | grep -q "Operation not supported"; then return 1 elif echo $output | grep -q "link ok"; then return 1 else return 0 fi fi return 0 } check_default_route () { ip route | grep -q default } 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 $1; then if [ "$GATEWAY" = "0.0.0.0" ]; then /sbin/route add default ${GATEWAYDEV} else /sbin/route add default gw ${GATEWAY} ${GATEWAYDEV} fi fi fi } is_wireless_device () { if [ -x /sbin/iwconfig ]; then iwconfig $1 2>&1 | grep -q "no wireless extensions" || return 0 fi return 1 } current_profile () { if [ "${CURRENT_PROFILE}" != "" ]; then echo ${CURRENT_PROFILE} elif [ "${DEFAULT_PROFILE}" != "" ]; then echo ${DEFAULT_PROFILE} else echo "default" fi }