206 lines
5.8 KiB
Bash
206 lines
5.8 KiB
Bash
#!/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.2 1995/01/28 01:18:43 jkh Exp $
|
|
|
|
if [ "${_NETINST_SH_LOADED_}" = "yes" ]; then
|
|
return 0
|
|
else
|
|
_NETINST_SH_LOADED_=yes
|
|
fi
|
|
|
|
# Grab the miscellaneous functions.
|
|
. /stand/scripts/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/[^.]*\.//'`
|
|
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
|
|
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
|
|
}
|