]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - etc/rc.d/faith
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / etc / rc.d / faith
1 #!/bin/sh
2 # $FreeBSD$
3 #
4
5 # PROVIDE: faith
6 # REQUIRE: netif
7 # KEYWORD: nojail
8
9 . /etc/rc.subr
10 . /etc/network.subr
11
12 name="faith"
13 start_cmd="faith_up"
14 stop_cmd="faith_down"
15
16 faith_up()
17 {
18         case ${ipv6_faith_prefix} in
19         [Nn][Oo] | '')
20                 ;;
21         *)
22                 echo "Configuring IPv6-to-IPv4 TCP relay capturing interface:" \
23                     " faith0."
24                 ${SYSCTL} net.inet6.ip6.keepfaith=1
25                 ifconfig faith0 create >/dev/null 2>&1
26                 ifconfig faith0 up
27                 for prefix in ${ipv6_faith_prefix}; do
28                         prefixlen=`expr "${prefix}" : ".*/\(.*\)"`
29                         case ${prefixlen} in
30                         '')
31                                 prefixlen=96
32                                 ;;
33                         *)
34                                 prefix=`expr "${prefix}" : \
35                                              "\(.*\)/${prefixlen}"`
36                                 ;;
37                         esac
38                         route add -inet6 ${prefix} -prefixlen ${prefixlen} ::1
39                         route change -inet6 ${prefix} -prefixlen ${prefixlen} \
40                                 -ifp faith0
41                 done
42                 check_startmsgs && ifconfig faith0
43                 ;;
44         esac
45 }
46
47 faith_down()
48 {
49         echo "Removing IPv6-to-IPv4 TCP relay capturing interface: faith0."
50         ifconfig faith0 destroy
51         ${SYSCTL} net.inet6.ip6.keepfaith=0
52
53         case ${ipv6_faith_prefix} in
54         [Nn][Oo] | '')
55                 ;;
56         *)
57                 for prefix in ${ipv6_faith_prefix}; do
58                         prefixlen=`expr "${prefix}" : ".*/\(.*\)"`
59                         case ${prefixlen} in
60                         '')
61                                 prefixlen=96
62                                 ;;
63                         *)
64                                 prefix=`expr "${prefix}" : \
65                                              "\(.*\)/${prefixlen}"`
66                                 ;;
67                         esac
68                         route delete -inet6 ${prefix} -prefixlen ${prefixlen}
69                 done
70                 ;;
71         esac
72 }
73
74 load_rc_config $name
75 run_rc_command "$1"