Package: ifupdown-extra
Version: 0.32
Severity: normal
Tags: ipv6 patch
Dear Maintainer,
When adding package "ifup-extra" on a fresh installation of Debian 11,
I started getting error messages referring to "wlan0" at ifup time.
This was unexpected as this system had no interface named "wlan0"
at the time.
An easy grep revealed that /etc/network/if-up.d/10check-duplicate-ip6
had a hard-coded reference to network interface "wlan0" where a
variable was supposed to be used.
Here's a patch to fix it:
--- 10check-duplicate-ip6.old 2021-08-17 18:22:03.029055558 +0300
+++ 10check-duplicate-ip6 2021-08-17 18:22:53.037696969 +0300
@@ -70,7 +70,7 @@ do_ndisc() {
# First determine physical interface in case aliased interfaces are used
real_iface=$(echo "$IFACE" | sed -e 's|:[[:digit:]]\+||')
- link_address=$(ip link show wlan0 | grep link | awk '{print
toupper($2)}')
+ link_address=$(ip link show "$real_iface" | grep link | awk '{print
toupper($2)}')
if [ -z "`ip link show $real_iface up`" ]; then
return
-- System Information:
Debian Release: 11.0
APT prefers stable-security
APT policy: (500, 'stable-security'), (500, 'stable')
Architecture: i386 (i686)
Kernel: Linux 5.10.0-8-686 (SMP w/1 CPU thread)
Locale: LANG=en_US.UTF-8, LC_CTYPE=fi_FI.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages ifupdown-extra depends on:
ii bind9-host [host] 1:9.16.15-1
ii curl 7.74.0-1.3+b1
ii dpkg 1.20.9
ii iproute2 5.10.0-4
ii iputils-arping 3:20210202-1
ii iputils-ping [ping] 3:20210202-1
ii lsb-base 11.1.0
ii net-tools 1.60+git20181103.0eebece-1
ii netcat-openbsd 1.217-3
Versions of packages ifupdown-extra recommends:
ii ethtool 1:5.9-1
ii ndisc6 1.0.4-2
ifupdown-extra suggests no packages.
-- Configuration Files:
/etc/network/if-up.d/10check-duplicate-ip6 changed:
DEFAULT=/etc/default/network-test
[ -r "$DEFAULT" ] && . $DEFAULT
[ "$DO_ARPING" = "no" ] && exit 0
NDISC=/usr/bin/ndisc6
[ ! -x "$NDISC" ] && exit 0 # Silent exit if ndisc is not installed
DO_SYSLOG=${DO_SYSLOG:-yes}
VERBOSITY=${VERBOSITY:-0}
LC_ALL=C
export LC_ALL
if [ "$DO_SYSLOG" = "yes" ] ; then
OUTPUT="logger -i -p daemon.err -s"
else
OUTPUT="echo"
fi
do_ndisc() {
real_iface=$(echo "$IFACE" | sed -e 's|:[[:digit:]]\+||')
link_address=$(ip link show $real_iface | grep link | awk '{print
toupper($2)}')
if [ -z "`ip link show $real_iface up`" ]; then
return
fi
for ADDR in $IF_ADDRESS; do
# Only check IP address if it is IPv6
if echo ${ADDR} | grep -q ":" ; then
[ "$VERBOSITY" -eq 1 ] && $OUTPUT "DEBUG: Sending arp pings
through $real_iface (for $IFACE) to detect other systems using $ADDR"
dup_link_address=$($NDISC -q $ADDR $real_iface)
if [ $? -eq 0 ] ; then
# If the link address is the same as our address this is
not a problem
# (ndisc returns it in at least Wireless interfaces), only
report if the link
# address does not match
if [ "$link_address" != "$dup_link_address" ] ; then
$OUTPUT "ERROR: Duplicate address $ADDR assigned in the
network where $real_iface is connected to."
fi
fi
fi
done
}
find_ip6() {
export IF_ADDRESS
IF_ADDRESS=$(ip addr show "$IFACE" 2>/dev/null | sed -rne
's|^[[:blank:]]*inet6[[:blank:]]+([^/]+)/.*|\1|p')
return 0
}
if [ -z "$IFACE" ] ; then
echo "ERROR: Do not know what interface to check. IFACE environment
variable is not defined!" >&2
exit 1
fi
case $IFACE in
sl* | ww* | lo*) exit 0 ;;
*) ;;
esac
[ -z "$IF_ADDRESS" ] && find_ip6
[ -z "$IF_ADDRESS" ] && exit 0
do_ndisc
exit 0
-- no debconf information