mirror of
https://github.com/isc-projects/bind9.git
synced 2026-04-28 17:46:40 -04:00
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)
263 lines
7.1 KiB
Bash
Executable file
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
|