]> CyberLeo.Net >> Repos - FreeBSD/releng/8.1.git/blob - etc/rc.d/ip6addrctl
Copy stable/8 to releng/8.1 in preparation for 8.1-RC1.
[FreeBSD/releng/8.1.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=`set_rcvar`
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 2002::/16        30      2
28         ip6addrctl add ::/96            20      3
29         ip6addrctl add ::ffff:0:0/96    10      4
30         checkyesno ip6addrctl_verbose && ip6addrctl
31 }
32
33 ip6addrctl_prefer_ipv4()
34 {
35         ip6addrctl flush >/dev/null 2>&1
36         ip6addrctl add ::ffff:0:0/96    50      0
37         ip6addrctl add ::1/128          40      1
38         ip6addrctl add ::/0             30      2
39         ip6addrctl add 2002::/16        20      3
40         ip6addrctl add ::/96            10      4
41         checkyesno ip6addrctl_verbose && ip6addrctl
42 }
43
44 ip6addrctl_start()
45 {
46         if ifconfig lo0 inet6 >/dev/null 2>&1; then
47                 # We have IPv6 support in kernel.
48
49                 # install the policy of the address selection algorithm.
50                 if [ -f /etc/ip6addrctl.conf ]; then
51                         ip6addrctl flush >/dev/null 2>&1
52                         ip6addrctl install /etc/ip6addrctl.conf
53                         checkyesno ip6addrctl_verbose && ip6addrctl
54                 else
55                         if checkyesno ipv6_enable; then
56                                 ip6addrctl_prefer_ipv6
57                         else
58                                 ip6addrctl_prefer_ipv4
59                         fi
60                 fi
61         fi
62 }
63
64 ip6addrctl_stop()
65 {
66         if ifconfig lo0 inet6 >/dev/null 2>&1; then
67                 # We have IPv6 support in kernel.
68                 ip6addrctl flush >/dev/null 2>&1
69         fi
70 }
71
72 load_rc_config $name
73 run_rc_command "$1"