faith revision 198190
175831Sasmodai#!/bin/sh
212099Sjoerg# $FreeBSD: head/etc/rc.d/faith 198190 2009-10-17 21:09:15Z dougb $
312099Sjoerg#
412099Sjoerg
512099Sjoerg# PROVIDE: faith
612099Sjoerg# REQUIRE: netif
712099Sjoerg# KEYWORD: nojail
812099Sjoerg
912099Sjoerg. /etc/rc.subr
1012099Sjoerg. /etc/network.subr
1112099Sjoerg
1212099Sjoergname="faith"
1312099Sjoergstart_cmd="faith_up"
1412099Sjoergstop_cmd="faith_down"
1512099Sjoerg
1612099Sjoergfaith_up()
1712099Sjoerg{
1812099Sjoerg	case ${ipv6_faith_prefix} in
1912099Sjoerg	[Nn][Oo] | '')
2012099Sjoerg		;;
2112099Sjoerg	*)
2212099Sjoerg		echo "Configuring IPv6-to-IPv4 TCP relay capturing interface:" \
2312099Sjoerg		    " faith0."
2412099Sjoerg		${SYSCTL_W} net.inet6.ip6.keepfaith=1
2512099Sjoerg		ifconfig faith0 create >/dev/null 2>&1
2612099Sjoerg		ifconfig faith0 up
2712099Sjoerg		for prefix in ${ipv6_faith_prefix}; do
2812099Sjoerg			prefixlen=`expr "${prefix}" : ".*/\(.*\)"`
2912099Sjoerg			case ${prefixlen} in
3012099Sjoerg			'')
3112099Sjoerg				prefixlen=96
3212099Sjoerg				;;
3312099Sjoerg			*)
3412099Sjoerg				prefix=`expr "${prefix}" : \
3575731Sasmodai					     "\(.*\)/${prefixlen}"`
3675731Sasmodai				;;
3712099Sjoerg			esac
3812099Sjoerg			route add -inet6 ${prefix} -prefixlen ${prefixlen} ::1
3912099Sjoerg			route change -inet6 ${prefix} -prefixlen ${prefixlen} \
4012099Sjoerg				-ifp faith0
4112099Sjoerg		done
4212099Sjoerg		check_startmsgs && ifconfig faith0
4312099Sjoerg		;;
4412099Sjoerg	esac
4512099Sjoerg}
4612099Sjoerg
4712099Sjoergfaith_down()
4812099Sjoerg{
4912099Sjoerg	echo "Removing IPv6-to-IPv4 TCP relay capturing interface: faith0."
5012099Sjoerg	ifconfig faith0 destroy
5112099Sjoerg	${SYSCTL_W} net.inet6.ip6.keepfaith=0
5212099Sjoerg
5312099Sjoerg	case ${ipv6_faith_prefix} in
5412099Sjoerg	[Nn][Oo] | '')
5512099Sjoerg		;;
5612099Sjoerg	*)
5712099Sjoerg		for prefix in ${ipv6_faith_prefix}; do
5812099Sjoerg			prefixlen=`expr "${prefix}" : ".*/\(.*\)"`
5912099Sjoerg			case ${prefixlen} in
6012099Sjoerg			'')
6112099Sjoerg				prefixlen=96
6212099Sjoerg				;;
6312099Sjoerg			*)
6412099Sjoerg				prefix=`expr "${prefix}" : \
6512099Sjoerg					     "\(.*\)/${prefixlen}"`
6612099Sjoerg				;;
6712099Sjoerg			esac
6812099Sjoerg			route delete -inet6 ${prefix} -prefixlen ${prefixlen}
6912099Sjoerg		done
7012099Sjoerg		;;
7112099Sjoerg	esac
7212099Sjoerg}
7312099Sjoerg
7412099Sjoergload_rc_config $name
7512099Sjoergrun_rc_command "$1"
7612099Sjoerg