1#!/bin/sh 2# 3# Copyright (c) 2000 The KAME Project 4# All rights reserved. 5# 6# Redistribution and use in source and binary forms, with or without 7# modification, are permitted provided that the following conditions 8# are met: 9# 1. Redistributions of source code must retain the above copyright 10# notice, this list of conditions and the following disclaimer. 11# 2. Redistributions in binary form must reproduce the above copyright 12# notice, this list of conditions and the following disclaimer in the 13# documentation and/or other materials provided with the distribution. 14# 15# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25# SUCH DAMAGE. 26# 27# $FreeBSD: src/etc/rc.d/network_ipv6,v 1.35 2003/06/29 05:15:57 mtm Exp $ 28# From: src/etc/rc.network6,v 1.29 2002/04/06 15:15:43 29# 30 31# PROVIDE: network_ipv6 32# REQUIRE: routing 33 34. /etc/rc.subr 35. /etc/network.subr 36 37name="network_ipv6" 38rcvar=`set_rcvar ipv6` 39start_cmd="network_ipv6_start" 40 41network_ipv6_start() 42{ 43 # disallow "internal" addresses to appear on the wire 44 route add -inet6 ::ffff:0.0.0.0 -prefixlen 96 ::1 -reject 45 route add -inet6 ::0.0.0.0 -prefixlen 96 ::1 -reject 46 47 case ${ipv6_network_interfaces} in 48 [Aa][Uu][Tt][Oo]) 49 # Get a list of network interfaces 50 ipv6_network_interfaces="`ifconfig -l`" 51 ;; 52 [Nn][Oo][Nn][Ee]) 53 ipv6_network_interfaces='' 54 ;; 55 esac 56 57 if checkyesno ipv6_gateway_enable; then 58 # act as a router 59 ${SYSCTL_W} net.inet6.ip6.forwarding=1 60 ${SYSCTL_W} net.inet6.ip6.accept_rtadv=0 61 62 # wait for DAD 63 for i in $ipv6_network_interfaces; do 64 ifconfig $i up 65 done 66 sleep `${SYSCTL_N} net.inet6.ip6.dad_count` 67 sleep 1 68 else 69 # act as endhost - start with manual configuration 70 # Setup of net.inet6.ip6.accept_rtadv is done later by 71 # network6_interface_setup. 72 ${SYSCTL_W} net.inet6.ip6.forwarding=0 73 fi 74 75 if [ -n "${ipv6_network_interfaces}" ]; then 76 # Setup the interfaces 77 network6_interface_setup $ipv6_network_interfaces 78 79 # wait for DAD's completion (for global addrs) 80 sleep `${SYSCTL_N} net.inet6.ip6.dad_count` 81 sleep 1 82 fi 83 84 # Filter out interfaces on which IPv6 initialization failed. 85 if checkyesno ipv6_gateway_enable; then 86 ipv6_working_interfaces="" 87 for i in ${ipv6_network_interfaces}; do 88 laddr=`network6_getladdr $i exclude_tentative` 89 case ${laddr} in 90 '') 91 ;; 92 *) 93 ipv6_working_interfaces="$i \ 94 ${ipv6_working_interfaces}" 95 ;; 96 esac 97 done 98 ipv6_network_interfaces=${ipv6_working_interfaces} 99 fi 100 101 # Setup IPv6 to IPv4 mapping 102 network6_stf_setup 103 104 # Install the "default interface" to kernel, which will be used 105 # as the default route when there's no router. 106 network6_default_interface_setup 107 108 # Setup static routes 109 network6_static_routes_setup 110} 111 112load_rc_config $name 113run_rc_command "$1" 114