atm1 revision 57230
1#!/bin/sh 2# 3 4# ATM networking startup script 5# 6# $FreeBSD: head/etc/rc.d/atm1 57230 2000-02-15 13:21:43Z phk $ 7 8# 9# Initial interface configuration. 10# N.B. /usr is not mounted. 11# 12atm_pass1() { 13 # Locate all probed ATM adapters 14 atmdev=`atm sh stat int | while read dev junk; do 15 case ${dev} in 16 hea[0-9] | hea[0-9][0-9]) 17 echo "${dev} " 18 ;; 19 hfa[0-9] | hfa[0-9][0-9]) 20 echo "${dev} " 21 ;; 22 *) 23 continue 24 ;; 25 esac 26 done` 27 28 if [ -z "${atmdev}" ]; then 29 echo "No ATM adapters found." 30 return 0 31 fi 32 33 # Load microcode into FORE adapters (if needed) 34 if [ `expr "${atmdev}" : '.*hfa.*'` -ne 0 ]; then 35 fore_dnld 36 fi 37 38 # Configure physical interfaces 39 ilmid=0 40 for phy in ${atmdev}; do 41 echo -n "Configuring ATM device ${phy}:" 42 43 # Define network interfaces 44 eval netif_args=\$atm_netif_${phy} 45 if [ -n "${netif_args}" ]; then 46 atm set netif ${phy} ${netif_args} || continue 47 else 48 echo "missing network interface definition" 49 continue 50 fi 51 52 # Override physical MAC address 53 eval macaddr_args=\$atm_macaddr_${phy} 54 if [ -n "${macaddr_args}" ]; then 55 case ${macaddr_args} in 56 [Nn][Oo] | '') 57 ;; 58 *) 59 atm set mac ${phy} ${macaddr_args} || continue 60 ;; 61 esac 62 fi 63 64 # Configure signalling manager 65 eval sigmgr_args=\$atm_sigmgr_${phy} 66 if [ -n "${sigmgr_args}" ]; then 67 atm attach ${phy} ${sigmgr_args} || continue 68 else 69 echo "missing signalling manager definition" 70 continue 71 fi 72 73 # Configure UNI NSAP prefix 74 eval prefix_args=\$atm_prefix_${phy} 75 if [ `expr "${sigmgr_args}" : '[uU][nN][iI].*'` -ne 0 ]; then 76 if [ -z "${prefix_args}" ]; then 77 echo "missing NSAP prefix for UNI interface" 78 continue 79 fi 80 81 case ${prefix_args} in 82 ILMI) 83 ilmid=1 84 ;; 85 *) 86 atm set prefix ${phy} ${prefix_args} || continue 87 ;; 88 esac 89 fi 90 91 atm_phy="${atm_phy} ${phy}" 92 echo "." 93 done 94 95 echo -n "Starting initial ATM daemons:" 96 # Start ILMI daemon (if needed) 97 case ${ilmid} in 98 1) 99 echo -n " ilmid" 100 ilmid 101 ;; 102 esac 103 104 echo "." 105 atm_pass1_done=YES 106} 107 108# 109# Finish up configuration. 110# N.B. /usr is not mounted. 111# 112atm_pass2() { 113 echo -n "Configuring ATM network interfaces:" 114 115 atm_scspd=0 116 atm_atmarpd="" 117 118 # Configure network interfaces 119 for phy in ${atm_phy}; do 120 eval netif_args=\$atm_netif_${phy} 121 set -- ${netif_args} 122 netname=$1 123 netcnt=$2 124 netindx=0 125 while [ ${netindx} -lt ${netcnt} ]; do 126 net="${netname}${netindx}" 127 netindx=`expr ${netindx} + 1` 128 echo -n " ${net}" 129 130 # Configure atmarp server 131 eval atmarp_args=\$atm_arpserver_${net} 132 if [ -n "${atmarp_args}" ]; then 133 atm set arpserver ${net} ${atmarp_args} || 134 continue 135 fi 136 eval scsparp_args=\$atm_scsparp_${net} 137 138 case ${scsparp_args} in 139 [Yy][Ee][Ss]) 140 case ${atmarp_args} in 141 local) 142 ;; 143 *) 144 echo "local arpserver required for SCSP" 145 continue 146 ;; 147 esac 148 149 atm_atmarpd="${atm_atmarpd} ${net}" 150 atm_scspd=1 151 esac 152 done 153 done 154 echo "." 155 156 # Define any PVCs. 157 if [ -n "${atm_pvcs}" ]; then 158 for i in ${atm_pvcs}; do 159 eval pvc_args=\$atm_pvc_${i} 160 atm add pvc ${pvc_args} 161 done 162 fi 163 164 # Define any permanent ARP entries. 165 if [ -n "${atm_arps}" ]; then 166 for i in ${atm_arps}; do 167 eval arp_args=\$atm_arp_${i} 168 atm add arp ${arp_args} 169 done 170 fi 171 atm_pass2_done=YES 172} 173 174# 175# Start any necessary daemons. 176# 177atm_pass3() { 178 # Start SCSP daemon (if needed) 179 case ${atm_scspd} in 180 1) 181 echo -n " scspd" 182 scspd 183 ;; 184 esac 185 186 # Start ATMARP daemon (if needed) 187 if [ -n "${atm_atmarpd}" ]; then 188 echo -n " atmarpd" 189 atmarpd ${atm_atmarpd} 190 fi 191 192 atm_pass3_done=YES 193} 194