summaryrefslogtreecommitdiff
path: root/src/core/libs/lib-network.sh
blob: 41eb27f459ae599ec8bcfa2062fe30bc2c14226f (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
#!/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()
{
	# networking setup could have happened in a separate process (eg partial-configure-network),
	# so check if the settings file was created to be sure
	if [ -f $RUNTIME_DIR/aif-network-settings ]; then

        debug NETWORK "Configuring network settings on target system according to installer settings"

        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
    else
        debug NETWORK "Skipping Host Network Configuration - aif-network-settings not found"
    fi
    return 0
}