atm2 revision 50472
140006Sphk#!/bin/sh 240006Sphk# 340006Sphk 440006Sphk# ATM networking startup script 540006Sphk# 650472Speter# $FreeBSD: head/etc/rc.d/atm2 50472 1999-08-27 23:37:10Z peter $ 740006Sphk 840006Sphk# 940006Sphk# Initial interface configuration. 1040006Sphk# N.B. /usr is not mounted. 1140006Sphk# 1240006Sphkatm_pass1() { 1340056Sphk # Locate all probed ATM adapters 1440056Sphk atmdev=`atm sh stat int | while read dev junk; do 1540006Sphk case ${dev} in 1640006Sphk hea[0-9]|hea[0-9][0-9]) 1740006Sphk echo "${dev} " 1840006Sphk ;; 1940006Sphk hfa[0-9]|hfa[0-9][0-9]) 2040006Sphk echo "${dev} " 2140006Sphk ;; 2240006Sphk *) 2340006Sphk continue 2440006Sphk ;; 2540006Sphk esac 2640006Sphk done` 2740006Sphk 2840006Sphk if [ -z "${atmdev}" ]; then 2940006Sphk echo "No ATM adapters found." 3040006Sphk return 0 3140006Sphk fi 3240006Sphk 3340006Sphk # Load microcode into FORE adapters (if needed) 3440006Sphk if [ `expr "${atmdev}" : '.*hfa.*'` -ne 0 ]; then 3540006Sphk fore_dnld -d /etc 3640006Sphk fi 3740006Sphk 3840006Sphk # Configure physical interfaces 3940006Sphk ilmid=0 4040006Sphk for phy in ${atmdev}; do 4140006Sphk echo -n "Configuring ATM device ${phy}:" 4240006Sphk 4340006Sphk # Define network interfaces 4440006Sphk eval netif_args=\$atm_netif_${phy} 4540006Sphk if [ -n "${netif_args}" ]; then 4640006Sphk atm set netif ${phy} ${netif_args} || continue 4740006Sphk else 4840006Sphk echo "missing network interface definition" 4940006Sphk continue 5040006Sphk fi 5140006Sphk 5240006Sphk # Override physical MAC address 5340006Sphk eval macaddr_args=\$atm_macaddr_${phy} 5440006Sphk if [ -n "${macaddr_args}" -a "${macaddr_args}" != "NO" ]; then 5540006Sphk atm set mac ${phy} ${macaddr_args} || continue 5640006Sphk fi 5740006Sphk 5840006Sphk # Configure signalling manager 5940006Sphk eval sigmgr_args=\$atm_sigmgr_${phy} 6040006Sphk if [ -n "${sigmgr_args}" ]; then 6140006Sphk atm attach ${phy} ${sigmgr_args} || continue 6240006Sphk else 6340006Sphk echo "missing signalling manager definition" 6440006Sphk continue 6540006Sphk fi 6640006Sphk 6740006Sphk # Configure UNI NSAP prefix 6840006Sphk eval prefix_args=\$atm_prefix_${phy} 6940006Sphk if [ `expr "${sigmgr_args}" : '[uU][nN][iI].*'` -ne 0 ]; then 7040006Sphk if [ -z "${prefix_args}" ]; then 7140006Sphk echo "missing NSAP prefix for UNI interface" 7240006Sphk continue 7340006Sphk fi 7440006Sphk if [ "${prefix_args}" = "ILMI" ]; then 7540006Sphk ilmid=1 7640006Sphk else 7740006Sphk atm set prefix ${phy} ${prefix_args} || continue 7840006Sphk fi 7940006Sphk fi 8040006Sphk 8140006Sphk atm_phy="${atm_phy} ${phy}" 8240006Sphk echo "." 8340006Sphk done 8440006Sphk 8540006Sphk echo -n "Starting initial ATM daemons:" 8640006Sphk # Start ILMI daemon (if needed) 8740006Sphk if [ ${ilmid} -eq 1 ]; then 8840006Sphk echo -n " ilmid" 8940006Sphk ilmid 9040006Sphk fi 9140006Sphk 9240006Sphk echo "." 9340006Sphk atm_pass1_done=YES 9440006Sphk} 9540006Sphk 9640006Sphk# 9740006Sphk# Finish up configuration. 9840006Sphk# N.B. /usr is not mounted. 9940006Sphk# 10040006Sphkatm_pass2() { 10140006Sphk echo -n "Configuring ATM network interfaces:" 10240006Sphk 10340006Sphk atm_scspd=0 10440006Sphk atm_atmarpd="" 10540006Sphk 10640006Sphk # Configure network interfaces 10740006Sphk for phy in ${atm_phy}; do 10840006Sphk eval netif_args=\$atm_netif_${phy} 10940006Sphk set -- ${netif_args} 11040006Sphk netname=$1 11140006Sphk netcnt=$2 11240006Sphk netindx=0 11340006Sphk while [ ${netindx} -lt ${netcnt} ]; do 11440006Sphk 11540006Sphk net="${netname}${netindx}" 11640006Sphk netindx=`expr ${netindx} + 1` 11740006Sphk echo -n " ${net}" 11840006Sphk 11940006Sphk # Configure atmarp server 12040006Sphk eval atmarp_args=\$atm_arpserver_${net} 12140006Sphk if [ -n "${atmarp_args}" ]; then 12240006Sphk atm set arpserver ${net} ${atmarp_args} || continue 12340006Sphk fi 12440006Sphk eval scsparp_args=\$atm_scsparp_${net} 12550357Ssheldonh if [ "${scsparp_args}" = "YES" ]; then 12640006Sphk if [ "${atmarp_args}" != "local" ]; then 12740006Sphk echo "local arpserver required for SCSP" 12840006Sphk continue 12940006Sphk fi 13040006Sphk atm_atmarpd="${atm_atmarpd} ${net}" 13140006Sphk atm_scspd=1 13240006Sphk fi 13340006Sphk done 13440006Sphk done 13540006Sphk echo "." 13640006Sphk 13740006Sphk # Define any PVCs. 13850357Ssheldonh if [ -n "${atm_pvcs}" ]; then 13940006Sphk for i in ${atm_pvcs}; do 14040006Sphk eval pvc_args=\$atm_pvc_${i} 14140006Sphk atm add pvc ${pvc_args} 14240006Sphk done 14340006Sphk fi 14440006Sphk 14540006Sphk # Define any permanent ARP entries. 14650357Ssheldonh if [ -n "${atm_arps}" ]; then 14740006Sphk for i in ${atm_arps}; do 14840006Sphk eval arp_args=\$atm_arp_${i} 14940006Sphk atm add arp ${arp_args} 15040006Sphk done 15140006Sphk fi 15240006Sphk atm_pass2_done=YES 15340006Sphk} 15440006Sphk 15540006Sphk# 15640006Sphk# Start any necessary daemons. 15740006Sphk# 15840006Sphkatm_pass3() { 15940006Sphk # Start SCSP daemon (if needed) 16050357Ssheldonh if [ "${atm_scspd}" -eq 1 ]; then 16140006Sphk echo -n " scspd" 16240006Sphk scspd 16340006Sphk fi 16440006Sphk 16540006Sphk # Start ATMARP daemon (if needed) 16640006Sphk if [ -n "${atm_atmarpd}" ]; then 16740006Sphk echo -n " atmarpd" 16840006Sphk atmarpd ${atm_atmarpd} 16940006Sphk fi 17040006Sphk 17140006Sphk atm_pass3_done=YES 17240006Sphk} 173