atm2 revision 66830
1284990Scy#!/bin/sh 2284990Scy# 3284990Scy# Copyright (c) 2000 The FreeBSD Project 4284990Scy# All rights reserved. 5284990Scy# 6284990Scy# Redistribution and use in source and binary forms, with or without 7284990Scy# modification, are permitted provided that the following conditions 8284990Scy# are met: 9284990Scy# 1. Redistributions of source code must retain the above copyright 10284990Scy# notice, this list of conditions and the following disclaimer. 11284990Scy# 2. Redistributions in binary form must reproduce the above copyright 12284990Scy# notice, this list of conditions and the following disclaimer in the 13284990Scy# documentation and/or other materials provided with the distribution. 14284990Scy# 15284990Scy# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16284990Scy# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17284990Scy# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18284990Scy# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19284990Scy# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20284990Scy# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21284990Scy# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22284990Scy# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23284990Scy# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24284990Scy# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25284990Scy# SUCH DAMAGE. 26284990Scy# 27284990Scy# $FreeBSD: head/etc/rc.d/atm2 66830 2000-10-08 19:20:36Z obrien $ 28284990Scy# 29284990Scy 30284990Scy# 31284990Scy# ATM networking startup script 32284990Scy# 33284990Scy# Initial interface configuration. 34284990Scy# N.B. /usr is not mounted. 35284990Scy# 36284990Scyatm_pass1() { 37284990Scy # Locate all probed ATM adapters 38284990Scy atmdev=`atm sh stat int | while read dev junk; do 39284990Scy case ${dev} in 40284990Scy hea[0-9] | hea[0-9][0-9]) 41284990Scy echo "${dev} " 42284990Scy ;; 43284990Scy hfa[0-9] | hfa[0-9][0-9]) 44284990Scy echo "${dev} " 45284990Scy ;; 46284990Scy *) 47284990Scy continue 48284990Scy ;; 49284990Scy esac 50284990Scy done` 51284990Scy 52284990Scy if [ -z "${atmdev}" ]; then 53284990Scy echo "No ATM adapters found." 54284990Scy return 0 55284990Scy fi 56284990Scy 57284990Scy # Load microcode into FORE adapters (if needed) 58284990Scy if [ `expr "${atmdev}" : '.*hfa.*'` -ne 0 ]; then 59284990Scy fore_dnld 60284990Scy fi 61284990Scy 62284990Scy # Configure physical interfaces 63284990Scy ilmid=0 64284990Scy for phy in ${atmdev}; do 65284990Scy echo -n "Configuring ATM device ${phy}:" 66284990Scy 67284990Scy # Define network interfaces 68284990Scy eval netif_args=\$atm_netif_${phy} 69284990Scy if [ -n "${netif_args}" ]; then 70284990Scy atm set netif ${phy} ${netif_args} || continue 71284990Scy else 72284990Scy echo "missing network interface definition" 73284990Scy continue 74284990Scy fi 75284990Scy 76284990Scy # Override physical MAC address 77284990Scy eval macaddr_args=\$atm_macaddr_${phy} 78284990Scy if [ -n "${macaddr_args}" ]; then 79284990Scy case ${macaddr_args} in 80284990Scy [Nn][Oo] | '') 81284990Scy ;; 82284990Scy *) 83284990Scy atm set mac ${phy} ${macaddr_args} || continue 84284990Scy ;; 85284990Scy esac 86284990Scy fi 87284990Scy 88284990Scy # Configure signalling manager 89284990Scy eval sigmgr_args=\$atm_sigmgr_${phy} 90284990Scy if [ -n "${sigmgr_args}" ]; then 91284990Scy atm attach ${phy} ${sigmgr_args} || continue 92284990Scy else 93284990Scy echo "missing signalling manager definition" 94284990Scy continue 95284990Scy fi 96284990Scy 97284990Scy # Configure UNI NSAP prefix 98284990Scy eval prefix_args=\$atm_prefix_${phy} 99284990Scy if [ `expr "${sigmgr_args}" : '[uU][nN][iI].*'` -ne 0 ]; then 100284990Scy if [ -z "${prefix_args}" ]; then 101284990Scy echo "missing NSAP prefix for UNI interface" 102284990Scy continue 103284990Scy fi 104284990Scy 105284990Scy case ${prefix_args} in 106284990Scy ILMI) 107284990Scy ilmid=1 108284990Scy ;; 109284990Scy *) 110284990Scy atm set prefix ${phy} ${prefix_args} || continue 111284990Scy ;; 112284990Scy esac 113284990Scy fi 114284990Scy 115284990Scy atm_phy="${atm_phy} ${phy}" 116284990Scy echo "." 117284990Scy done 118284990Scy 119284990Scy echo -n "Starting initial ATM daemons:" 120284990Scy # Start ILMI daemon (if needed) 121284990Scy case ${ilmid} in 122284990Scy 1) 123284990Scy echo -n " ilmid" 124284990Scy ilmid 125284990Scy ;; 126284990Scy esac 127284990Scy 128284990Scy echo "." 129284990Scy atm_pass1_done=YES 130284990Scy} 131284990Scy 132284990Scy# 133284990Scy# Finish up configuration. 134284990Scy# N.B. /usr is not mounted. 135284990Scy# 136284990Scyatm_pass2() { 137284990Scy echo -n "Configuring ATM network interfaces:" 138284990Scy 139284990Scy atm_scspd=0 140284990Scy atm_atmarpd="" 141284990Scy 142284990Scy # Configure network interfaces 143284990Scy for phy in ${atm_phy}; do 144284990Scy eval netif_args=\$atm_netif_${phy} 145284990Scy set -- ${netif_args} 146284990Scy netname=$1 147284990Scy netcnt=$2 148284990Scy netindx=0 149284990Scy while [ ${netindx} -lt ${netcnt} ]; do 150284990Scy net="${netname}${netindx}" 151284990Scy netindx=`expr ${netindx} + 1` 152284990Scy echo -n " ${net}" 153284990Scy 154284990Scy # Configure atmarp server 155284990Scy eval atmarp_args=\$atm_arpserver_${net} 156284990Scy if [ -n "${atmarp_args}" ]; then 157284990Scy atm set arpserver ${net} ${atmarp_args} || 158284990Scy continue 159284990Scy fi 160284990Scy eval scsparp_args=\$atm_scsparp_${net} 161284990Scy 162284990Scy case ${scsparp_args} in 163284990Scy [Yy][Ee][Ss]) 164284990Scy case ${atmarp_args} in 165284990Scy local) 166284990Scy ;; 167284990Scy *) 168284990Scy echo "local arpserver required for SCSP" 169284990Scy continue 170284990Scy ;; 171284990Scy esac 172284990Scy 173284990Scy atm_atmarpd="${atm_atmarpd} ${net}" 174284990Scy atm_scspd=1 175284990Scy esac 176284990Scy done 177284990Scy done 178284990Scy echo "." 179284990Scy 180284990Scy # Define any PVCs. 181284990Scy if [ -n "${atm_pvcs}" ]; then 182284990Scy for i in ${atm_pvcs}; do 183284990Scy eval pvc_args=\$atm_pvc_${i} 184284990Scy atm add pvc ${pvc_args} 185284990Scy done 186284990Scy fi 187284990Scy 188284990Scy # Define any permanent ARP entries. 189284990Scy if [ -n "${atm_arps}" ]; then 190284990Scy for i in ${atm_arps}; do 191284990Scy eval arp_args=\$atm_arp_${i} 192284990Scy atm add arp ${arp_args} 193284990Scy done 194284990Scy fi 195284990Scy atm_pass2_done=YES 196284990Scy} 197284990Scy 198284990Scy# 199284990Scy# Start any necessary daemons. 200284990Scy# 201284990Scyatm_pass3() { 202284990Scy # Start SCSP daemon (if needed) 203284990Scy case ${atm_scspd} in 204284990Scy 1) 205284990Scy echo -n " scspd" 206284990Scy scspd 207284990Scy ;; 208284990Scy esac 209284990Scy 210284990Scy # Start ATMARP daemon (if needed) 211284990Scy if [ -n "${atm_atmarpd}" ]; then 212284990Scy echo -n " atmarpd" 213284990Scy atmarpd ${atm_atmarpd} 214284990Scy fi 215284990Scy 216284990Scy atm_pass3_done=YES 217284990Scy} 218284990Scy