ip6addrctl revision 212574
1234949Sbapt#!/bin/sh
2234949Sbapt#
3234949Sbapt# $FreeBSD: head/etc/rc.d/ip6addrctl 212574 2010-09-13 19:51:15Z hrs $
4234949Sbapt#
5234949Sbapt
6234949Sbapt# PROVIDE: ip6addrctl
7234949Sbapt# REQUIRE: FILESYSTEMS
8234949Sbapt# BEFORE: netif
9234949Sbapt# KEYWORD: nojail
10234949Sbapt
11234949Sbapt. /etc/rc.subr
12234949Sbapt. /etc/network.subr
13234949Sbapt
14234949Sbaptname="ip6addrctl"
15234949Sbaptrcvar=`set_rcvar`
16234949Sbaptstart_cmd="ip6addrctl_start"
17234949Sbaptstop_cmd="ip6addrctl_stop"
18234949Sbaptextra_commands="status prefer_ipv6 prefer_ipv4"
19234949Sbaptstatus_cmd="ip6addrctl"
20234949Sbaptprefer_ipv6_cmd="ip6addrctl_prefer_ipv6"
21234949Sbaptprefer_ipv4_cmd="ip6addrctl_prefer_ipv4"
22234949Sbapt
23234949Sbaptset_rcvar_obsolete ipv6_enable ipv6_prefer
24234949Sbapt
25234949Sbaptip6addrctl_prefer_ipv6()
26234949Sbapt{
27234949Sbapt	afexists inet6 || return 0
28234949Sbapt
29234949Sbapt	ip6addrctl flush >/dev/null 2>&1
30234949Sbapt	ip6addrctl add ::1/128		50	0
31234949Sbapt	ip6addrctl add ::/0		40	1
32234949Sbapt	ip6addrctl add 2002::/16	30	2
33234949Sbapt	ip6addrctl add ::/96		20	3
34234949Sbapt	ip6addrctl add ::ffff:0:0/96	10	4
35234949Sbapt	checkyesno ip6addrctl_verbose && ip6addrctl
36234949Sbapt}
37234949Sbapt
38234949Sbaptip6addrctl_prefer_ipv4()
39234949Sbapt{
40234949Sbapt	afexists inet6 || return 0
41234949Sbapt
42234949Sbapt	ip6addrctl flush >/dev/null 2>&1
43234949Sbapt	ip6addrctl add ::ffff:0:0/96	50	0
44234949Sbapt	ip6addrctl add ::1/128		40	1
45234949Sbapt	ip6addrctl add ::/0		30	2
46234949Sbapt	ip6addrctl add 2002::/16	20	3
47	ip6addrctl add ::/96		10	4
48	checkyesno ip6addrctl_verbose && ip6addrctl
49}
50
51ip6addrctl_start()
52{
53	afexists inet6 || return 0
54
55	# install the policy of the address selection algorithm.
56	if [ -f /etc/ip6addrctl.conf ]; then
57		ip6addrctl flush >/dev/null 2>&1
58		ip6addrctl install /etc/ip6addrctl.conf
59		checkyesno ip6addrctl_verbose && ip6addrctl
60	else
61		if checkyesno ipv6_prefer; then
62			ip6addrctl_prefer_ipv6
63		else
64			ip6addrctl_prefer_ipv4
65		fi
66	fi
67}
68
69ip6addrctl_stop()
70{
71	afexists inet6 || return 0
72
73	ip6addrctl flush >/dev/null 2>&1
74}
75
76load_rc_config $name
77run_rc_command "$1"
78