Package: openresolv
Version: 3.8.0-1
Severity: normal
The documentation for the -m options says:
Set the metric of the interface when adding it, default of 0. Lower metrics
take precedence.
However, if you assign any metric to an interface, it will actually take
precedence over any interface which doesn't have a metric defined and isn't
in the interface_order or dynamic_order. Hence, the default metric is
actually one more than 9999999. For example:
# /sbin/resolvconf -i
lo.unbound wlan0
# cat myvpn_resolvconf | /sbin/resolvconf -m 99 -a myvpn
# /sbin/resolvconf -i
lo.unbound myvpn wlan0
# find /run/resolvconf/ -type f
/run/resolvconf/interfaces/myvpn
/run/resolvconf/interfaces/lo.unbound
/run/resolvconf/interfaces/wlan0
/run/resolvconf/metrics/0000099 myvpn
I'm attaching a trivial patch that fixes this behaviour.
-- System Information:
Debian Release: 9.6
APT prefers stable
APT policy: (990, 'stable'), (500, 'stable-updates'), (500,
'proposed-updates')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 4.18.0-0.bpo.1-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_CA.utf8, LC_CTYPE=en_CA.utf8 (charmap=UTF-8), LANGUAGE=en_CA:en
(charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: sysvinit (via /sbin/init)
--- /sbin/resolvconf 2016-04-20 13:30:01.000000000 -0600
+++ resolvconf 2018-11-12 17:04:16.296605415 -0700
@@ -404,13 +404,15 @@
fi
done
done
+ for i in *; do
+ [ ! -e "$METRICDIR/"*" $i" ] && list="$list $i"
+ done
if [ -d "$METRICDIR" ]; then
cd "$METRICDIR"
for i in *; do
[ -f "$i" ] && list="$list ${i#* }"
done
fi
- list="$list *"
fi
cd "$IFACEDIR"