aboutsummaryrefslogblamecommitdiff
path: root/release/netinst.sh
blob: 41e0c90ff831fce27f380175f3f8a65730b76bb3 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12

           
                                            








                                                                         
                                                       
 
                                             




                               
                                   
                     
 

                      






                            
                    
                                     
                            



                     


                                        
                                                                                                       
                                             


                                                            
                                          

                  

                                        
 
                                                                         
                                                                                              
                                

          



                                                                                                  

 

                     

                                                                            





                                                                             
                                                 


                                                                

                                          
                                









                                                                              

 
                      
 

















                                                                           


                                                                




                                                              
                              

                                                                       
                                                                   





                              

                            



               



                                                                              
                           
                                                     
                                                                            
                                                                                 

                                     

                                               
                                        



                                                                           


                                                                     
 
                                   
 
                                          
                                                                    

                                                      


                          
                                
                                                                             
                                                
                  




                                                                                                                                          

                                







                                                                                                      
                                                                                                                     
                                
                                                                                             




                                                                                        


                          
                                
                                                                                         



                                                                                     


                          
                
 
#!/stand/sh
#
# netinst.sh - configure the user's network.
#
# Written:  November 11th, 1994
# Copyright (C) 1994 by Jordan K. Hubbard
#
# Permission to copy or use this software for any purpose is granted
# provided that this message stay intact, and at this location (e.g. no
# putting your name on top after doing something trivial like reindenting
# it, just to make it look like you wrote it!).
#
# $Id: netinst.sh,v 1.16 1994/12/05 00:13:11 ache Exp $

if [ "${_NETINST_SH_LOADED_}" = "yes" ]; then
	return 0
else
	_NETINST_SH_LOADED_=yes
fi

# Grab the miscellaneous functions.
. /stand/miscfuncs.sh

network_set_defaults()
{
	HOSTNAME=""
	DOMAIN=""
	NETMASK="0xffffff00"
	IPADDR="127.0.0.1"
	IFCONFIG_FLAGS=""
	REMOTE_HOSTIP=""
	REMOTE_IPADDR=""
	INTERFACE=""
	SERIAL_INTERFACE="/dev/cuaa0"
	SERIAL_SPEED="38400"
}

network_basic_setup()
{
	HOSTNAME=""
	while [ "${HOSTNAME}" = "" ]; do
		DEFAULT_VALUE=""
		if ! network_dialog "What is the fully qualified name of this host?"; then return 1; fi
		if [ "${ANSWER}" = "" ]; then
			error "You must select a host name!"
			continue
		else
			HOSTNAME=${ANSWER}
		fi
	done
	echo ${HOSTNAME} > ${ETC}/myname
	${HOSTNAME_CMD} ${HOSTNAME}

	DEFAULT_VALUE=`echo ${HOSTNAME} | sed -e 's/[^.]*\.//' | grep \.`
	if network_dialog "What is the domain name of this host (Internet, not YP/NIS)?"; then
		DOMAIN=${ANSWER}
	fi

	DEFAULT_VALUE=${IPADDR}
	if ! network_dialog "What is the IP address of this host?"; then return 1; fi
	IPADDR=${ANSWER}
       	echo "${IPADDR} ${HOSTNAME} `echo ${HOSTNAME} | sed -e 's/\.${DOMAIN}//'`" >> ${ETC}/hosts
}

network_setup_ether()
{
	dialog  --title "Ethernet Interface Name" --menu \
	"Please select the type of ethernet interface you have:\n" -1 -1 8 \
	"ed0" "WD80x3, SMC, Novell NE[21]000 or 3C503 generic NIC at 0x280" \
	"ed1" "Same as above, but at address 0x300 and IRQ 5" \
	"ep0" "3COM 3C509 at address 0x300 and IRQ 10" \
	"de0" "DEC PCI ethernet adapter (or compatible)" \
	"ie0" "AT&T StarLan and EN100 family at 0x360 and IRQ 7" \
	"is0" "Isolan 4141-0 or Isolink 4110 at 0x280 and IRQ 7" \
	"le0" "DEC Etherworks ethernet adapter" \
	"ze0" "PCMCIA IBM or National card at 0x300 and IRQ 5" \
	  2> ${TMP}/menu.tmp.$$

	RETVAL=$?
	INTERFACE=`cat ${TMP}/menu.tmp.$$`
	rm -f ${TMP}/menu.tmp.$$
	if ! handle_rval ${RETVAL}; then return 1; fi
}

network_setup_remote()
{
	DEFAULT_VALUE="${REMOTE_IPADDR}"
	if ! network_dialog "What is the IP number for the remote host?"; then
		return 1
	fi
	REMOTE_IPADDR=${ANSWER}
}

network_setup_serial()
{
	network_setup_remote
	INTERFACE=$1

	DEFAULT_VALUE=${SERIAL_INTERFACE}
	if ! network_dialog "What serial port do you wish to use?"; then
		return 1
	fi
	SERIAL_INTERFACE=${ANSWER}

	DEFAULT_VALUE=${SERIAL_SPEED}
	if ! network_dialog "What speed is the serial connection?"; then
		return 1
	fi
	SERIAL_SPEED=${ANSWER}

	if dialog --title "Dial" --yesno \
	  "Do you need to dial the phone or otherwise talk to the modem?" \
	  -1 -1; then
		mkdir -p /var/log
		touch -f /var/log/aculog	> /dev/null 2>&1
		chmod 666 /var/log/aculog	> /dev/null 2>&1
		confirm \
"You may now dialog with your modem and set up the connection.
Be sure to disable DTR sensitivity (usually with AT&D0) or the
modem may hang up when you exit 'cu'.  Use ~. to exit cu and
continue."
		dialog --clear
		# Grottyness to deal with a weird crunch bug.
		if [ ! -f /stand/cu ]; then ln /stand/tip /stand/cu; fi
		/stand/cu -l ${SERIAL_INTERFACE} -s ${SERIAL_SPEED}
		dialog --clear
	fi
}

network_setup_plip()
{
	network_setup_remote
	INTERFACE=lp0
}

network_setup()
{
	DONE=0
	while [ "${INTERFACE}" = "" ]; do
		dialog --title "Set up network interface" --menu \
		  "Please select the type of network connection you have:\n" \
		  -1 -1 3 \
		"Ether" "A supported ethernet card" \
		"SLIP" "A point-to-point SLIP (Serial Line IP) connection" \
		"PLIP" "A Parallel-Line IP setup (with standard laplink cable)" \
		2> ${TMP}/menu.tmp.$$

		RETVAL=$?
		CHOICE=`cat ${TMP}/menu.tmp.$$`
		rm -f ${TMP}/menu.tmp.$$
		if ! handle_rval ${RETVAL}; then return 1; fi
		case ${CHOICE} in
		Ether)	if ! network_setup_ether; then continue; fi ;;
		SLIP)	if ! network_setup_serial sl0; then continue; fi ;;
		PLIP)	if ! network_setup_plip; then continue; fi ;;
		esac
		if [ "${INTERFACE}" = "" ]; then continue; fi

		network_basic_setup

		DEFAULT_VALUE="${NETMASK}"
		if network_dialog "Please specify the netmask"; then
			if [ "${ANSWER}" != "" ]; then
				NETMASK=${ANSWER}
			fi
		fi

		DEFAULT_VALUE=""
		if network_dialog "Set extra flags to ${IFCONFIG_CMD}?"; then
			IFCONFIG_FLAGS=${ANSWER}
		fi
		echo "Progress <${IFCONFIG_CMD} ${INTERFACE} ${IPADDR} ${REMOTE_IPADDR} netmask ${NETMASK} ${IFCONFIG_FLAGS}>" >/dev/ttyv1
		if ! ${IFCONFIG_CMD} ${INTERFACE} ${IPADDR} ${REMOTE_IPADDR} netmask ${NETMASK} ${IFCONFIG_FLAGS} > /dev/ttyv1 2>&1 ; then
			error "Unable to configure interface ${INTERFACE}"
			IPADDR=""
			INTERFACE=""
			continue
		fi
		if [ "${INTERFACE}" = "sl0" ]; then
			DEFAULT_VALUE=${SLATTACH_FLAGS}
			if network_dialog "Set extra flags to ${SLATTACH_CMD}?"; then
				SLATTACH_FLAGS=${ANSWER}
			fi
			${SLATTACH_CMD} ${SLATTACH_FLAGS} ${SERIAL_SPEED} ${SERIAL_INTERFACE}
			progress ${SLATTACH_CMD} ${SLATTACH_FLAGS} ${SERIAL_SPEED} ${SERIAL_INTERFACE}
		fi
		echo "${IPADDR} ${REMOTE_IPADDR} netmask ${NETMASK} ${IFCONFIG_FLAGS}" > ${ETC}/hostname.${INTERFACE}
		DEFAULT_VALUE=""
		if network_dialog "If you have a default gateway, enter its IP address"; then
			if [ "${ANSWER}" != "" ]; then
				GATEWAY=${ANSWER}
				${ROUTE_CMD} ${ROUTE_FLAGS} ${GATEWAY} > /dev/ttyv1 2>&1
				progress ${ROUTE_CMD} ${ROUTE_FLAGS} ${GATEWAY}
				echo ${GATEWAY} > ${ETC}/defaultrouter
			fi
		fi

		DEFAULT_VALUE=""
		if network_dialog "If you have a name server, enter its IP address"; then
			if [ "${ANSWER}" != "" ]; then
				NAMESERVER=${ANSWER}
				echo "domain ${DOMAIN}" > ${ETC}/resolv.conf
				echo "nameserver ${NAMESERVER}" >> ${ETC}/resolv.conf
			fi
		fi
	done
	return 0
}