atm1 revision 165683
1249261Sdim#!/bin/sh 2249261Sdim# 3249261Sdim# Copyright (c) 2000 The FreeBSD Project 4249261Sdim# All rights reserved. 5249261Sdim# 6249261Sdim# Redistribution and use in source and binary forms, with or without 7249261Sdim# modification, are permitted provided that the following conditions 8249261Sdim# are met: 9249261Sdim# 1. Redistributions of source code must retain the above copyright 10249261Sdim# notice, this list of conditions and the following disclaimer. 11249261Sdim# 2. Redistributions in binary form must reproduce the above copyright 12249261Sdim# notice, this list of conditions and the following disclaimer in the 13249261Sdim# documentation and/or other materials provided with the distribution. 14249261Sdim# 15249261Sdim# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16249261Sdim# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17249261Sdim# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18249261Sdim# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19249261Sdim# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20249261Sdim# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21249261Sdim# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22249261Sdim# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23249261Sdim# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24249261Sdim# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25249261Sdim# SUCH DAMAGE. 26249261Sdim# 27249261Sdim# $FreeBSD: head/etc/rc.d/atm1 165683 2006-12-31 10:37:18Z yar $ 28249261Sdim# 29249261Sdim 30249261Sdim# PROVIDE: atm1 31249261Sdim# REQUIRE: root 32249261Sdim# BEFORE: netif 33249261Sdim# KEYWORD: nojail 34249261Sdim 35249261Sdim. /etc/rc.subr 36249261Sdim 37249261Sdimname="atm" 38249261Sdimrcvar="atm_enable" 39249261Sdimstart_cmd="atm_start" 40249261Sdimstop_cmd=":" 41249261Sdim 42249261Sdim# ATM networking startup script 43249261Sdim# 44249261Sdim# Initial interface configuration. 45249261Sdim# N.B. /usr is not mounted. 46249261Sdim# 47249261Sdimatm_start() 48249261Sdim{ 49249261Sdim if [ -n "${natm_interfaces}" ] ; then 50249261Sdim # Load the HARP pseudo interface 51249261Sdim load_kld if_harp || return 1 52249261Sdim 53249261Sdim # Load all the NATM drivers that we need 54249261Sdim for natm in ${natm_interfaces} ; do 55249261Sdim ifconfig ${natm} up 56249261Sdim done 57249261Sdim fi 58249261Sdim 59249261Sdim # Load loadable HARP drivers 60249261Sdim for dev in ${atm_load} ; do 61249261Sdim load_kld ${dev} || return 1 62249261Sdim done 63249261Sdim 64249261Sdim # Locate all probed ATM adapters 65249261Sdim atmdev=`atm sh stat int | while read dev junk; do 66249261Sdim case ${dev} in 67249261Sdim hea[0-9] | hea[0-9][0-9]) 68249261Sdim echo "${dev} " 69249261Sdim ;; 70249261Sdim hfa[0-9] | hfa[0-9][0-9]) 71249261Sdim echo "${dev} " 72249261Sdim ;; 73249261Sdim idt[0-9] | idt[0-9][0-9]) 74249261Sdim echo "${dev} " 75249261Sdim ;; 76249261Sdim 77249261Sdim # NATM interfaces per pseudo driver 78249261Sdim en[0-9] | en[0-9][0-9]) 79249261Sdim echo "${dev} " 80249261Sdim ;; 81249261Sdim fatm[0-9] | fatm[0-9][0-9]) 82249261Sdim echo "${dev} " 83249261Sdim ;; 84249261Sdim hatm[0-9] | hatm[0-9][0-9]) 85249261Sdim echo "${dev} " 86249261Sdim ;; 87249261Sdim patm[0-9] | patm[0-9][0-9]) 88249261Sdim echo "${dev} " 89249261Sdim ;; 90249261Sdim *) 91249261Sdim continue 92249261Sdim ;; 93249261Sdim esac 94249261Sdim done` 95249261Sdim 96249261Sdim if [ -z "${atmdev}" ]; then 97249261Sdim echo 'No ATM adapters found' 98249261Sdim return 0 99249261Sdim fi 100249261Sdim 101249261Sdim # Load microcode into FORE adapters (if needed) 102249261Sdim if [ `expr "${atmdev}" : '.*hfa.*'` -ne 0 ]; then 103249261Sdim fore_dnld 104249261Sdim fi 105249261Sdim 106249261Sdim # Configure physical interfaces 107249261Sdim ilmid=0 108249261Sdim for phy in ${atmdev}; do 109249261Sdim echo -n "Configuring ATM device ${phy}:" 110249261Sdim 111249261Sdim # Define network interfaces 112249261Sdim eval netif_args=\$atm_netif_${phy} 113249261Sdim if [ -n "${netif_args}" ]; then 114249261Sdim atm set netif ${phy} ${netif_args} || continue 115249261Sdim else 116249261Sdim echo ' missing network interface definition' 117249261Sdim continue 118249261Sdim fi 119249261Sdim 120249261Sdim # Override physical MAC address 121249261Sdim eval macaddr_args=\$atm_macaddr_${phy} 122249261Sdim if [ -n "${macaddr_args}" ]; then 123249261Sdim case ${macaddr_args} in 124249261Sdim [Nn][Oo] | '') 125249261Sdim ;; 126249261Sdim *) 127249261Sdim atm set mac ${phy} ${macaddr_args} || continue 128249261Sdim ;; 129249261Sdim esac 130249261Sdim fi 131249261Sdim 132249261Sdim # Configure signalling manager 133249261Sdim eval sigmgr_args=\$atm_sigmgr_${phy} 134249261Sdim if [ -n "${sigmgr_args}" ]; then 135249261Sdim atm attach ${phy} ${sigmgr_args} || continue 136249261Sdim else 137249261Sdim echo ' missing signalling manager definition' 138249261Sdim continue 139249261Sdim fi 140249261Sdim 141249261Sdim # Configure UNI NSAP prefix 142249261Sdim eval prefix_args=\$atm_prefix_${phy} 143249261Sdim if [ `expr "${sigmgr_args}" : '[uU][nN][iI].*'` -ne 0 ]; then 144249261Sdim if [ -z "${prefix_args}" ]; then 145249261Sdim echo ' missing NSAP prefix for UNI interface' 146249261Sdim continue 147249261Sdim fi 148249261Sdim 149249261Sdim case ${prefix_args} in 150249261Sdim ILMI) 151249261Sdim ilmid=1 152249261Sdim ;; 153249261Sdim *) 154249261Sdim atm set prefix ${phy} ${prefix_args} || continue 155249261Sdim ;; 156249261Sdim esac 157249261Sdim fi 158249261Sdim 159249261Sdim atm_phy="${atm_phy} ${phy}" 160249261Sdim echo '.' 161249261Sdim done 162249261Sdim 163249261Sdim echo -n 'Starting initial ATM daemons:' 164249261Sdim # Start ILMI daemon (if needed) 165249261Sdim case ${ilmid} in 166249261Sdim 1) 167249261Sdim echo -n ' ilmid' 168249261Sdim ilmid 169249261Sdim ;; 170249261Sdim esac 171249261Sdim 172249261Sdim echo '.' 173249261Sdim} 174249261Sdim 175249261Sdimload_rc_config $name 176249261Sdimrun_rc_command "$1" 177249261Sdim