Merge branch '302-use-ip-for-ifconfig' into 'v9_12'

Resolve "ifconfig.sh doesn't work on centos7"

Closes #302

See merge request isc-projects/bind9!330
This commit is contained in:
Evan Hunt 2018-06-05 21:45:16 -07:00
commit 4be2773736
2 changed files with 210 additions and 169 deletions

View file

@ -1,3 +1,7 @@
4963. [test] ifconfig.sh now uses "ip" instead of "ifconfig",
if available, to configure the test interfaces on
linux. [GL #302]
4958. [bug] Remove redundant space from NSEC3 record. [GL #281]
4955. [cleanup] Silence cppcheck warnings in lib/dns/master.c.

View file

@ -13,7 +13,11 @@
# Set up interface aliases for bind9 system tests.
#
# IPv4: 10.53.0.{1..8} RFC 1918
# 10.53.1.{0..2}
# 10.53.2.{0..2}
# IPv6: fd92:7065:b8e:ffff::{1..8} ULA
# fd92:7065:b8e:99ff::{1..2}
# fd92:7065:b8e:ff::{1..2}
#
config_guess=""
@ -44,191 +48,224 @@ case `uname -a` in
*) sys=`sh $config_guess` ;;
esac
case "$2" in
[1-9]|[1-9][0-9]|[1-9][0-9][0-9]) base=$2;;
*) base="1"
esac
case "$3" in
[1-9]|[1-9][0-9]|[1-9][0-9][0-9]) base6=$3;;
*) base6=$base
use_ip=
case "$sys" in
*-*-linux*)
if type ip > /dev/null; then
use_ip=yes
elif type ifconfig > /dev/null; then
:
else
echo "$0: can't find ip or ifconfig" >&2
exit 1
fi
;;
esac
case "$1" in
start|up)
for ns in 1 2 3 4 5 6 7 8
for i in 0 1 2
do
if test -n "$base"
then
int=`expr $ns + $base - 1`
else
int=$ns
fi
if test -n "$base6"
then
int6=`expr $ns + $base6 - 1`
else
int6=$ns
fi
case "$sys" in
*-pc-solaris2.5.1)
ifconfig lo0:$int 10.53.0.$ns netmask 0xffffffff up
;;
*-sun-solaris2.[6-7])
ifconfig lo0:$int 10.53.0.$ns netmask 0xffffffff up
;;
*-*-solaris2.[8-9]|*-*-solaris2.1[0-9])
/sbin/ifconfig lo0:$int plumb
/sbin/ifconfig lo0:$int 10.53.0.$ns up
if test -n "$int6"
then
/sbin/ifconfig lo0:$int6 inet6 plumb
/sbin/ifconfig lo0:$int6 \
inet6 fd92:7065:b8e:ffff::$ns up
fi
;;
*-*-linux*)
ifconfig lo:$int 10.53.0.$ns up netmask 255.255.255.0
ifconfig lo inet6 add fd92:7065:b8e:ffff::$ns/64
;;
*-unknown-freebsd*)
ifconfig lo0 10.53.0.$ns alias netmask 0xffffffff
ifconfig lo0 inet6 fd92:7065:b8e:ffff::$ns alias
;;
*-unknown-netbsd*)
ifconfig lo0 10.53.0.$ns alias netmask 255.255.255.0
ifconfig lo0 inet6 fd92:7065:b8e:ffff::$ns alias
;;
*-unknown-openbsd*)
ifconfig lo0 10.53.0.$ns alias netmask 255.255.255.0
ifconfig lo0 inet6 fd92:7065:b8e:ffff::$ns alias
;;
*-*-bsdi[3-5].*)
ifconfig lo0 add 10.53.0.$ns netmask 255.255.255.0
;;
*-dec-osf[4-5].*)
ifconfig lo0 alias 10.53.0.$ns
;;
*-sgi-irix6.*)
ifconfig lo0 alias 10.53.0.$ns
;;
*-*-sysv5uw7*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
ifconfig lo0 10.53.0.$ns alias netmask 0xffffffff
;;
*-ibm-aix4.*|*-ibm-aix5.*)
ifconfig lo0 alias 10.53.0.$ns
ifconfig lo0 inet6 alias -dad fd92:7065:b8e:ffff::$ns/64
;;
hpux)
ifconfig lo0:$int 10.53.0.$ns netmask 255.255.255.0 up
ifconfig lo0:$int inet6 fd92:7065:b8e:ffff::$ns up
;;
*-sco3.2v*)
ifconfig lo0 alias 10.53.0.$ns
;;
*-darwin*)
ifconfig lo0 alias 10.53.0.$ns
ifconfig lo0 inet6 fd92:7065:b8e:ffff::$ns alias
;;
*-cygwin*)
echo "Please run ifconfig.bat as Administrator."
exit 1
;;
*)
echo "Don't know how to set up interface. Giving up."
exit 1
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
do
[ $i -gt 0 -a $ns -gt 2 ] && break
int=`expr $i \* 10 + $ns - 1`
case "$sys" in
*-pc-solaris2.5.1)
ifconfig lo0:$int 10.53.$i.$ns \
netmask 0xffffffff up
;;
*-sun-solaris2.[6-7])
ifconfig lo0:$int 10.53.$i.$ns \
netmask 0xffffffff up
;;
*-*-solaris2.[8-9]|*-*-solaris2.1[0-9])
/sbin/ifconfig lo0:$int plumb
/sbin/ifconfig lo0:$int 10.53.$i.$ns up
/sbin/ifconfig lo0:$int inet6 plumb
[ "$ipv6" ] && /sbin/ifconfig lo0:$int \
inet6 fd92:7065:b8e:${ipv6}ff::$ns up
;;
*-*-linux*)
if [ $use_ip ]; then
ip address add 10.53.$i.$ns/24 \
dev lo:$int
[ "$ipv6" ] && ip address add \
fd92:7065:b8e:${ipv6}ff::$ns/64 \
dev lo
else
ifconfig lo:$int 10.53.$i.$ns up \
netmask 255.255.255.0
[ "$ipv6" ] && ifconfig lo inet6 add \
fd92:7065:b8e:${ipv6}ff::$ns/64
fi
;;
*-unknown-freebsd*)
ifconfig lo0 10.53.$i.$ns alias \
netmask 0xffffffff
[ "$ipv6" ] && ifconfig lo0 inet6 \
fd92:7065:b8e:${ipv6}ff::$ns alias
;;
*-unknown-netbsd*)
ifconfig lo0 10.53.$i.$ns alias \
netmask 255.255.255.0
[ "$ipv6" ] && ifconfig lo0 inet6 \
fd92:7065:b8e:${ipv6}ff::$ns alias
;;
*-unknown-openbsd*)
ifconfig lo0 10.53.$i.$ns alias \
netmask 255.255.255.0
[ "$ipv6" ] && ifconfig lo0 inet6 \
fd92:7065:b8e:${ipv6}ff::$ns alias
;;
*-*-bsdi[3-5].*)
ifconfig lo0 add 10.53.$i.$ns \
netmask 255.255.255.0
;;
*-dec-osf[4-5].*)
ifconfig lo0 alias 10.53.$i.$ns
;;
*-sgi-irix6.*)
ifconfig lo0 alias 10.53.$i.$ns
;;
*-*-sysv5uw7*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
ifconfig lo0 10.53.$i.$ns alias \
netmask 0xffffffff
;;
*-ibm-aix4.*|*-ibm-aix5.*)
ifconfig lo0 alias 10.53.$i.$ns
[ "$ipv6" ] && ifconfig lo0 inet6 alias -dad \
fd92:7065:b8e:${ipv6}ff::$ns/64
;;
hpux)
ifconfig lo0:$int 10.53.$i.$ns \
netmask 255.255.255.0 up
[ "$ipv6" ] && ifconfig lo0:$int inet6 \
fd92:7065:b8e:${ipv6}ff::$ns up
;;
*-sco3.2v*)
ifconfig lo0 alias 10.53.$i.$ns
;;
*-darwin*)
ifconfig lo0 alias 10.53.$i.$ns
[ "$ipv6" ] && ifconfig lo0 inet6 \
fd92:7065:b8e:${ipv6}ff::$ns alias
;;
*-cygwin*)
echo "Please run ifconfig.bat as Administrator."
exit 1
;;
*)
echo "Don't know how to set up interface. Giving up."
exit 1
esac
done
done
;;
stop|down)
for ns in 8 7 6 5 4 3 2 1
for i in 0 1 2
do
if test -n "$base"
then
int=`expr $ns + $base - 1`
else
int=$ns
fi
if test -n "$base6"
then
int6=`expr $ns + $base6 - 1`
else
int6=$ns
fi
case "$sys" in
*-pc-solaris2.5.1)
ifconfig lo0:$int 0.0.0.0 down
;;
*-sun-solaris2.[6-7])
ifconfig lo0:$int 10.53.0.$ns down
;;
*-*-solaris2.[8-9]|*-*-solaris2.1[0-9])
ifconfig lo0:$int 10.53.0.$ns down
ifconfig lo0:$int 10.53.0.$ns unplumb
if test -n "$int6"
then
ifconfig lo0:$int6 inet6 down
ifconfig lo0:$int6 inet6 unplumb
fi
;;
*-*-linux*)
ifconfig lo:$int 10.53.0.$ns down
ifconfig lo inet6 del fd92:7065:b8e:ffff::$ns/64
;;
*-unknown-freebsd*)
ifconfig lo0 10.53.0.$ns delete
ifconfig lo0 inet6 fd92:7065:b8e:ffff::$ns delete
;;
*-unknown-netbsd*)
ifconfig lo0 10.53.0.$ns delete
ifconfig lo0 inet6 fd92:7065:b8e:ffff::$ns delete
;;
*-unknown-openbsd*)
ifconfig lo0 10.53.0.$ns delete
ifconfig lo0 inet6 fd92:7065:b8e:ffff::$ns delete
;;
*-*-bsdi[3-5].*)
ifconfig lo0 remove 10.53.0.$ns
;;
*-dec-osf[4-5].*)
ifconfig lo0 -alias 10.53.0.$ns
;;
*-sgi-irix6.*)
ifconfig lo0 -alias 10.53.0.$ns
;;
*-*-sysv5uw7*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
ifconfig lo0 -alias 10.53.0.$ns
;;
*-ibm-aix4.*|*-ibm-aix5.*)
ifconfig lo0 delete 10.53.0.$ns
ifconfig lo0 delete inet6 fd92:7065:b8e:ffff::$ns/64
;;
hpux)
ifconfig lo0:$int 0.0.0.0
ifconfig lo0:$int inet6 ::
;;
*-sco3.2v*)
ifconfig lo0 -alias 10.53.0.$ns
;;
*darwin*)
ifconfig lo0 -alias 10.53.0.$ns
ifconfig lo0 inet6 fd92:7065:b8e:ffff::$ns delete
;;
*-cygwin*)
echo "Please run ifconfig.bat as Administrator."
exit 1
;;
*)
echo "Don't know how to destroy interface. Giving up."
exit 1
case $i in
0) ipv6="ff" ;;
1) ipv6="99" ;;
2) ipv6="00" ;;
*) ipv6="" ;;
esac
for ns in 8 7 6 5 4 3 2 1
do
[ $i -gt 0 -a $ns -gt 2 ] && continue
int=`expr $i \* 10 + $ns - 1`
case "$sys" in
*-pc-solaris2.5.1)
ifconfig lo0:$int 0.0.0.0 down
;;
*-sun-solaris2.[6-7])
ifconfig lo0:$int 10.53.$i.$ns down
;;
*-*-solaris2.[8-9]|*-*-solaris2.1[0-9])
ifconfig lo0:$int 10.53.$i.$ns down
ifconfig lo0:$int 10.53.$i.$ns unplumb
ifconfig lo0:$int inet6 down
ifconfig lo0:$int inet6 unplumb
;;
*-*-linux*)
if [ $use_ip ]; then
ip address del 10.53.$i.$ns/24 \
dev lo:$int
[ "$ipv6" ] && ip address del \
fd92:7065:b8e:${ipv6}ff::$ns/64 \
dev lo
else
ifconfig lo:$int 10.53.$i.$ns down
[ "$ipv6" ] && ifconfig lo inet6 \
del fd92:7065:b8e:${ipv6}ff::$ns/64
fi
;;
*-unknown-freebsd*)
ifconfig lo0 10.53.$i.$ns delete
[ "$ipv6" ] && ifconfig lo0 inet6 \
fd92:7065:b8e:${ipv6}ff::$ns delete
;;
*-unknown-netbsd*)
ifconfig lo0 10.53.$i.$ns delete
[ "$ipv6" ] && ifconfig lo0 inet6 \
fd92:7065:b8e:${ipv6}ff::$ns delete
;;
*-unknown-openbsd*)
ifconfig lo0 10.53.$i.$ns delete
[ "$ipv6" ] && ifconfig lo0 inet6 \
fd92:7065:b8e:${ipv6}ff::$ns delete
;;
*-*-bsdi[3-5].*)
ifconfig lo0 remove 10.53.$i.$ns
;;
*-dec-osf[4-5].*)
ifconfig lo0 -alias 10.53.$i.$ns
;;
*-sgi-irix6.*)
ifconfig lo0 -alias 10.53.$i.$ns
;;
*-*-sysv5uw7*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
ifconfig lo0 -alias 10.53.$i.$ns
;;
*-ibm-aix4.*|*-ibm-aix5.*)
ifconfig lo0 delete 10.53.$i.$ns
[ "$ipv6" ] && ifconfig lo0 delete inet6 \
fd92:7065:b8e:${ipv6}ff::$ns/64
;;
hpux)
ifconfig lo0:$int 0.0.0.0
ifconfig lo0:$int inet6 ::
;;
*-sco3.2v*)
ifconfig lo0 -alias 10.53.$i.$ns
;;
*darwin*)
ifconfig lo0 -alias 10.53.$i.$ns
[ "$ipv6" ] && ifconfig lo0 inet6 \
fd92:7065:b8e:${ipv6}ff::$ns delete
;;
*-cygwin*)
echo "Please run ifconfig.bat as Administrator."
exit 1
;;
*)
echo "Don't know how to destroy interface. Giving up."
exit 1
esac
done
done
;;
*)
echo "Usage: $0 { up | down } [base]"
echo "Usage: $0 { up | down }"
exit 1
esac