ip6addrctl revision 206408
1#!/bin/sh
2#
3# $FreeBSD: head/etc/rc.d/ip6addrctl 206408 2010-04-09 01:35:09Z dougb $
4#
5
6# PROVIDE: ip6addrctl
7# REQUIRE: FILESYSTEMS
8# BEFORE: netif
9# KEYWORD: nojail
10
11. /etc/rc.subr
12. /etc/network.subr
13
14name="ip6addrctl"
15rcvar=`set_rcvar`
16start_cmd="ip6addrctl_start"
17stop_cmd="ip6addrctl_stop"
18extra_commands="status prefer_ipv6 prefer_ipv4"
19status_cmd="ip6addrctl"
20prefer_ipv6_cmd="ip6addrctl_prefer_ipv6"
21prefer_ipv4_cmd="ip6addrctl_prefer_ipv4"
22
23ip6addrctl_prefer_ipv6()
24{
25	afexists inet6 || return 0
26
27	ip6addrctl flush >/dev/null 2>&1
28	ip6addrctl add ::1/128		50	0
29	ip6addrctl add ::/0		40	1
30	ip6addrctl add 2002::/16	30	2
31	ip6addrctl add ::/96		20	3
32	ip6addrctl add ::ffff:0:0/96	10	4
33	checkyesno ip6addrctl_verbose && ip6addrctl
34}
35
36ip6addrctl_prefer_ipv4()
37{
38	afexists inet6 || return 0
39
40	ip6addrctl flush >/dev/null 2>&1
41	ip6addrctl add ::ffff:0:0/96	50	0
42	ip6addrctl add ::1/128		40	1
43	ip6addrctl add ::/0		30	2
44	ip6addrctl add 2002::/16	20	3
45	ip6addrctl add ::/96		10	4
46	checkyesno ip6addrctl_verbose && ip6addrctl
47}
48
49ip6addrctl_start()
50{
51	afexists inet6 || return 0
52
53	# install the policy of the address selection algorithm.
54	if [ -f /etc/ip6addrctl.conf ]; then
55		ip6addrctl flush >/dev/null 2>&1
56		ip6addrctl install /etc/ip6addrctl.conf
57		checkyesno ip6addrctl_verbose && ip6addrctl
58	else
59		if checkyesno ipv6_prefer; then
60			ip6addrctl_prefer_ipv6
61		else
62			ip6addrctl_prefer_ipv4
63		fi
64	fi
65}
66
67ip6addrctl_stop()
68{
69	afexists inet6 || return 0
70
71	ip6addrctl flush >/dev/null 2>&1
72}
73
74load_rc_config $name
75run_rc_command "$1"
76