#!/bin/sh # This is a standard inet initialisation # it supposed to to be sourced by inet0 .. inet9 script # and also inetboot # # GNU GPL (c) Eko M. Budi, 2004 # (c) Vector Linux, 2004 # ########################################################### ## The sourcer must set these settings #DEVICE=eth0 #DHCP="no" #IPADDR="192.168.1.1" #NETMASK="255.255.255.0" #GATEWAY="192.168.1.254" #PROBE="no" ########################################################### ## The script PATH="/sbin:/usr/sbin:/bin:/usr/bin" start() { if [ "$DHCP" = "yes" ]; then ## DYNAMIC IP echo "Starting network ${DEVICE} using a DHCP server..." ## increase DELAY if using wireless if [ -x /etc/rc.d/rc.wireless ]; then DELAY=20 else DELAY=10 fi ## use HOSTNAME if available NETNAME=`cat /etc/HOSTNAME 2>/dev/null` if [ "$NETNAME" ]; then dhcpcd -t $DELAY -h ${NETNAME} -d $DEVICE else dhcpcd -t $DELAY -d $DEVICE fi if [ $? != 0 ]; then echo "FAILED" return 1 fi # show the status ifconfig $DEVICE return $? else ## STATIC # Test IPADDR, if invalid, skip IPMASK=`ipmask $NETMASK $IPADDR` if [ ! $? = 0 ]; then echo "Invalid IP/NETMASK = $IPADDR/$NETMASK" return 1 fi BROADCAST=`echo $IPMASK | cut -d " " -f 1` NETWORK=`echo $IPMASK | cut -d " " -f 2` # Going up .. echo "Starting network ${DEVICE} as ${IPADDR}/${NETMASK}..." ifconfig ${DEVICE} ${IPADDR} broadcast ${BROADCAST} netmask ${NETMASK} if [ $? != 0 ]; then return 1 fi # if PROBE is defined, try the gateway 3 times if [ "$GATEWAY" ]; then if [ "$PROBE" = "yes" ]; then echo "Probing the gateway $GATEWAY " for ii in 1 2 3; do sleep 1 ping -c 1 -w $ii $GATEWAY > /dev/null if [ $? = 0 ]; then break; fi if [ $ii = 3 ]; then echo " FAILED !!!" echo Canceling network $DEVICE ... ifconfig $DEVICE down return 1 fi done fi # set the default gateway if it is not defined yet route | grep -e "^default" &> /dev/null if [ $? != 0 ]; then echo "Setting up gateway $GATEWAY ..." route add default gw ${GATEWAY} netmask 0.0.0.0 $DEVICE fi fi return 0 fi } stop() { # stop the default gateway if it is ours current_gw=`route -n | grep -e "^0.0.0.0" | cut -f 2 -d ' '` if [ "$current_gw" = "$GATEWAY" ]; then echo "Deleting gateway $GATEWAY..." route del default fi # stop the interface echo "Stopping network $DEVICE ..." if [ "$DHCP" = "yes" ]; then dhcpcd -k $DEVICE else ifconfig $DEVICE down fi } status() { ifconfig $DEVICE } case $1 in start) start ;; stop) stop ;; restart) $0 stop sleep 1 $0 start ;; reload) ;; status) status ;; *) echo "Usage: $0 {start|stop|restart|reload|status}" esac