bind9/bin/tests/system/ifconfig.sh
Petr Menšík 2b526cf8e1 Allow ifconfig to be called from any directory
ifconfig.sh depends on config.guess for platform guessing. It uses it to
choose between ifconfig or ip tools to configure interfaces. If
system-wide automake script is installed and local was not found, use
platform guess. It should work well on mostly any sane platform. Still
prefers local guess, but passes when if cannot find it.

(cherry picked from commit 38301052e1)
2019-03-12 14:10:40 +11:00

263 lines
7.1 KiB
Bash
Executable file

#!/bin/sh
#
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# See the COPYRIGHT file distributed with this work for additional
# information regarding copyright ownership.
#
# Set up interface aliases for bind9 system tests.
#
# IPv4: 10.53.0.{1..10} RFC 1918
# 10.53.1.{0..2}
# 10.53.2.{0..2}
# IPv6: fd92:7065:b8e:ffff::{1..10} ULA
# fd92:7065:b8e:99ff::{1..2}
# fd92:7065:b8e:ff::{1..2}
#
config_guess=""
for f in ./config.guess ../../../config.guess /usr/share/automake*/config.guess
do
if test -f $f
then
config_guess=$f
fi
done
if test "X$config_guess" = "X"
then
cat <<EOF >&2
$0: must be run from the top level source directory or the
bin/tests/system directory
EOF
exit 1
fi
sys=`sh $config_guess`
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 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
do
[ $i -gt 0 -a $ns -gt 2 ] && break
int=`expr $i \* 10 + $ns`
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 i in 0 1 2
do
case $i in
0) ipv6="ff" ;;
1) ipv6="99" ;;
2) ipv6="00" ;;
*) ipv6="" ;;
esac
for ns in 10 9 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 }"
exit 1
esac