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