#!/bin/sh

# In case the interface is used for nfs, skip it.
nfsroot=0
interfaces=""
exec 9<&0 < /proc/mounts
while read dev mtpt fstype rest; do
    if test $mtpt = "/" ; then
        case $fstype in
            nfs | nfs4)
                nfsroot=1
                nfs_addr=`echo $rest | sed -e 's/^.*addr=\([0-9.]*\).*$/\1/'`
                break
                ;;
            *)
                ;;
        esac
    fi
done
exec 0<&9 9<&-

if [ $nfsroot -eq 0 ]; then
    interfaces="$INTERFACES"
else
    if [ -x /bin/ip -o -x /sbin/ip ] ; then
	nfs_iface=`ip route get $nfs_addr | grep dev | sed -e 's/^.*dev \([-a-z0-9.]*\).*$/\1/'`
    fi
    for i in $INTERFACES; do
	if test "x$i" = "x$nfs_iface"; then
            echo "dhclient skipping nfsroot interface $i"
	else
	    interfaces="$interfaces $i"
	fi
    done
fi

if test "x$interfaces" != "x"; then
    /sbin/dhclient -d -cf /etc/dhcp/dhclient.conf -q -lf /var/lib/dhcp/dhclient.leases $interfaces
fi
