summaryrefslogtreecommitdiff
path: root/src/core/libs/lib-network.sh
blob: bc178984c910b95fe4994b725660d3777f38f901 (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
#!/bin/bash

# configures network on host system according to installer settings
# if some variables are not set, we handle that transparantly
# however, at least $DHCP must be set, so we know what do to
# we assume that you checked whether networking has been setup before calling us
target_configure_network()
{
	source $RUNTIME_DIR/aif-network-settings 2>/dev/null || return 1

	IFO=${INTERFACE_PREV:-eth0} # old iface: a previously entered one, or the arch default
	IFN=${INTERFACE:-eth0} # new iface: a specified one, or the arch default

	# comment out any existing uncommented entries, whether specified by us, or arch defaults.
	for var in eth0 $IFO INTERFACES gateway ROUTES
	do
		sed -i "s/^$var=/#$var=/" ${var_TARGET_DIR}/etc/rc.conf || return 1
	done
	sed -i "s/^nameserver/#nameserver/" ${var_TARGET_DIR}/etc/resolv.conf || return 1
	if [ -f ${var_TARGET_DIR}/etc/profile.d/proxy.sh ]
	then
		sed -i "s/^export/#export/" ${var_TARGET_DIR}/etc/profile.d/proxy.sh || return 1
	fi

	if [ "$DHCP" = 0 ] ; then
		local line="$IFN=\"$IFN ${IPADDR:-192.168.0.2} netmask ${SUBNET:-255.255.255.0} broadcast ${BROADCAST:-192.168.0.255}\""
		append_after_last "/$IFO\|eth0/" "$line" ${var_TARGET_DIR}/etc/rc.conf || return 1

		if [ -n "$GW" ]; then
			append_after_last "/gateway/" "gateway=\"default gw $GW\"" ${var_TARGET_DIR}/etc/rc.conf || return 1
			append_after_last "/ROUTES/" "ROUTES=(gateway)" ${var_TARGET_DIR}/etc/rc.conf || return 1
		fi
		if [ -n "$DNS" ]
		then
			echo "nameserver $DNS" >> ${var_TARGET_DIR}/etc/resolv.conf || return 1
		fi
	else
		append_after_last "/$IFO\|eth0/" "$IFN=\"dhcp\"" ${var_TARGET_DIR}/etc/rc.conf || return 1
	fi

	append_after_last "/$IFO\|eth0/" "INTERFACES=($IFN)" ${var_TARGET_DIR}/etc/rc.conf || return 1

	if [ -n "$PROXY_HTTP" ]; then
		echo "export http_proxy=$PROXY_HTTP" >> ${var_TARGET_DIR}/etc/profile.d/proxy.sh || return 1
		chmod a+x ${var_TARGET_DIR}/etc/profile.d/proxy.sh || return 1
	fi

	if [ -n "$PROXY_FTP" ]; then
		echo "export ftp_proxy=$PROXY_FTP" >> ${var_TARGET_DIR}/etc/profile.d/proxy.sh || return 1
		chmod a+x ${var_TARGET_DIR}/etc/profile.d/proxy.sh || return 1
	fi
	return 0
}