From 407da88514dafeab77e683ee50029f55c4a32424 Mon Sep 17 00:00:00 2001 From: Dieter Plaetinck Date: Tue, 28 Dec 2010 22:02:04 +0100 Subject: Refactor network config generation code Make interactive_runtime_network() and target_configure_network() able to be run multiple times with different settings, and make it clear what's going on in target_configure_network(). --- src/core/libs/lib-network.sh | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) (limited to 'src/core/libs/lib-network.sh') diff --git a/src/core/libs/lib-network.sh b/src/core/libs/lib-network.sh index aa961ce..1499dbf 100644 --- a/src/core/libs/lib-network.sh +++ b/src/core/libs/lib-network.sh @@ -7,27 +7,38 @@ 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 - sed -i "s/#eth0=\"eth0/eth0=\"eth0/g" ${var_TARGET_DIR}/etc/rc.conf || return 1 - sed -i "s/^eth0=\"dhcp/#eth0=\"dhcp/g" ${var_TARGET_DIR}/etc/rc.conf || return 1 - sed -i "s#eth0=\"eth0#${INTERFACE:-eth0}=\"${INTERFACE:-eth0}#g" ${var_TARGET_DIR}/etc/rc.conf || return 1 - sed -i "s#${INTERFACE:-eth0} 192.168.0.2#${INTERFACE:-eth0} ${IPADDR:-192.168.0.2}#g" ${var_TARGET_DIR}/etc/rc.conf || return 1 - sed -i "s#netmask 255.255.255.0#netmask ${SUBNET:-255.255.255.0}#g" ${var_TARGET_DIR}/etc/rc.conf || return 1 - sed -i "s#broadcast 192.168.0.255#broadcast ${BROADCAST:-192.168.0.255}#g" ${var_TARGET_DIR}/etc/rc.conf || return 1 + 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 - sed -i "s#gw 192.168.0.1#gw $GW#g" ${var_TARGET_DIR}/etc/rc.conf || return 1 - sed -i "s#!gateway#gateway#g" ${var_TARGET_DIR}/etc/rc.conf || return 1 + 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 - sed -i "s/^eth0=\"eth0/#eth0=\"eth0/g" ${var_TARGET_DIR}/etc/rc.conf || return 1 - sed -i "s/#eth0=\"dhcp/eth0=\"dhcp/g" ${var_TARGET_DIR}/etc/rc.conf || return 1 - sed -i "s#eth0=\"dhcp#${INTERFACE:-eth0}=\"dhcp#g" ${var_TARGET_DIR}/etc/rc.conf || return 1 + append_after_last "/$IFO\|eth0/" "$IFN=\"dhcp\"" ${var_TARGET_DIR}/etc/rc.conf || return 1 fi - sed -i "s#INTERFACES=(eth0)#INTERFACES=(${INTERFACE:-eth0})#g" ${var_TARGET_DIR}/etc/rc.conf || return 1 + + 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 -- cgit v1.2.3-54-g00ecf