summaryrefslogtreecommitdiffstats
path: root/release/netinst.sh
blob: 55e2144c45671d7bc91f95e06964cd1f76f48d08 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
#!/stand/sh
#
# netinst - 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.6 1994/11/18 16:27:54 jkh Exp $

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

# Set some useful variables.
IFCONFIG=ifconfig
ROUTE=route
ROUTE_FLAGS="add default"

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

network_setup_ether()
{
	dialog $clear --title "Ethernet Interface Name" \
	--menu "Please select the type of ethernet interface you have:\n\n" \
	 -1 -1 7 \
	"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" \
	"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_slip()
{
	clear=""
	default_value=""
	if ! network_dialog "What is the IP number for the remote host?"; then return 1; fi
	remote_hostip=$answer
	interface=sl0

	default_value=$serial_interface
	if ! network_dialog "What is the name of the serial interface?"; then return 1; fi
	serial_interface=$answer

	default_value=$serial_speed
	if ! network_dialog "What speed is the serial interface?"; then return 1; fi
	serial_speed=$answer
	clear="--clear"

	if dialog $clear --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 slip connection.\nBe sure to disable DTR sensitivity (usually with AT&D0) or the modem may\nhang 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()
{
	default_value=""
	if ! network_dialog "What is the IP number for the remote host?"; then return 1; fi
	remote_hostip=$answer
	interface=lp0
}

network_setup()
{
	done=0
	while [ "$interface" = "" ]; do
		clear="--clear"
		dialog $clear --title "Set up network interface" \
		--menu "Please select the type of network connection you have:\n\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_slip; then continue; fi
		;;

		PLIP)
			if ! network_setup_plip; then continue; fi
		;;
		esac	
		if [ "$interface" = "" ]; then	continue; fi

		clear=""
		default_value=""
		if ! network_dialog "What is the fully qualified name of this host?"; then clear="--clear"; return 1; fi
		hostname=$answer
		echo $hostname > /etc/myname
		hostname $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=""
		if ! network_dialog "What is the IP address of this host?"; then clear="--clear"; return 1; fi
		ipaddr=$answer

        	echo "$ipaddr    $hostname `echo $hostname | sed -e 's/\.$domain//'`" >> /etc/hosts

		default_value="$netmask"
		if network_dialog "Please specify the netmask"; then
			if [ "$answer" != "" ]; then
				netmask=$answer
			fi
		fi

		default_value=""
		if network_dialog "Any extra flags to ifconfig?" ; then
			ifconfig_flags=$answer
		fi
		echo "Progress <$IFCONFIG $interface $ipaddr $remote_hostip netmask $netmask $ifconfig_flags>" >/dev/ttyv1
		if ! $IFCONFIG $interface $ipaddr $remote_hostip netmask $netmask $ifconfig_flags > /dev/ttyv1 2>&1 ; then
			error "Unable to configure interface $interface"
			ipaddr=""; interface=""
			continue
		fi
		if [ "$interface" = "sl0" ]; then
			slattach -a -s $serial_speed $serial_interface
		fi
		echo "$ipaddr $remote_hostip 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
				echo "Progress <$ROUTE $ROUTE_FLAGS $gateway>" > /dev/ttyv1 2>&1
				$ROUTE $ROUTE_FLAGS $gateway > /dev/ttyv1 2>&1
				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
}
OpenPOWER on IntegriCloud