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