Metropoli BBS
VIEWER: mkdev-tcp MODE: TEXT (ASCII)
:
#      @(#)tcp	4.1 SCO Unix 3.2 TCP/IP/NFS  source
#      SCCS IDENTIFICATION
#
#	System V STREAMS TCP - Release 3.0
#
#	Copyright 1987, 1988, 1989 Lachman Associates, Incorporated (LAI)
#
#	All Rights Reserved.
#
#	The copyright above and this notice must be preserved in all
#	copies of this source code.  The copyright above does not
#	evidence any actual or intended publication of this source
#	code.
#
#	This is unpublished proprietary trade secret source code of
#	Lachman Associates.  This source code may not be copied,
#	disclosed, distributed, demonstrated or licensed except as
#	expressly authorized by Lachman Associates.
#
#	System V STREAMS TCP was jointly developed by Lachman
#	Associates and Convergent Technologies.
#
#
ND=/etc/conf/node.d
E3A_CNT=0
E3B_CNT=0
E3C_CNT=0
E3D_CNT=0
EXOS_CNT=0
HPE_CNT=0
HPI_CNT=0
I3B_CNT=0
I6E_CNT=0
TOK_CNT=0
WDN_CNT=0
SON_CNT=0
NAT_CNT=0
WDT_CNT=0
DIDDOMAIN=

#
# Prompt with mesg, return non-zero on q. Also allows setting -x and +x,
# shell escapes and the passing of default values
#
# Usage: prompt "message" [default]
# Argument is a quoted message
# Dependencies: expr
# Notes: returns 1 if the user answers q or Q, returns 0 otherwise
#	 if $quit is not set, it is set to "quit"
#	 $cmd is set to whatever is input by the user, and then can
#		subsequently be used in the shell script.
#
prompt() {
	_mesg=$1
	_default=$2
	while	echo "\n${_mesg} [${_default}]: \c" >&2
	do	read cmd < /dev/tty
		case $cmd in
		+x|-x)	set $cmd					;;
		!*)	eval `expr "$cmd" : "!\(.*\)"`			;;
		"")	# If there is an second argument use it
			# as the default else loop until 'cmd' is set
			[ "$2" ] && { 
				cmd=$2
				return 0
			}
			: continue
			;;
		*)	unset _mesg
			return 0					;;
		esac
	done
}

#
# The following three functions create broadcast addresses 
# based upon the ip address placed in the variable IP
# the result is placed in BROAD_ADDR
#
BROAD_ADDR=
IP=

getbaddr() {
	if [ $drv = "e3A" ] ; then
	BADDR_PROMPT="\nInterface $drv$E3A_CNT broadcast address [$BROAD_ADDR]: \c"
	elif [ $drv = "e3B" ] ; then
	BADDR_PROMPT="\nInterface $drv$E3B_CNT broadcast address [$BROAD_ADDR]: \c"
	elif [ $drv = "e3C" ] ; then
	BADDR_PROMPT="\nInterface $drv$E3C_CNT broadcast address [$BROAD_ADDR]: \c"
	elif [ $drv = "e3D" ] ; then
	BADDR_PROMPT="\nInterface $drv$E3D_CNT broadcast address [$BROAD_ADDR]: \c"
	elif [ $drv = "tok" ] ; then
	BADDR_PROMPT="\nInterface $drv$TOK_CNT broadcast address [$BROAD_ADDR]: \c"
	elif [ $drv = "exos" ] ; then
	BADDR_PROMPT="\nInterface $drv$EXOS_CNT broadcast address [$BROAD_ADDR]: \c"
	elif [ $drv = "hpe" ] ; then
	BADDR_PROMPT="\nInterface $drv$HPE_CNT broadcast address [$BROAD_ADDR]: \c"
	elif [ $drv = "hpi" ] ; then
	BADDR_PROMPT="\nInterface $drv$HPI_CNT broadcast address [$BROAD_ADDR]: \c"
	elif [ $drv = "i3B" ] ; then
	BADDR_PROMPT="\nInterface $drv$I3B_CNT broadcast address [$BROAD_ADDR]: \c"
	elif [ $drv = "i6E" ] ; then
	BADDR_PROMPT="\nInterface $drv$I6E_CNT broadcast address [$BROAD_ADDR]: \c"
	elif [ $drv = "wdn" ] ; then
	BADDR_PROMPT="\nInterface $drv$WDN_CNT broadcast address [$BROAD_ADDR]: \c"
	elif [ $drv = "wdt" ] ; then
	BADDR_PROMPT="\nInterface $drv$WDT_CNT broadcast address [$BROAD_ADDR]: \c"
	elif [ $drv = "son" ] ; then
	BADDR_PROMPT="\nInterface $drv$SON_CNT broadcast address [$BROAD_ADDR]: \c"
	elif [ $drv = "nat" ] ; then
	BADDR_PROMPT="\nInterface $drv$NAT_CNT broadcast address [$BROAD_ADDR]: \c"
	else
	BADDR_PROMPT="\nInterface $drv broadcast address [$BROAD_ADDR]: \c"
	fi
	while	echo  $BADDR_PROMPT
	do	read broad_addr < /dev/tty
		case "$broad_addr" in
		[0-9]*)	BROAD_ADDR=$broad_addr
			break
			;;
		"")	BADDR=$BROAD_ADDR
			break
			;;
		*)	echo "Address must have n.n.n.n form, i.e., $BROAD_ADDR"
			;;
		esac
	done
}

baddr0() {
	firstbyte=`/bin/echo $IP | sed -e 's/\..*$//'`
	if expr $firstbyte \< 128 > /dev/null ; then
		BROAD_ADDR=`/bin/echo $IP | sed -e 's/\(.*\)\..*\..*\..*$/\1.0.0.0/'`
	elif expr $firstbyte \< 192 > /dev/null ; then
		BROAD_ADDR=`/bin/echo $IP | sed -e 's/\(.*\..*\)\..*\..*$/\1.0.0/'`
	else
		BROAD_ADDR=`/bin/echo $IP | sed -e 's/\(.*\..*\..*\)\..*$/\1.0/'`
	fi
	getbaddr
}

baddr255() {
	firstbyte=`/bin/echo $IP | sed -e 's/\..*$//'`
	if expr $firstbyte \< 128 > /dev/null ; then
		BROAD_ADDR=`/bin/echo $IP | sed -e 's/\(.*\)\..*\..*\..*$/\1.255.255.255/'`
	elif expr $firstbyte \< 192 > /dev/null ; then
		BROAD_ADDR=`/bin/echo $IP | sed -e 's/\(.*\..*\)\..*\..*$/\1.255.255/'`
	else
		BROAD_ADDR=`/bin/echo $IP | sed -e 's/\(.*\..*\..*\)\..*$/\1.255/'`
	fi
	getbaddr
}

# Prompt for yes or no answer - returns non-zero for no
getyn() {
	while	read yn < /dev/tty
	do	case $yn in
		[yY]*)	return 0 			;;
		[nN]*)	return 1			;;
		*)	echo "enter either y or n" 	;;
		esac
	done
}

#
# get netmask for interface
#
getnetmask() {
	if [ $drv = "slip" ] ; then
		IP=$IP_SRC
	fi
	firstbyte=`/bin/echo $IP | sed -e 's/\..*$//'`
	if expr $firstbyte \< 128 > /dev/null ; then
		DEF_MASK=255.0.0.0
	elif expr $firstbyte \< 192 > /dev/null ; then
		DEF_MASK=255.255.0.0
	else
		DEF_MASK=255.255.255.0
	fi
	if [ $drv = "e3A" ] ; then
	    NM_PROMPT="\nInterface $drv$E3A_CNT netmask [$DEF_MASK]: \c"
	elif [ $drv = "e3B" ] ; then
	    NM_PROMPT="\nInterface $drv$E3B_CNT netmask [$DEF_MASK]: \c"
	elif [ $drv = "e3C" ] ; then
	    NM_PROMPT="\nInterface $drv$E3C_CNT netmask [$DEF_MASK]: \c"
	elif [ $drv = "e3D" ] ; then
	    NM_PROMPT="\nInterface $drv$E3D_CNT netmask [$DEF_MASK]: \c"
	elif [ $drv = "tok" ] ; then
	    NM_PROMPT="\nInterface $drv$TOK_CNT netmask [$DEF_MASK]: \c"
	elif [ $drv = "exos" ] ; then
	    NM_PROMPT="\nInterface $drv$EXOS_CNT netmask [$DEF_MASK]: \c"
	elif [ $drv = "hpe" ] ; then
	    NM_PROMPT="\nInterface $drv$HPE_CNT netmask [$DEF_MASK]: \c"
	elif [ $drv = "hpi" ] ; then
	    NM_PROMPT="\nInterface $drv$HPI_CNT netmask [$DEF_MASK]: \c"
	elif [ $drv = "i3B" ] ; then
	    NM_PROMPT="\nInterface $drv$I3B_CNT netmask [$DEF_MASK]: \c"
	elif [ $drv = "i6E" ] ; then
	    NM_PROMPT="\nInterface $drv$I6E_CNT netmask [$DEF_MASK]: \c"
	elif [ $drv = "wdn" ] ; then
	    NM_PROMPT="\nInterface $drv$WDN_CNT netmask [$DEF_MASK]: \c"
	elif [ $drv = "wdt" ] ; then
	    NM_PROMPT="\nInterface $drv$WDT_CNT netmask [$DEF_MASK]: \c"
	elif [ $drv = "son" ] ; then
	    NM_PROMPT="\nInterface $drv$SON_CNT netmask [$DEF_MASK]: \c"
	elif [ $drv = "nat" ] ; then
	    NM_PROMPT="\nInterface $drv$NAT_CNT netmask [$DEF_MASK]: \c"
	elif [ $drv = "slip" ] ; then
	    NM_PROMPT="\nSLIP Interface on $SLIP_TTY netmask [$DEF_MASK]: \c"
	else
	    NM_PROMPT="\nInterface $drv address [$DEF_MASK]: \c"
	fi
	cmd=
	while [ -z "$cmd" -o "$cmd" = "quit" ] ; do
		prompt "$NM_PROMPT" "$DEF_MASK"
		NETMASK="netmask $cmd"
#		if [ "$cmd" = "$DEF_MASK" ] ; then
#		    NETMASK=""
#		else
#		fi
	done
}


#
# get a valid slip interface
#
SLIP_TTY=
IP_SRC=
IP_DST=
BAUD=

getslipif() {
	echo ""
	while	echo "Tty line: \c"
	do	read SLIP_TTY < /dev/tty
		case "$SLIP_TTY" in
		t*) 	break 
			;;
		*)	echo 'Try ttyXX (where XX is a number)'
			;;
		esac
	done
	while	echo "Interface source (you) IP address: \c"
	do	read ip < /dev/tty
		case "$ip" in
		[0-9]*)	IP_SRC=$ip
			break
			;;
		*)	echo "Address must have n.n.n.n form, i.e., 132.147.160.1"
			;;
		esac
	done
	while	echo "Interface destination (them) IP address: \c"
	do	read ip < /dev/tty
		case "$ip" in
		[0-9]*)	IP_DST=$ip
			break
			;;
		*)	echo "Address must have n.n.n.n form, i.e., 132.147.160.1"
			;;
		esac
	done
	echo "Baud rate (default 9600): \c"
	read BAUD < /dev/tty
	getnetmask
}

#
# get ip address
#
DEF_IP_ADDR="132.147.160.1"
IP=

getipaddr() {
	if [ $drv = "e3A" ] ; then
	    IP_PROMPT="\nInterface $drv$E3A_CNT IP address [$DEF_IP_ADDR]: \c"
	    COUNT=$E3A_CNT
	elif [ $drv = "e3B" ] ; then
	    IP_PROMPT="\nInterface $drv$E3B_CNT IP address [$DEF_IP_ADDR]: \c"
	    COUNT=$E3B_CNT
	elif [ $drv = "e3C" ] ; then
	    IP_PROMPT="\nInterface $drv$E3C_CNT IP address [$DEF_IP_ADDR]: \c"
	    COUNT=$E3C_CNT
	elif [ $drv = "e3D" ] ; then
	    IP_PROMPT="\nInterface $drv$E3D_CNT IP address [$DEF_IP_ADDR]: \c"
	    COUNT=$E3D_CNT
	elif [ $drv = "tok" ] ; then
	    IP_PROMPT="\nInterface $drv$TOK_CNT IP address [$DEF_IP_ADDR]: \c"
	    COUNT=$TOK_CNT
	elif [ $drv = "exos" ] ; then
	    IP_PROMPT="\nInterface $drv$EXOS_CNT IP address [$DEF_IP_ADDR]: \c"
	    COUNT=$EXOS_CNT
	elif [ $drv = "wdn" ] ; then
	    IP_PROMPT="\nInterface $drv$WDN_CNT IP address [$DEF_IP_ADDR]: \c"
	    COUNT=$WDN_CNT
	elif [ $drv = "wdt" ] ; then
	    IP_PROMPT="\nInterface $drv$WDT_CNT IP address [$DEF_IP_ADDR]: \c"
	    COUNT=$WDT_CNT
	elif [ $drv = "son" ] ; then
	    IP_PROMPT="\nInterface $drv$SON_CNT IP address [$DEF_IP_ADDR]: \c"
	    COUNT=$SON_CNT
	elif [ $drv = "nat" ] ; then
	    IP_PROMPT="\nInterface $drv$NAT_CNT IP address [$DEF_IP_ADDR]: \c"
	    COUNT=$NAT_CNT
	elif [ $drv = "hpe" ] ; then
	    IP_PROMPT="\nInterface $drv$HPE_CNT IP address [$DEF_IP_ADDR]: \c"
	    COUNT=$HPE_CNT
	elif [ $drv = "hpi" ] ; then
	    IP_PROMPT="\nInterface $drv$HPI_CNT IP address [$DEF_IP_ADDR]: \c"
	    COUNT=$HPI_CNT
	elif [ $drv = "i3B" ] ; then
	    IP_PROMPT="\nInterface $drv$I3B_CNT IP address [$DEF_IP_ADDR]: \c"
	    COUNT=$I3B_CNT
	elif [ $drv = "i6E" ] ; then
	    IP_PROMPT="\nInterface $drv$I6E_CNT IP address [$DEF_IP_ADDR]: \c"
	    COUNT=$I6E_CNT
	else
	    IP_PROMPT="\nInterface $drv IP address [$DEF_IP_ADDR]: \c"
	    COUNT=""
	fi
	while	echo  $IP_PROMPT
	do	read ip < /dev/tty
		case "$ip" in
		[0-9]*)	IP=$ip
			break
			;;
		"")	IP=$DEF_IP_ADDR
			break
			;;
		*)	p "Address must have n.n.n.n form, i.e., 192.9.200.9"
			;;
		esac
	done

	# Make sure this IP address is in /etc/hosts as us
	grep $IP /etc/hosts 2> /dev/null || {
	    if [ ! -f /etc/hosts ] ; then
		/bin/echo "127.0.0.1\tlocalhost loopback lb" > /etc/hosts
		chmod 644 /etc/hosts
		chown bin /etc/hosts
		chgrp bin /etc/hosts
	    fi
	    if [ -z "$HOSTNAME" ] ; then
		set -- `cat /etc/systemid`
		HOSTNAME=${1:-$2}
	    fi
	    FULLNAME=$HOSTNAME.$DOMAIN
	    /bin/echo "$IP\t$HOSTNAME $FULLNAME" >> /etc/hosts
	}
}

#
# get broadcast address
#
BROADCAST="broadcast"
getbroadaddr() {
	echo "Does interface $drv$COUNT use a broadcast address of all 0's? [y/n]: \c"
	if getyn ; then
		baddr0
	else
		baddr255
	fi
	BROADCAST="broadcast $BROAD_ADDR"
}
#
# get domain name for local host
#
getdomname() {
	cmd=
	while [ -z "$cmd"  -o "$cmd" = "quit" ] ; do
		prompt "Enter DOMAIN name for $drv" "sco.COM"
		DOMAIN=$cmd
	done
	DIDDOMAIN="_DONE_"
}

# main
# DRVLIST=" e3A e3B e3C e3D ni5210 pc586 wd8003 slip "
type=`sed -n 's/^#typ=\(.*\)$/\1/p' /etc/perms/inst`
if [ "$type" = "386GT" ]
then
	DRVLIST="  nat wdt son e3A e3B e3D exos hpe hpi i3B i6E slip tok wdn "
elif [ "$type" = "386MC" ]
then
	DRVLIST=" nat wdt son e3C slip tok wdn "
else
	DRVLIST=" nat wdt son e3A e3B e3C e3D exos hpe hpi i3B i6E slip tok wdn "
fi

while true ; do
    while true ; do
	if [ $# = 0 ]; then
	    tput clear
	    echo "\t\t\tTCP/IP Ethernet Driver Configuration"
	    echo "\nWhich driver(s) will TCP/IP be using? "
	    echo "\nPlease choose one of the following:"
	    for i in $DRVLIST; do
		echo "\t$i"
	    done
	    echo "\nEnter the name of the driver TCP/IP will use or enter q to quit: \c"

	    read drv < /dev/tty

	    if [ "$drv" = quit -o "$drv" = q ] ; then
		rm -f /etc/rc2.d/S85tcp /etc/rc0.d/K85tcp
		ln /etc/tcp /etc/rc2.d/S85tcp
		ln /etc/tcp /etc/rc0.d/K85tcp
		echo "TCP/IP Driver Configuration Completed."
		exit 1
	    fi
	else
	    if [ $# -eq 0 ] ; then
		rm -f /etc/rc2.d/S85tcp /etc/rc0.d/K85tcp
		ln /etc/tcp /etc/rc2.d/S85tcp
		ln /etc/tcp /etc/rc0.d/K85tcp
		echo "TCP/IP Driver Configuration Completed."
		exit 1
	    fi
	    drv=$1
	    shift
	fi

	if expr "$DRVLIST" : ".* $drv " > /dev/null ; then
	    break
	fi

	echo "'$drv' is not a valid driver selection.  Please enter a valid"
	echo "ethernet driver, or 'quit' to end."
	echo "Strike ENTER when ready.\c"
	read toast < /dev/tty
    done

    #
    # Do configuration
    #
    echo "Configuring TCP/IP for $drv.  Please Wait."

    #
    # Determine node file
    #
    case $drv in
	pc586)	NODE=$ND/pc586 ;;
	exos)	NODE=$ND/exos$EXOS_CNT ;;
	wdn)	NODE=$ND/wdn$WDN_CNT ;;
	wdt)	NODE=$ND/wdt$WDT_CNT ;;
	son)	NODE=$ND/son$SON_CNT ;;
	nat)	NODE=$ND/nat$NAT_CNT ;;
	ni5210)	NODE=$ND/ni ;;
	e3A)	NODE=$ND/e3A$E3A_CNT ;;
	e3B)	NODE=$ND/e3B$E3B_CNT ;;
	e3C)	NODE=$ND/e3C$E3C_CNT ;;
	e3D)	NODE=$ND/e3D$E3D_CNT ;;
	slip)	NODE=$ND/slip ;;
	tok)	NODE=/$ND/tok$TOK_CNT ;;
	hpe)	NODE=$ND/hpe$HPE_CNT ;;
	hpi)	NODE=$ND/hpi$HPI_CNT ;;
	i3B)	NODE=$ND/i3B$I3B_CNT ;;
	i6E)	NODE=$ND/i6E$I6E_CNT ;;
	*)
		echo "Unknown Driver.  Configuration Aborted"
		exit 1
		;;
    esac

    #
    # Determine whether nodes are cloning or not
    #

    if [ ! -f $NODE ]; then
	if [ $drv = "e3A" ] ; then
	echo "$drv$E3A_CNT is not installed on this system."
	elif [ $drv = "e3B" ] ; then
	echo "$drv$E3B_CNT is not installed on this system."
	elif [ $drv = "e3C" ] ; then
	echo "$drv$E3C_CNT is not installed on this system."
	elif [ $drv = "e3D" ] ; then
	echo "$drv$E3D_CNT is not installed on this system."
	elif [ $drv = "tok" ] ; then
	echo "$drv$TOK_CNT is not installed on this system."
	elif [ $drv = "exos" ] ; then
	echo "$drv$EXOS_CNT is not installed on this system."
	elif [ $drv = "wdn" ] ; then
	echo "$drv$WDN_CNT is not installed on this system."
	elif [ $drv = "wdt" ] ; then
	echo "$drv$WDT_CNT is not installed on this system."
	elif [ $drv = "son" ] ; then
	echo "$drv$SON_CNT is not installed on this system."
	elif [ $drv = "nat" ] ; then
	echo "$drv$NAT_CNT is not installed on this system."
	elif [ $drv = "hpe" ] ; then
	echo "$drv$HPE_CNT is not installed on this system."
	elif [ $drv = "hpi" ] ; then
	echo "$drv$HPI_CNT is not installed on this system."
	elif [ $drv = "i3B" ] ; then
	echo "$drv$I3B_CNT is not installed on this system."
	elif [ $drv = "i6E" ] ; then
	echo "$drv$I6E_CNT is not installed on this system."
	else
	echo "$drv is not installed on this system."
	fi
	echo "Please install the driver and re-run $0"
	exit 1
    fi
    #
    if [ -z "${DIDDOMAIN}" ] ; then
	getdomname
    fi

    if [ $drv = "slip" ] ; then
	getslipif
    else
	getipaddr
	getbroadaddr
	getnetmask
    fi

    #
    # Determine ifconfig line
    #
    case $drv in
	pc586)
		IFCONFIG="	ifconfig en0 $IP -trailers $NETMASK $BROADCAST"
		TESTIF="ifconfig en0"
		;;
	exos)
		IFCONFIG="	ifconfig exos$EXOS_CNT $IP -trailers $NETMASK $BROADCAST"
		TESTIF="ifconfig exos$EXOS_CNT"
		;;
	wdn)
		IFCONFIG="	ifconfig wdn$WDN_CNT $IP -trailers $NETMASK $BROADCAST"
		TESTIF="ifconfig wdn$WDN_CNT"
		;;
	wdt)
		IFCONFIG="	ifconfig wdt$WDT_CNT $IP -trailers $NETMASK $BROADCAST"
		TESTIF="ifconfig wdt$WDT_CNT"
		;;
	son)
		IFCONFIG="	ifconfig son$SON_CNT $IP -trailers $NETMASK $BROADCAST"
		TESTIF="ifconfig son$SON_CNT"
		;;
	nat)
		IFCONFIG="	ifconfig nat$NAT_CNT $IP -trailers $NETMASK $BROADCAST"
		TESTIF="ifconfig nat$NAT_CNT"
		;;
	ni5210)
		IFCONFIG="	ifconfig en0 $IP -trailers $NETMASK $BROADCAST"
		TESTIF="ifconfig en0"
		;;
	e3A)
		IFCONFIG="	ifconfig e3A$E3A_CNT $IP onepacket 512 3 -trailers $NETMASK $BROADCAST"
		TESTIF="ifconfig e3A$E3A_CNT"
		;;
	e3B)
		IFCONFIG="	ifconfig e3B$E3B_CNT $IP -trailers $NETMASK $BROADCAST"
		TESTIF="ifconfig e3B$E3B_CNT"
		;;
	e3C)
		IFCONFIG="	ifconfig e3C$E3C_CNT $IP -trailers $NETMASK $BROADCAST"
		TESTIF="ifconfig e3C$E3C_CNT"
		;;
	e3D)
		IFCONFIG="	ifconfig e3D$E3D_CNT $IP -trailers $NETMASK $BROADCAST"
		TESTIF="ifconfig e3D$E3D_CNT"
		;;
	slip)	if [ -n "$NETMASK" ] ; then
		    IFCONFIG="	NETMASK=\"$NETMASK\" /etc/slattach $SLIP_TTY $IP_SRC $IP_DST $BAUD"
		else
		    IFCONFIG="	/etc/slattach $SLIP_TTY $IP_SRC $IP_DST $BAUD"
		fi
		TESTIF="\/etc\/slattach $SLIP_TTY"
		;;
	tok)
	    	IFCONFIG="	ifconfig tok$TOK_CNT $IP -trailers $NETMASK $BROADCAST"
		TESTIF="ifconfig tok$TOK_CNT"
		;;
	hpe)
		IFCONFIG="	ifconfig hpe$HPE_CNT $IP -trailers $NETMASK $BROADCAST"
		TESTIF="ifconfig hpe$HPE_CNT"
		;;
	hpi)
		IFCONFIG="	ifconfig hpi$HPI_CNT $IP -trailers $NETMASK $BROADCAST"
		TESTIF="ifconfig hpi$HPI_CNT"
		;;
	i3B)
		IFCONFIG="	ifconfig i3B$I3B_CNT $IP -trailers $NETMASK $BROADCAST"
		TESTIF="ifconfig i3B$I3B_CNT"
		;;
	i6E)
		IFCONFIG="	ifconfig i6E$I6E_CNT $IP -trailers $NETMASK $BROADCAST"
		TESTIF="ifconfig i6E$I6E_CNT"
		;;
	*)
		echo "Unknown Driver.  Configuration Aborted"
		exit 1
		;;
    esac

    exec < $NODE
    read major node type minor 
    echo Adding $node
    if [ $major = clone ]; then
	TESTCF="cenetb ip \\/dev\\/$node"
	case $drv in
		e3A)
			OUTPUT="	cenetb ip /dev/$node e3A$E3A_CNT"
			E3A_CNT=`expr $E3A_CNT + 1`
			;;
		e3B)
			OUTPUT="	cenetb ip /dev/$node e3B$E3B_CNT"
			E3B_CNT=`expr $E3B_CNT + 1`
			;;
		e3C)
			OUTPUT="	cenetb ip /dev/$node e3C$E3C_CNT"
			E3C_CNT=`expr $E3C_CNT + 1`
			;;
		e3D)
			OUTPUT="	cenetb ip /dev/$node e3D$E3D_CNT"
			E3D_CNT=`expr $E3D_CNT + 1`
			;;
		exos)
			OUTPUT="	cenetb ip /dev/$node exos$EXOS_CNT"
			EXOS_CNT=`expr $EXOS_CNT + 1`
			;;
		wdn)
			OUTPUT="	cenetb ip /dev/$node wdn$WDN_CNT"
			WDN_CNT=`expr $WDN_CNT + 1`
			;;
		wdt)
			OUTPUT="	cenetb ip /dev/$node wdt$WDT_CNT"
			WDT_CNT=`expr $WDT_CNT + 1`
			;;
		son)
			OUTPUT="	cenetb ip /dev/$node son$SON_CNT"
			SON_CNT=`expr $SON_CNT + 1`
			;;
		nat)
			OUTPUT="	cenetb ip /dev/$node nat$NAT_CNT"
			NAT_CNT=`expr $NAT_CNT + 1`
			;;
		slip)
			OUTPUT=
			;;
		tok) 
			OUTPUT="	cenetb ip /dev/$node tok$TOK_CNT"
			TOK_CNT=`expr $TOK_CNT + 1`
			;;
		hpe)
			OUTPUT="	cenetb ip /dev/$node hpe$HPE_CNT"
			HPE_CNT=`expr $HPE_CNT + 1`
			;;
		hpi)
			OUTPUT="	cenetb ip /dev/$node hpi$HPI_CNT"
			HPI_CNT=`expr $HPI_CNT + 1`
			;;
		i3B)
			OUTPUT="	cenetb ip /dev/$node i3B$I3B_CNT"
			I3B_CNT=`expr $I3B_CNT + 1`
			;;
		i6E)
			OUTPUT="	cenetb ip /dev/$node i6E$I6E_CNT"
			I6E_CNT=`expr $I6E_CNT + 1`
			;;
		*)
			OUTPUT="	cenetb ip /dev/$node en0"
			;;
	esac
    else
	read major2 node2 type2 minor2
	TESTCF="senetb ip \\/dev\\/$node"
	case $drv in
		e3A)
			OUTPUT="	senet ip /dev/$node /dev/$node2 e3A$E3A_CNT"
			E3A_CNT=`expr $E3A_CNT + 1`
			;;
		e3B)
			OUTPUT="	senet ip /dev/$node /dev/$node2 e3B$E3B_CNT"
			E3B_CNT=`expr $E3B_CNT + 1`
			;;
		e3C)
			OUTPUT="	senet ip /dev/$node /dev/$node2 e3C$E3C_CNT"
			E3C_CNT=`expr $E3C_CNT + 1`
			;;
		e3D)
			OUTPUT="	senet ip /dev/$node /dev/$node2 e3D$E3D_CNT"
			E3D_CNT=`expr $E3D_CNT + 1`
			;;
		exos)
			OUTPUT="	senet ip /dev/$node /dev/$node2 exos$EXOS_CNT"
			EXOS_CNT=`expr $EXOS_CNT + 1`
			;;
		wdn)
			OUTPUT="	senet ip /dev/$node /dev/$node2 wdn$WDN_CNT"
			WDN_CNT=`expr $WDN_CNT + 1`
			;;
		wdt)
			OUTPUT="	senet ip /dev/$node /dev/$node2 wdt$WDT_CNT"
			WDT_CNT=`expr $WDT_CNT + 1`
			;;
		son)
			OUTPUT="	senet ip /dev/$node /dev/$node2 son$SON_CNT"
			SON_CNT=`expr $SON_CNT + 1`
			;;
		nat)
			OUTPUT="	senet ip /dev/$node /dev/$node2 n$NAT_CNT"
			NAT_CNT=`expr $NAT_CNT + 1`
			;;
		hpe)
			OUTPUT="	senet ip /dev/$node /dev/$node2 hpe$HPE_CNT"
			HPE_CNT=`expr $HPE_CNT + 1`
			;;
		hpi)
			OUTPUT="	senet ip /dev/$node /dev/$node2 hpi$HPI_CNT"
			HPI_CNT=`expr $HPI_CNT + 1`
			;;
		i3B)
			OUTPUT="	senet ip /dev/$node /dev/$node2 i3B$I3B_CNT"
			I3B_CNT=`expr $I3B_CNT + 1`
			;;
		i6E)
			OUTPUT="	senet ip /dev/$node /dev/$node2 i6E$I6E_CNT"
			I6E_CNT=`expr $I6E_CNT + 1`
			;;
		slip)
			OUTPUT=
			;;
		tok)
			OUTPUT="	senet ip /dev/$node /dev/$node2 tok$TOK_CNT"
			TOK_CNT=`expr $TOK_CNT + 1`
			;;
		*)
			OUTPUT="	senet ip /dev/$node /dev/$node2 en0"
			;;
	esac
    fi


    #
    # Modify strcf
    #

    if [ -n "$OUTPUT" ] ; then
	sed -e "/$TESTCF/d" /etc/strcf > /tmp/bog$$
	cp /tmp/bog$$ /etc/strcf
	rm -f /tmp/bog$$
	ed -s /etc/strcf << TOAST > /dev/null
/	loopback/
i
$OUTPUT
.
w
q
TOAST
    fi

    #
    # Modify /etc/tcp
    #

    if [ -n "$IFCONFIG" ] ; then
	sed -e "/$TESTIF/d" /etc/tcp > /tmp/bog$$
	cp /tmp/bog$$ /etc/tcp
	rm -f /tmp/bog$$
	ed -s /etc/tcp << TOAST > /dev/null
/ifconfig/
a
$IFCONFIG
.
w
q
TOAST
    fi

    #
    # Modify /etc/default/tcp
    #
    ed -s /etc/default/tcp << TOAST > /dev/null
/^DOMAIN/
d
a
DOMAIN=$DOMAIN
.
w
q
TOAST

done		# end while true do

echo "TCP/IP Configuration Complete."
exit 0
[ RETURN TO DIRECTORY ]