;;
esac
-case "$1" in
+up() {
+ case "$sys" in
+ *-pc-solaris2.5.1)
+ [ "$a" ] && ifconfig lo0:$int $a netmask 0xffffffff up
+ ;;
+ *-sun-solaris2.[6-7])
+ [ "$a" ] && ifconfig lo0:$int $a netmask 0xffffffff up
+ ;;
+ *-*-solaris2.[8-9]|*-*-solaris2.10)
+ [ "$a" ] && {
+ /sbin/ifconfig lo0:$int plumb
+ /sbin/ifconfig lo0:$int $a up
+ /sbin/ifconfig lo0:$int mtu 1500
+ }
+ [ "$aaaa" ] && {
+ /sbin/ifconfig lo0:$int inet6 plumb
+ /sbin/ifconfig lo0:$int inet6 $aaaa 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*)
+ if [ "$use_ip" ]; then
+ ip address add $a/24 dev lo:$int
+ ip link set dev lo:$int mtu 1500
+ [ "$aaaa" ] && ip address add $aaaa/64 dev lo
+ else
+ ifconfig lo:$int $a up netmask 255.255.255.0 mtu 1500
+ [ "$aaaa" ] && ifconfig lo inet6 add $aaaa/64
+ fi
+ ;;
+ *-unknown-freebsd*)
+ [ "$a" ] && ifconfig lo0 $a alias netmask 0xffffffff mtu 1500
+ [ "$aaaa" ] && ifconfig lo0 inet6 $aaaa alias
+ ;;
+ *-unknown-dragonfly*|*-unknown-netbsd*|*-unknown-openbsd*)
+ [ "$a" ] && ifconfig lo0 $a alias netmask 255.255.255.0 mtu 1500
+ [ "$aaaa" ] && ifconfig lo0 inet6 $aaaa alias
+ ;;
+ *-*-bsdi[3-5].*)
+ [ "$a" ] && ifconfig lo0 add $a netmask 255.255.255.0
+ ;;
+ *-dec-osf[4-5].*)
+ [ "$a" ] && ifconfig lo0 alias $a
+ ;;
+ *-sgi-irix6.*)
+ [ "$a" ] && ifconfig lo0 alias $a
+ ;;
+ *-*-sysv5uw7*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
+ [ "$a" ] && ifconfig lo0 $a alias netmask 0xffffffff
+ ;;
+ *-ibm-aix4.*|*-ibm-aix5.*)
+ [ "$a" ] && ifconfig lo0 alias $a
+ [ "$aaaa" ] && ifconfig lo0 inet6 alias -dad $aaaa/64
+ ;;
+ hpux)
+ [ "$a" ] && ifconfig lo0:$int $a netmask 255.255.255.0 up
+ [ "$aaaa" ] && ifconfig lo0:$int inet6 $aaaa up
+ ;;
+ *-sco3.2v*)
+ [ "$a" ] && ifconfig lo0 alias $a
+ ;;
+ *-darwin*)
+ [ "$a" ] && ifconfig lo0 alias $a
+ [ "$aaaa" ] && ifconfig lo0 inet6 $aaaa 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
+}
+
+down() {
+ case "$sys" in
+ *-pc-solaris2.5.1)
+ [ "$a" ] && ifconfig lo0:$int 0.0.0.0 down
+ ;;
+ *-sun-solaris2.[6-7])
+ [ "$a" ] && ifconfig lo0:$int $a down
+ ;;
+ *-*-solaris2.[8-9]|*-*-solaris2.10)
+ [ "$a" ] && {
+ ifconfig lo0:$int $a down
+ ifconfig lo0:$int $a unplumb
+ }
+ [ "$aaaa" ] && {
+ ifconfig lo0:$int inet6 down
+ 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*)
+ if [ "$use_ip" ]; then
+ [ "$a" ] && ip address del $a/24 dev lo:$int
+ [ "$aaaa" ] && ip address del $aaaa/64 dev lo
+ else
+ [ "$a" ] && ifconfig lo:$int $a down
+ [ "$aaaa" ] && ifconfig lo inet6 del $aaaa/64
+ fi
+ ;;
+ *-unknown-freebsd*)
+ [ "$a" ] && ifconfig lo0 $a delete
+ [ "$aaaa" ] && ifconfig lo0 inet6 $aaaa delete
+ ;;
+ *-unknown-netbsd*)
+ [ "$a" ] && ifconfig lo0 $a delete
+ [ "$aaaa" ] && ifconfig lo0 inet6 $aaaa delete
+ ;;
+ *-unknown-openbsd*)
+ [ "$a" ] && ifconfig lo0 $a delete
+ [ "$aaaa" ] && ifconfig lo0 inet6 $aaaa delete
+ ;;
+ *-*-bsdi[3-5].*)
+ [ "$a" ] && ifconfig lo0 remove $a
+ ;;
+ *-dec-osf[4-5].*)
+ [ "$a" ] && ifconfig lo0 -alias $a
+ ;;
+ *-sgi-irix6.*)
+ [ "$a" ] && ifconfig lo0 -alias $a
+ ;;
+ *-*-sysv5uw7*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
+ [ "$a" ] && ifconfig lo0 -alias $a
+ ;;
+ *-ibm-aix4.*|*-ibm-aix5.*)
+ [ "$a" ] && ifconfig lo0 delete $a
+ [ "$aaaa" ] && ifconfig lo0 delete inet6 $aaaa/64
+ ;;
+ hpux)
+ [ "$a" ] && ifconfig lo0:$int 0.0.0.0
+ [ "$aaaa" ] && ifconfig lo0:$int inet6 ::
+ ;;
+ *-sco3.2v*)
+ [ "$a" ] && ifconfig lo0 -alias $a
+ ;;
+ *darwin*)
+ [ "$a" ] && ifconfig lo0 -alias $a
+ [ "$aaaa" ] && ifconfig lo0 inet6 $aaaa delete
+ ;;
+ *-cygwin*)
+ echo "Please run ifconfig.bat as Administrator."
+ exit 1
+ ;;
+ *)
+ echo "Don't know how to destroy interface. Giving up."
+ exit 1
+ ;;
+ esac
+}
+
+sequence() (
+ awk -v s=$1 -v e=$2 '
+ BEGIN {
+ for (i = s ; i <= e; i++) { print i; }
+ exit;
+ }'
+)
- start|up)
- for i in 0 1 2
+#
+# '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" ;;
2) ipv6="00" ;;
*) ipv6="" ;;
esac
- for ns in 1 2 3 4 5 6 7 8 9 10 11
+ for ns in $(sequence 1 $max)
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 mtu 1500
- /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
- ip link set dev lo:$int mtu 1500
- [ "$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 \
- mtu 1500
- [ "$ipv6" ] && ifconfig lo inet6 add \
- fd92:7065:b8e:${ipv6}ff::$ns/64
- fi
- ;;
- *-unknown-freebsd*)
- ifconfig lo0 10.53.$i.$ns alias \
- netmask 0xffffffff \
- mtu 1500
- [ "$ipv6" ] && ifconfig lo0 inet6 \
- fd92:7065:b8e:${ipv6}ff::$ns alias
- ;;
- *-unknown-dragonfly*|*-unknown-netbsd*|*-unknown-openbsd*)
- ifconfig lo0 10.53.$i.$ns alias \
- netmask 255.255.255.0 \
- mtu 1500
- [ "$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
+ 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
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 11 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
;;
-
- *)
- echo "Usage: $0 { up | down }"
- exit 1
esac