]> CyberLeo.Net >> Repos - FreeBSD/stable/8.git/blob - etc/rc.d/ip6addrctl
MFC r238980:
[FreeBSD/stable/8.git] / etc / rc.d / ip6addrctl
1 #!/bin/sh
2 #
3 # $FreeBSD$
4 #
5
6 # PROVIDE: ip6addrctl
7 # REQUIRE: FILESYSTEMS netif
8 # BEFORE: network_ipv6
9 # KEYWORD: nojail
10
11 . /etc/rc.subr
12
13 name="ip6addrctl"
14 rcvar="ip6addrctl_enable"
15 start_cmd="ip6addrctl_start"
16 stop_cmd="ip6addrctl_stop"
17 extra_commands="status prefer_ipv6 prefer_ipv4"
18 status_cmd="ip6addrctl"
19 prefer_ipv6_cmd="ip6addrctl_prefer_ipv6"
20 prefer_ipv4_cmd="ip6addrctl_prefer_ipv4"
21
22 ip6addrctl_prefer_ipv6()
23 {
24         ip6addrctl flush >/dev/null 2>&1
25         ip6addrctl add ::1/128           50      0
26         ip6addrctl add ::/0              40      1
27         ip6addrctl add ::ffff:0:0/96     35      4
28         ip6addrctl add 2002::/16         30      2
29         ip6addrctl add 2001::/32          5      5
30         ip6addrctl add fc00::/7           3     13
31         ip6addrctl add ::/96              1      3
32         ip6addrctl add fec0::/10          1     11
33         ip6addrctl add 3ffe::/16          1     12
34         checkyesno ip6addrctl_verbose && ip6addrctl
35 }
36
37 ip6addrctl_prefer_ipv4()
38 {
39         ip6addrctl flush >/dev/null 2>&1
40         ip6addrctl add ::1/128           50      0
41         ip6addrctl add ::/0              40      1
42         ip6addrctl add ::ffff:0:0/96    100      4
43         ip6addrctl add 2002::/16         30      2
44         ip6addrctl add 2001::/32          5      5
45         ip6addrctl add fc00::/7           3     13
46         ip6addrctl add ::/96              1      3
47         ip6addrctl add fec0::/10          1     11
48         ip6addrctl add 3ffe::/16          1     12
49         checkyesno ip6addrctl_verbose && ip6addrctl
50 }
51
52 ip6addrctl_start()
53 {
54         if ifconfig lo0 inet6 >/dev/null 2>&1; then
55                 # We have IPv6 support in kernel.
56
57                 # install the policy of the address selection algorithm.
58                 if [ -f /etc/ip6addrctl.conf ]; then
59                         ip6addrctl flush >/dev/null 2>&1
60                         ip6addrctl install /etc/ip6addrctl.conf
61                         checkyesno ip6addrctl_verbose && ip6addrctl
62                 else
63                         if checkyesno ipv6_enable; then
64                                 ip6addrctl_prefer_ipv6
65                         else
66                                 ip6addrctl_prefer_ipv4
67                         fi
68                 fi
69         fi
70 }
71
72 ip6addrctl_stop()
73 {
74         if ifconfig lo0 inet6 >/dev/null 2>&1; then
75                 # We have IPv6 support in kernel.
76                 ip6addrctl flush >/dev/null 2>&1
77         fi
78 }
79
80 load_rc_config $name
81 run_rc_command "$1"