b558571de6
- Add afexists() check to address family specific rc.d scripts. A script for an AF will be silently ignored if the kernel has no support for the AF.
78 lines
1.5 KiB
Bash
Executable File
78 lines
1.5 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# $FreeBSD$
|
|
#
|
|
|
|
# PROVIDE: ip6addrctl
|
|
# REQUIRE: FILESYSTEMS
|
|
# BEFORE: netif
|
|
# KEYWORD: nojail
|
|
|
|
. /etc/rc.subr
|
|
. /etc/network.subr
|
|
|
|
name="ip6addrctl"
|
|
rcvar=`set_rcvar`
|
|
start_cmd="ip6addrctl_start"
|
|
stop_cmd="ip6addrctl_stop"
|
|
extra_commands="status prefer_ipv6 prefer_ipv4"
|
|
status_cmd="ip6addrctl"
|
|
prefer_ipv6_cmd="ip6addrctl_prefer_ipv6"
|
|
prefer_ipv4_cmd="ip6addrctl_prefer_ipv4"
|
|
|
|
set_rcvar_obsolete ipv6_enable ipv6_prefer
|
|
|
|
ip6addrctl_prefer_ipv6()
|
|
{
|
|
afexists inet6 || return 0
|
|
|
|
ip6addrctl flush >/dev/null 2>&1
|
|
ip6addrctl add ::1/128 50 0
|
|
ip6addrctl add ::/0 40 1
|
|
ip6addrctl add 2002::/16 30 2
|
|
ip6addrctl add ::/96 20 3
|
|
ip6addrctl add ::ffff:0:0/96 10 4
|
|
checkyesno ip6addrctl_verbose && ip6addrctl
|
|
}
|
|
|
|
ip6addrctl_prefer_ipv4()
|
|
{
|
|
afexists inet6 || return 0
|
|
|
|
ip6addrctl flush >/dev/null 2>&1
|
|
ip6addrctl add ::ffff:0:0/96 50 0
|
|
ip6addrctl add ::1/128 40 1
|
|
ip6addrctl add ::/0 30 2
|
|
ip6addrctl add 2002::/16 20 3
|
|
ip6addrctl add ::/96 10 4
|
|
checkyesno ip6addrctl_verbose && ip6addrctl
|
|
}
|
|
|
|
ip6addrctl_start()
|
|
{
|
|
afexists inet6 || return 0
|
|
|
|
# install the policy of the address selection algorithm.
|
|
if [ -f /etc/ip6addrctl.conf ]; then
|
|
ip6addrctl flush >/dev/null 2>&1
|
|
ip6addrctl install /etc/ip6addrctl.conf
|
|
checkyesno ip6addrctl_verbose && ip6addrctl
|
|
else
|
|
if checkyesno ipv6_prefer; then
|
|
ip6addrctl_prefer_ipv6
|
|
else
|
|
ip6addrctl_prefer_ipv4
|
|
fi
|
|
fi
|
|
}
|
|
|
|
ip6addrctl_stop()
|
|
{
|
|
afexists inet6 || return 0
|
|
|
|
ip6addrctl flush >/dev/null 2>&1
|
|
}
|
|
|
|
load_rc_config $name
|
|
run_rc_command "$1"
|