Index: resolvconf.in =================================================================== --- resolvconf.in (revision 111) +++ resolvconf.in (working copy) @@ -45,7 +45,12 @@ if [ -n "${interface_order}" ]; then interface_order="lo lo[0-9]* ${interface_order} *" fi +if [ -z "${dynamic_order}" ]; then + dynamic_order="tap[0-9]* tun[0-9]* vpn vpn[0-9]* ppp[0-9]* ippp[0-9]*" +fi +dynamic_order="lo* lo[0-9]* ${dynamic_order}" + error_exit() { echo "$*" >&2 @@ -245,15 +250,20 @@ # If we don't have a list then prefer lo, metrics, tunnels, ppp # and then anything else. if [ -z "${LIST}" ]; then - LIST="lo lo[0-9]* " + cd "${IFACEDIR}" + for DYN in ${dynamic_order}; do + if [ -e "${DYN}" -a ! -e "${METRICDIR}/"*" ${DYN}" ] + then + LIST="${LIST} ${DYN}" + fi + done if [ -d "${METRICDIR}" ]; then cd "${METRICDIR}" for METRIC in *; do LIST="${LIST} ${METRIC#* }" done fi - LIST="${LIST} tap[0-9]* tun[0-9]* vpn vpn[0-9]*" - LIST="${LIST} ppp[0-9]* ippp[0-9]* *" + LIST="${LIST} *" fi RETVAL=0 @@ -387,12 +397,14 @@ rm -f "${METRICDIR}/"*" ${IFACE}" [ ! -d "${METRICDIR}" ] && mkdir "${METRICDIR}" rm -f "${METRICDIR}/"*" ${IFACE}" - # Pad metric to 6 characters, so 5 is less than 10 - # All interfaces will get a default metric of 0 - while [ ${#IF_METRIC} -le 6 ]; do - IF_METRIC="0${IF_METRIC}" - done - echo " " >"${METRICDIR}/${IF_METRIC} ${IFACE}" + if [ -n "${IF_METRIC}" ]; then + # Pad metric to 6 characters, so 5 is less than 10 + # All interfaces will get a default metric of 0 + while [ ${#IF_METRIC} -le 6 ]; do + IF_METRIC="0${IF_METRIC}" + done + echo " " >"${METRICDIR}/${IF_METRIC} ${IFACE}" + fi case "${IF_PRIVATE}" in [Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1) if [ ! -d "${PRIVATEDIR}" ]; then