mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-29 21:47:59 +00:00
Merge branch '3061-ifconfig-sh-down-messes-up-loopback-interfaces' into 'main'
Resolve "ifconfig.sh down messes up loopback interfaces" Closes #3061 See merge request isc-projects/bind9!6408
This commit is contained in:
commit
49706c65f5
3
CHANGES
3
CHANGES
@ -1,3 +1,6 @@
|
|||||||
|
5917. [bug] Update ifconfig.sh script as is miscomputed interface
|
||||||
|
identifiers when destroying interfaces. [GL #3061]
|
||||||
|
|
||||||
5916. [bug] When resolving a name, don't give up immediately if an
|
5916. [bug] When resolving a name, don't give up immediately if an
|
||||||
authoritative server returns FORMERR; try the other
|
authoritative server returns FORMERR; try the other
|
||||||
servers first. [GL #3152]
|
servers first. [GL #3152]
|
||||||
|
@ -43,100 +43,81 @@ case "$sys" in
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
case "$1" in
|
up() {
|
||||||
|
|
||||||
start|up)
|
|
||||||
for i in 0 1 2
|
|
||||||
do
|
|
||||||
case $i in
|
|
||||||
0) ipv6="ff" ;;
|
|
||||||
1) ipv6="99" ;;
|
|
||||||
2) ipv6="00" ;;
|
|
||||||
*) ipv6="" ;;
|
|
||||||
esac
|
|
||||||
for ns in 1 2 3 4 5 6 7 8 9 10 11
|
|
||||||
do
|
|
||||||
[ $i -gt 0 -a $ns -gt 2 ] && break
|
|
||||||
int=`expr $i \* 10 + $ns`
|
|
||||||
case "$sys" in
|
case "$sys" in
|
||||||
*-pc-solaris2.5.1)
|
*-pc-solaris2.5.1)
|
||||||
ifconfig lo0:$int 10.53.$i.$ns \
|
[ "$a" ] && ifconfig lo0:$int $a netmask 0xffffffff up
|
||||||
netmask 0xffffffff up
|
|
||||||
;;
|
;;
|
||||||
*-sun-solaris2.[6-7])
|
*-sun-solaris2.[6-7])
|
||||||
ifconfig lo0:$int 10.53.$i.$ns \
|
[ "$a" ] && ifconfig lo0:$int $a netmask 0xffffffff up
|
||||||
netmask 0xffffffff up
|
|
||||||
;;
|
;;
|
||||||
*-*-solaris2.[8-9]|*-*-solaris2.1[0-9])
|
*-*-solaris2.[8-9]|*-*-solaris2.10)
|
||||||
|
[ "$a" ] && {
|
||||||
/sbin/ifconfig lo0:$int plumb
|
/sbin/ifconfig lo0:$int plumb
|
||||||
/sbin/ifconfig lo0:$int 10.53.$i.$ns up
|
/sbin/ifconfig lo0:$int $a up
|
||||||
/sbin/ifconfig lo0:$int mtu 1500
|
/sbin/ifconfig lo0:$int mtu 1500
|
||||||
|
}
|
||||||
|
[ "$aaaa" ] && {
|
||||||
/sbin/ifconfig lo0:$int inet6 plumb
|
/sbin/ifconfig lo0:$int inet6 plumb
|
||||||
[ "$ipv6" ] && /sbin/ifconfig lo0:$int \
|
/sbin/ifconfig lo0:$int inet6 $aaaa up
|
||||||
inet6 fd92:7065:b8e:${ipv6}ff::$ns up
|
}
|
||||||
|
;;
|
||||||
|
*-*-solaris2.1[1-9])
|
||||||
|
[ "$a" ] && {
|
||||||
|
/sbin/ipadm create-addr -t -T static \
|
||||||
|
-a $a lo0/bind9v4$int ||
|
||||||
|
echo failed lo0/bind9v4$int
|
||||||
|
}
|
||||||
|
[ "$aaaa" ] && {
|
||||||
|
/sbin/ipadm create-addr -t -T static \
|
||||||
|
-a $aaaa lo0/bind9v6$int ||
|
||||||
|
echo failed lo0/bind9v6$int
|
||||||
|
}
|
||||||
;;
|
;;
|
||||||
*-*-linux*)
|
*-*-linux*)
|
||||||
if [ $use_ip ]; then
|
if [ "$use_ip" ]; then
|
||||||
ip address add 10.53.$i.$ns/24 \
|
ip address add $a/24 dev lo:$int
|
||||||
dev lo:$int
|
|
||||||
ip link set dev lo:$int mtu 1500
|
ip link set dev lo:$int mtu 1500
|
||||||
[ "$ipv6" ] && ip address add \
|
[ "$aaaa" ] && ip address add $aaaa/64 dev lo
|
||||||
fd92:7065:b8e:${ipv6}ff::$ns/64 \
|
|
||||||
dev lo
|
|
||||||
else
|
else
|
||||||
ifconfig lo:$int 10.53.$i.$ns up \
|
ifconfig lo:$int $a up netmask 255.255.255.0 mtu 1500
|
||||||
netmask 255.255.255.0 \
|
[ "$aaaa" ] && ifconfig lo inet6 add $aaaa/64
|
||||||
mtu 1500
|
|
||||||
[ "$ipv6" ] && ifconfig lo inet6 add \
|
|
||||||
fd92:7065:b8e:${ipv6}ff::$ns/64
|
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
*-unknown-freebsd*)
|
*-unknown-freebsd*)
|
||||||
ifconfig lo0 10.53.$i.$ns alias \
|
[ "$a" ] && ifconfig lo0 $a alias netmask 0xffffffff mtu 1500
|
||||||
netmask 0xffffffff \
|
[ "$aaaa" ] && ifconfig lo0 inet6 $aaaa alias
|
||||||
mtu 1500
|
|
||||||
[ "$ipv6" ] && ifconfig lo0 inet6 \
|
|
||||||
fd92:7065:b8e:${ipv6}ff::$ns alias
|
|
||||||
;;
|
;;
|
||||||
*-unknown-dragonfly*|*-unknown-netbsd*|*-unknown-openbsd*)
|
*-unknown-dragonfly*|*-unknown-netbsd*|*-unknown-openbsd*)
|
||||||
ifconfig lo0 10.53.$i.$ns alias \
|
[ "$a" ] && ifconfig lo0 $a alias netmask 255.255.255.0 mtu 1500
|
||||||
netmask 255.255.255.0 \
|
[ "$aaaa" ] && ifconfig lo0 inet6 $aaaa alias
|
||||||
mtu 1500
|
|
||||||
[ "$ipv6" ] && ifconfig lo0 inet6 \
|
|
||||||
fd92:7065:b8e:${ipv6}ff::$ns alias
|
|
||||||
;;
|
;;
|
||||||
*-*-bsdi[3-5].*)
|
*-*-bsdi[3-5].*)
|
||||||
ifconfig lo0 add 10.53.$i.$ns \
|
[ "$a" ] && ifconfig lo0 add $a netmask 255.255.255.0
|
||||||
netmask 255.255.255.0
|
|
||||||
;;
|
;;
|
||||||
*-dec-osf[4-5].*)
|
*-dec-osf[4-5].*)
|
||||||
ifconfig lo0 alias 10.53.$i.$ns
|
[ "$a" ] && ifconfig lo0 alias $a
|
||||||
;;
|
;;
|
||||||
*-sgi-irix6.*)
|
*-sgi-irix6.*)
|
||||||
ifconfig lo0 alias 10.53.$i.$ns
|
[ "$a" ] && ifconfig lo0 alias $a
|
||||||
;;
|
;;
|
||||||
*-*-sysv5uw7*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
|
*-*-sysv5uw7*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
|
||||||
ifconfig lo0 10.53.$i.$ns alias \
|
[ "$a" ] && ifconfig lo0 $a alias netmask 0xffffffff
|
||||||
netmask 0xffffffff
|
|
||||||
;;
|
;;
|
||||||
*-ibm-aix4.*|*-ibm-aix5.*)
|
*-ibm-aix4.*|*-ibm-aix5.*)
|
||||||
ifconfig lo0 alias 10.53.$i.$ns
|
[ "$a" ] && ifconfig lo0 alias $a
|
||||||
[ "$ipv6" ] && ifconfig lo0 inet6 alias -dad \
|
[ "$aaaa" ] && ifconfig lo0 inet6 alias -dad $aaaa/64
|
||||||
fd92:7065:b8e:${ipv6}ff::$ns/64
|
|
||||||
;;
|
;;
|
||||||
hpux)
|
hpux)
|
||||||
ifconfig lo0:$int 10.53.$i.$ns \
|
[ "$a" ] && ifconfig lo0:$int $a netmask 255.255.255.0 up
|
||||||
netmask 255.255.255.0 up
|
[ "$aaaa" ] && ifconfig lo0:$int inet6 $aaaa up
|
||||||
[ "$ipv6" ] && ifconfig lo0:$int inet6 \
|
|
||||||
fd92:7065:b8e:${ipv6}ff::$ns up
|
|
||||||
;;
|
;;
|
||||||
*-sco3.2v*)
|
*-sco3.2v*)
|
||||||
ifconfig lo0 alias 10.53.$i.$ns
|
[ "$a" ] && ifconfig lo0 alias $a
|
||||||
;;
|
;;
|
||||||
*-darwin*)
|
*-darwin*)
|
||||||
ifconfig lo0 alias 10.53.$i.$ns
|
[ "$a" ] && ifconfig lo0 alias $a
|
||||||
[ "$ipv6" ] && ifconfig lo0 inet6 \
|
[ "$aaaa" ] && ifconfig lo0 inet6 $aaaa alias
|
||||||
fd92:7065:b8e:${ipv6}ff::$ns alias
|
|
||||||
;;
|
;;
|
||||||
*-cygwin*)
|
*-cygwin*)
|
||||||
echo "Please run ifconfig.bat as Administrator."
|
echo "Please run ifconfig.bat as Administrator."
|
||||||
@ -145,93 +126,86 @@ case "$1" in
|
|||||||
*)
|
*)
|
||||||
echo "Don't know how to set up interface. Giving up."
|
echo "Don't know how to set up interface. Giving up."
|
||||||
exit 1
|
exit 1
|
||||||
esac
|
|
||||||
done
|
|
||||||
done
|
|
||||||
;;
|
;;
|
||||||
|
|
||||||
stop|down)
|
|
||||||
for i in 0 1 2
|
|
||||||
do
|
|
||||||
case $i in
|
|
||||||
0) ipv6="ff" ;;
|
|
||||||
1) ipv6="99" ;;
|
|
||||||
2) ipv6="00" ;;
|
|
||||||
*) ipv6="" ;;
|
|
||||||
esac
|
esac
|
||||||
for ns in 11 10 9 8 7 6 5 4 3 2 1
|
}
|
||||||
do
|
|
||||||
[ $i -gt 0 -a $ns -gt 2 ] && continue
|
down() {
|
||||||
int=`expr $i \* 10 + $ns - 1`
|
|
||||||
case "$sys" in
|
case "$sys" in
|
||||||
*-pc-solaris2.5.1)
|
*-pc-solaris2.5.1)
|
||||||
ifconfig lo0:$int 0.0.0.0 down
|
[ "$a" ] && ifconfig lo0:$int 0.0.0.0 down
|
||||||
;;
|
;;
|
||||||
*-sun-solaris2.[6-7])
|
*-sun-solaris2.[6-7])
|
||||||
ifconfig lo0:$int 10.53.$i.$ns down
|
[ "$a" ] && ifconfig lo0:$int $a down
|
||||||
;;
|
;;
|
||||||
*-*-solaris2.[8-9]|*-*-solaris2.1[0-9])
|
*-*-solaris2.[8-9]|*-*-solaris2.10)
|
||||||
ifconfig lo0:$int 10.53.$i.$ns down
|
[ "$a" ] && {
|
||||||
ifconfig lo0:$int 10.53.$i.$ns unplumb
|
ifconfig lo0:$int $a down
|
||||||
|
ifconfig lo0:$int $a unplumb
|
||||||
|
}
|
||||||
|
[ "$aaaa" ] && {
|
||||||
ifconfig lo0:$int inet6 down
|
ifconfig lo0:$int inet6 down
|
||||||
ifconfig lo0:$int inet6 unplumb
|
ifconfig lo0:$int inet6 unplumb
|
||||||
|
}
|
||||||
;;
|
;;
|
||||||
|
*-*-solaris2.1[1-9])
|
||||||
|
[ "$a" ] && {
|
||||||
|
ipadm delete-addr lo0/bind9v4$int ||
|
||||||
|
echo failed lo0/bind9v4$int
|
||||||
|
}
|
||||||
|
[ "$aaaa" ] && {
|
||||||
|
ipadm delete-addr lo0/bind9v6$int ||
|
||||||
|
echo failed lo0/bind9v6$int
|
||||||
|
}
|
||||||
|
;;
|
||||||
|
|
||||||
*-*-linux*)
|
*-*-linux*)
|
||||||
if [ $use_ip ]; then
|
if [ "$use_ip" ]; then
|
||||||
ip address del 10.53.$i.$ns/24 \
|
[ "$a" ] && ip address del $a/24 dev lo:$int
|
||||||
dev lo:$int
|
[ "$aaaa" ] && ip address del $aaaa/64 dev lo
|
||||||
[ "$ipv6" ] && ip address del \
|
|
||||||
fd92:7065:b8e:${ipv6}ff::$ns/64 \
|
|
||||||
dev lo
|
|
||||||
else
|
else
|
||||||
ifconfig lo:$int 10.53.$i.$ns down
|
[ "$a" ] && ifconfig lo:$int $a down
|
||||||
[ "$ipv6" ] && ifconfig lo inet6 \
|
[ "$aaaa" ] && ifconfig lo inet6 del $aaaa/64
|
||||||
del fd92:7065:b8e:${ipv6}ff::$ns/64
|
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
*-unknown-freebsd*)
|
*-unknown-freebsd*)
|
||||||
ifconfig lo0 10.53.$i.$ns delete
|
[ "$a" ] && ifconfig lo0 $a delete
|
||||||
[ "$ipv6" ] && ifconfig lo0 inet6 \
|
[ "$aaaa" ] && ifconfig lo0 inet6 $aaaa delete
|
||||||
fd92:7065:b8e:${ipv6}ff::$ns delete
|
|
||||||
;;
|
;;
|
||||||
*-unknown-netbsd*)
|
*-unknown-netbsd*)
|
||||||
ifconfig lo0 10.53.$i.$ns delete
|
[ "$a" ] && ifconfig lo0 $a delete
|
||||||
[ "$ipv6" ] && ifconfig lo0 inet6 \
|
[ "$aaaa" ] && ifconfig lo0 inet6 $aaaa delete
|
||||||
fd92:7065:b8e:${ipv6}ff::$ns delete
|
|
||||||
;;
|
;;
|
||||||
*-unknown-openbsd*)
|
*-unknown-openbsd*)
|
||||||
ifconfig lo0 10.53.$i.$ns delete
|
[ "$a" ] && ifconfig lo0 $a delete
|
||||||
[ "$ipv6" ] && ifconfig lo0 inet6 \
|
[ "$aaaa" ] && ifconfig lo0 inet6 $aaaa delete
|
||||||
fd92:7065:b8e:${ipv6}ff::$ns delete
|
|
||||||
;;
|
;;
|
||||||
*-*-bsdi[3-5].*)
|
*-*-bsdi[3-5].*)
|
||||||
ifconfig lo0 remove 10.53.$i.$ns
|
[ "$a" ] && ifconfig lo0 remove $a
|
||||||
;;
|
;;
|
||||||
*-dec-osf[4-5].*)
|
*-dec-osf[4-5].*)
|
||||||
ifconfig lo0 -alias 10.53.$i.$ns
|
[ "$a" ] && ifconfig lo0 -alias $a
|
||||||
;;
|
;;
|
||||||
*-sgi-irix6.*)
|
*-sgi-irix6.*)
|
||||||
ifconfig lo0 -alias 10.53.$i.$ns
|
[ "$a" ] && ifconfig lo0 -alias $a
|
||||||
;;
|
;;
|
||||||
*-*-sysv5uw7*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
|
*-*-sysv5uw7*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
|
||||||
ifconfig lo0 -alias 10.53.$i.$ns
|
[ "$a" ] && ifconfig lo0 -alias $a
|
||||||
;;
|
;;
|
||||||
*-ibm-aix4.*|*-ibm-aix5.*)
|
*-ibm-aix4.*|*-ibm-aix5.*)
|
||||||
ifconfig lo0 delete 10.53.$i.$ns
|
[ "$a" ] && ifconfig lo0 delete $a
|
||||||
[ "$ipv6" ] && ifconfig lo0 delete inet6 \
|
[ "$aaaa" ] && ifconfig lo0 delete inet6 $aaaa/64
|
||||||
fd92:7065:b8e:${ipv6}ff::$ns/64
|
|
||||||
;;
|
;;
|
||||||
hpux)
|
hpux)
|
||||||
ifconfig lo0:$int 0.0.0.0
|
[ "$a" ] && ifconfig lo0:$int 0.0.0.0
|
||||||
ifconfig lo0:$int inet6 ::
|
[ "$aaaa" ] && ifconfig lo0:$int inet6 ::
|
||||||
;;
|
;;
|
||||||
*-sco3.2v*)
|
*-sco3.2v*)
|
||||||
ifconfig lo0 -alias 10.53.$i.$ns
|
[ "$a" ] && ifconfig lo0 -alias $a
|
||||||
;;
|
;;
|
||||||
*darwin*)
|
*darwin*)
|
||||||
ifconfig lo0 -alias 10.53.$i.$ns
|
[ "$a" ] && ifconfig lo0 -alias $a
|
||||||
[ "$ipv6" ] && ifconfig lo0 inet6 \
|
[ "$aaaa" ] && ifconfig lo0 inet6 $aaaa delete
|
||||||
fd92:7065:b8e:${ipv6}ff::$ns delete
|
|
||||||
;;
|
;;
|
||||||
*-cygwin*)
|
*-cygwin*)
|
||||||
echo "Please run ifconfig.bat as Administrator."
|
echo "Please run ifconfig.bat as Administrator."
|
||||||
@ -240,12 +214,55 @@ case "$1" in
|
|||||||
*)
|
*)
|
||||||
echo "Don't know how to destroy interface. Giving up."
|
echo "Don't know how to destroy interface. Giving up."
|
||||||
exit 1
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
sequence() (
|
||||||
|
awk -v s=$1 -v e=$2 '
|
||||||
|
BEGIN {
|
||||||
|
for (i = s ; i <= e; i++) { print i; }
|
||||||
|
exit;
|
||||||
|
}'
|
||||||
|
)
|
||||||
|
|
||||||
|
#
|
||||||
|
# 'max', 'i' and 'ns' are used to compute the interface identifier for
|
||||||
|
# systems that need it and must be unique for each interface (e.g. lo:$int).
|
||||||
|
#
|
||||||
|
# int=$((i * max + ns))
|
||||||
|
#
|
||||||
|
# 'max' is the number of nameservers configured in the inner loop.
|
||||||
|
# 'i' is the outer loop counter.
|
||||||
|
# 'ns' in the namserver being configured.
|
||||||
|
# 'int' interface identifier.
|
||||||
|
#
|
||||||
|
max=11
|
||||||
|
case $1 in
|
||||||
|
start|up|stop|down)
|
||||||
|
for i in $(sequence 0 2)
|
||||||
|
do
|
||||||
|
case $i in
|
||||||
|
0) ipv6="ff" ;;
|
||||||
|
1) ipv6="99" ;;
|
||||||
|
2) ipv6="00" ;;
|
||||||
|
*) ipv6="" ;;
|
||||||
|
esac
|
||||||
|
for ns in $(sequence 1 $max)
|
||||||
|
do
|
||||||
|
[ $i -gt 0 -a $ns -gt 2 ] && break
|
||||||
|
int=$((i * max + ns))
|
||||||
|
a=10.53.$i.$ns
|
||||||
|
aaaa=fd92:7065:b8e:${ipv6}ff::$ns
|
||||||
|
case "$1" in
|
||||||
|
start|up) up;;
|
||||||
|
stop|down) down;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
echo "Usage: $0 { up | down }"
|
echo "Usage: $0 { up | down }"
|
||||||
exit 1
|
exit 1
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
|
Loading…
x
Reference in New Issue
Block a user