diff -uNr net-scripts-0.3-orig/README net-scripts-0.3/README --- net-scripts-0.3-orig/README 2003-05-29 16:25:15 +0300 +++ net-scripts-0.3/README 2004-02-13 18:11:48 +0200 @@ -202,7 +202,7 @@ GATEWAY= ONBOOT=yes|no USERCTL=yes|no - BOOTPROTO=none|bootp|dhcp + BOOTPROTO=none|(bootp|dhcp|zcip)[,zcip] DHCP_CLIENT= MTU= PEERDNS=yes|no @@ -212,6 +212,8 @@ provide DNS addresses that are dropped into the resolv.conf file if PEERDNS is not set to "no". + BOOTPROTO can contain more than one comma-separated value, + in latter case first succeeded method stops further attempts. If BOOTPROTO is not "none", then the only other item that must be set is the DEVICE item; all the rest will be determined by the boot protocol. No "dummy" entries need to be created. diff -uNr net-scripts-0.3-orig/sysconfig/network-scripts/ifup net-scripts-0.3/sysconfig/network-scripts/ifup --- net-scripts-0.3-orig/sysconfig/network-scripts/ifup 2003-05-20 15:46:06 +0300 +++ net-scripts-0.3/sysconfig/network-scripts/ifup 2004-02-13 18:11:48 +0200 @@ -58,6 +58,8 @@ "$SBIN_IWCONFIG" ${DEVICE} enc "$WIRELESS_ENC_KEY" >/dev/null 2>&1 fi +IFS=, read BOOTPROTO BOOTPROTO_FALLBACK <<< "$BOOTPROTO" + if [ "$BOOTPROTO" = dhcp ]; then DYNCONFIG=true fi @@ -213,7 +215,8 @@ if [ -n "$DHCP_CLIENT" ]; then case "${DHCP_CLIENT##*/}" in dhcpcd) - [ -z "$DHCP_HOSTNAME" ] || DHCP_ARGS="-h $DHCP_HOSTNAME" + [ -z "BOOTPROTO_FALLBACK" ] || DHCP_ARGS="-t 30" + [ -z "$DHCP_HOSTNAME" ] || DHCP_ARGS="$DHCP_ARGS -h $DHCP_HOSTNAME" [ -z "$NEEDHOSTNAME" ] || DHCP_ARGS="$DHCP_ARGS -H" is_yes "$PEERNTP" || DHCP_ARGS="$DHCP_ARGS -N" ! is_no "$PEERDNS" || DHCP_ARGS="$DHCP_ARGS -R" @@ -232,22 +235,45 @@ DHCP_ARGS="$DHCP_ARGS -w $DEVICE" ;; dhclient) + # We should limit dhclient activity to first try + # if we have fallback method + [ -z "BOOTPROTO_FALLBACK" ] || DHCP_ARGS="-1" # Can't specify a host with dhclient ? same remark for # $NEEDHOSTNAME this client suck !!! - DHCP_ARGS="$DEVICE" + DHCP_ARGS="$DHCP_ARGS $DEVICE" ;; esac fi +ZCIP=/sbin/zcip +ZCIP_ARGS="-s -i $DEVICE" + if [ -n "$DYNCONFIG" ]; then echo -n "Determining IP information for $DEVICE via ${DHCP_CLIENT##*/}..." if $DHCP_CLIENT $DHCP_ARGS; then echo " done." + elif [ "$BOOTPROTO_FALLBACK" = zcip ]; then + echo + echo -n "Determining IP information for $DEVICE via ${ZCIP##*/}..." + if $ZCIP $ZCIP_ARGS; then + echo " done." + else + echo " failed." + exit 1 + fi else echo " failed." exit 1 fi -else +elif [ "$BOOTPROTO" = zcip ]; then + echo -n "Determining IP information for $DEVICE via ${ZCIP##*/}..." + if $ZCIP $ZCIP_ARGS; then + echo " done." + else + echo " failed." + exit 1 + fi +else if [ -z "$NETMASK" ]; then eval `/bin/ipcalc --netmask "$IPADDR"` fi