atm1 revision 113676
190075Sobrien#!/bin/sh
2117395Skan#
3169689Skan# Copyright (c) 2000  The FreeBSD Project
4132718Skan# All rights reserved.
590075Sobrien#
6132718Skan# Redistribution and use in source and binary forms, with or without
790075Sobrien# modification, are permitted provided that the following conditions
8132718Skan# are met:
9132718Skan# 1. Redistributions of source code must retain the above copyright
10132718Skan#    notice, this list of conditions and the following disclaimer.
11132718Skan# 2. Redistributions in binary form must reproduce the above copyright
1290075Sobrien#    notice, this list of conditions and the following disclaimer in the
13132718Skan#    documentation and/or other materials provided with the distribution.
14132718Skan#
15132718Skan# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16132718Skan# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1790075Sobrien# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18132718Skan# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19132718Skan# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20169689Skan# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21169689Skan# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2290075Sobrien# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23132718Skan# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2490075Sobrien# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25132718Skan# SUCH DAMAGE.
26132718Skan#
2790075Sobrien# $FreeBSD: head/etc/rc.d/atm1 113676 2003-04-18 17:55:05Z mtm $
28132718Skan#
29132718Skan
3090075Sobrien# PROVIDE: atm1
31132718Skan# REQUIRE: root
32132718Skan# BEFORE: netif
33132718Skan# KEYWORD: FreeBSD
34132718Skan
35132718Skan. /etc/rc.subr
36132718Skan
37132718Skanname="atm"
38132718Skanrcvar="atm_enable"
39132718Skanstart_cmd="atm_start"
40132718Skanstop_cmd=":"
41132718Skan
42132718Skan# ATM networking startup script
43132718Skan#
44132718Skan# Initial interface configuration.
45132718Skan# N.B. /usr is not mounted.
46132718Skan#
47132718Skanatm_start()
48132718Skan{
49132718Skan	# Locate all probed ATM adapters
50132718Skan	atmdev=`atm sh stat int | while read dev junk; do
51132718Skan		case ${dev} in
52132718Skan		hea[0-9] | hea[0-9][0-9])
53169689Skan			echo "${dev} "
54169689Skan			;;
55169689Skan		hfa[0-9] | hfa[0-9][0-9])
56169689Skan			echo "${dev} "
57169689Skan			;;
58169689Skan		idt[0-9] | idt[0-9][0-9])
5990075Sobrien			echo "${dev} "
60169689Skan			;;
61169689Skan		*)
62169689Skan			continue
63169689Skan			;;
64169689Skan		esac
65146895Skan	done`
66146895Skan
67146895Skan	if [ -z "${atmdev}" ]; then
68146895Skan		echo 'No ATM adapters found'
69146895Skan		return 0
7090075Sobrien	fi
71132718Skan
72169689Skan	# Load microcode into FORE adapters (if needed)
73132718Skan	if [ `expr "${atmdev}" : '.*hfa.*'` -ne 0 ]; then
74132718Skan		fore_dnld
75132718Skan	fi
76132718Skan
77132718Skan	# Configure physical interfaces
78132718Skan	ilmid=0
79132718Skan	for phy in ${atmdev}; do
80132718Skan		echo -n "Configuring ATM device ${phy}:"
81169689Skan
82132718Skan		# Define network interfaces
83132718Skan		eval netif_args=\$atm_netif_${phy}
84132718Skan		if [ -n "${netif_args}" ]; then
85132718Skan			atm set netif ${phy} ${netif_args} || continue
86132718Skan		else
87132718Skan			echo ' missing network interface definition'
88132718Skan			continue
89132718Skan		fi
90169689Skan
91132718Skan		# Override physical MAC address
92132718Skan		eval macaddr_args=\$atm_macaddr_${phy}
93132718Skan		if [ -n "${macaddr_args}" ]; then
94132718Skan			case ${macaddr_args} in
95132718Skan			[Nn][Oo] | '')
96132718Skan				;;
97132718Skan			*)
98132718Skan				atm set mac ${phy} ${macaddr_args} || continue
99132718Skan				;;
100132718Skan			esac
101132718Skan		fi
102132718Skan
103132718Skan		# Configure signalling manager
104132718Skan		eval sigmgr_args=\$atm_sigmgr_${phy}
105132718Skan		if [ -n "${sigmgr_args}" ]; then
106169689Skan			atm attach ${phy} ${sigmgr_args} || continue
107132718Skan		else
108132718Skan			echo ' missing signalling manager definition'
109132718Skan			continue
110132718Skan		fi
111132718Skan
112132718Skan		# Configure UNI NSAP prefix
113132718Skan		eval prefix_args=\$atm_prefix_${phy}
114132718Skan		if [ `expr "${sigmgr_args}" : '[uU][nN][iI].*'` -ne 0 ]; then
115132718Skan			if [ -z "${prefix_args}" ]; then
116132718Skan				echo ' missing NSAP prefix for UNI interface'
117132718Skan				continue
118132718Skan			fi
119132718Skan
120132718Skan			case ${prefix_args} in
121132718Skan			ILMI)
122132718Skan				ilmid=1
123132718Skan				;;
124132718Skan			*)
125132718Skan				atm set prefix ${phy} ${prefix_args} || continue
126132718Skan				;;
127132718Skan			esac
128132718Skan		fi
129132718Skan
130132718Skan		atm_phy="${atm_phy} ${phy}"
131132718Skan		echo '.'
132132718Skan	done
133132718Skan
134132718Skan	echo -n 'Starting initial ATM daemons:'
135103445Skan	# Start ILMI daemon (if needed)
136132718Skan	case ${ilmid} in
137103445Skan	1)
138132718Skan		echo -n ' ilmid'
139132718Skan		ilmid
140169689Skan		;;
141132718Skan	esac
142132718Skan
143132718Skan	echo '.'
144132718Skan}
145169689Skan
146132718Skanload_rc_config $name
147132718Skanrun_rc_command "$1"
148132718Skan