]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - etc/rc.d/atm1
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / etc / rc.d / atm1
1 #!/bin/sh
2 #
3 # Copyright (c) 2000  The FreeBSD Project
4 # All rights reserved.
5 #
6 # Redistribution and use in source and binary forms, with or without
7 # modification, are permitted provided that the following conditions
8 # are met:
9 # 1. Redistributions of source code must retain the above copyright
10 #    notice, this list of conditions and the following disclaimer.
11 # 2. Redistributions in binary form must reproduce the above copyright
12 #    notice, this list of conditions and the following disclaimer in the
13 #    documentation and/or other materials provided with the distribution.
14 #
15 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 # ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19 # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21 # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25 # SUCH DAMAGE.
26 #
27 # $FreeBSD$
28 #
29
30 # PROVIDE: atm1
31 # REQUIRE: root
32 # BEFORE: netif
33 # KEYWORD: nojail
34
35 . /etc/rc.subr
36
37 name="atm"
38 rcvar="atm_enable"
39 start_cmd="atm_start"
40 stop_cmd=":"
41
42 # ATM networking startup script
43 #
44 # Initial interface configuration.
45 # N.B. /usr is not mounted.
46 #
47 atm_start()
48 {
49         if [ -n "${natm_interfaces}" ] ; then
50                 # Load the HARP pseudo interface
51                 load_kld if_harp || return 1
52
53                 # Load all the NATM drivers that we need
54                 for natm in ${natm_interfaces} ; do
55                         ifconfig ${natm} up
56                 done
57         fi
58
59         # Load loadable HARP drivers
60         for dev in ${atm_load} ; do
61                 load_kld ${dev} || return 1
62         done
63
64         # Locate all probed ATM adapters
65         atmdev=`atm sh stat int | while read dev junk; do
66                 case ${dev} in
67                 hea[0-9] | hea[0-9][0-9])
68                         echo "${dev} "
69                         ;;
70                 hfa[0-9] | hfa[0-9][0-9])
71                         echo "${dev} "
72                         ;;
73                 idt[0-9] | idt[0-9][0-9])
74                         echo "${dev} "
75                         ;;
76
77                 # NATM interfaces per pseudo driver
78                 en[0-9] | en[0-9][0-9])
79                         echo "${dev} "
80                         ;;
81                 fatm[0-9] | fatm[0-9][0-9])
82                         echo "${dev} "
83                         ;;
84                 hatm[0-9] | hatm[0-9][0-9])
85                         echo "${dev} "
86                         ;;
87                 patm[0-9] | patm[0-9][0-9])
88                         echo "${dev} "
89                         ;;
90                 *)
91                         continue
92                         ;;
93                 esac
94         done`
95
96         if [ -z "${atmdev}" ]; then
97                 echo 'No ATM adapters found'
98                 return 0
99         fi
100
101         # Load microcode into FORE adapters (if needed)
102         if [ `expr "${atmdev}" : '.*hfa.*'` -ne 0 ]; then
103                 fore_dnld
104         fi
105
106         # Configure physical interfaces
107         ilmid=0
108         for phy in ${atmdev}; do
109                 echo -n "Configuring ATM device ${phy}:"
110
111                 # Define network interfaces
112                 eval netif_args=\$atm_netif_${phy}
113                 if [ -n "${netif_args}" ]; then
114                         atm set netif ${phy} ${netif_args} || continue
115                 else
116                         echo ' missing network interface definition'
117                         continue
118                 fi
119
120                 # Override physical MAC address
121                 eval macaddr_args=\$atm_macaddr_${phy}
122                 if [ -n "${macaddr_args}" ]; then
123                         case ${macaddr_args} in
124                         [Nn][Oo] | '')
125                                 ;;
126                         *)
127                                 atm set mac ${phy} ${macaddr_args} || continue
128                                 ;;
129                         esac
130                 fi
131
132                 # Configure signalling manager
133                 eval sigmgr_args=\$atm_sigmgr_${phy}
134                 if [ -n "${sigmgr_args}" ]; then
135                         atm attach ${phy} ${sigmgr_args} || continue
136                 else
137                         echo ' missing signalling manager definition'
138                         continue
139                 fi
140
141                 # Configure UNI NSAP prefix
142                 eval prefix_args=\$atm_prefix_${phy}
143                 if [ `expr "${sigmgr_args}" : '[uU][nN][iI].*'` -ne 0 ]; then
144                         if [ -z "${prefix_args}" ]; then
145                                 echo ' missing NSAP prefix for UNI interface'
146                                 continue
147                         fi
148
149                         case ${prefix_args} in
150                         ILMI)
151                                 ilmid=1
152                                 ;;
153                         *)
154                                 atm set prefix ${phy} ${prefix_args} || continue
155                                 ;;
156                         esac
157                 fi
158
159                 atm_phy="${atm_phy} ${phy}"
160                 echo '.'
161         done
162
163         echo -n 'Starting initial ATM daemons:'
164         # Start ILMI daemon (if needed)
165         case ${ilmid} in
166         1)
167                 echo -n ' ilmid'
168                 ilmid
169                 ;;
170         esac
171
172         echo '.'
173 }
174
175 load_rc_config $name
176 run_rc_command "$1"