1#!/bin/sh /etc/rc.common
2
3START=50
4USE_PROCD=1
5
6start_daemon() {
7	local cfg="$1"
8
9	local atmdev disabled
10
11	config_get_bool disabled "$cfg" disabled 0
12	[ "$disabled" -eq 1 ] && return
13
14	config_get atmdev "$cfg" atmdev 0
15
16	local unit
17	config_get unit "$cfg" unit 0
18
19	local vpi
20	config_get vpi "$cfg" vpi 8
21
22	local vci
23	config_get vci "$cfg" vci 35
24
25	local encaps
26	config_get encaps "$cfg" encaps
27
28	case "$encaps" in
29		1|vc) encaps=1;;
30		*) encaps=0;;
31	esac
32
33	local payload
34	config_get payload "$cfg" payload
35
36	case "$payload" in
37		0|routed) payload=0;;
38		*) payload=1;;
39	esac
40
41	local qos
42	config_get qos "$cfg" qos
43
44	local sendsize
45	config_get sendsize "$cfg" sendsize
46
47	found=
48	for device in /sys/class/atm/*; do
49		[ -d "$device" ] || break
50		[ "$(cat $device/atmindex)" = "$atmdev" ] || continue
51		found=1
52		break
53	done
54
55	[ -n "$found" ] || return
56
57	local circuit="$atmdev.$vpi.$vci"
58
59	procd_open_instance
60	procd_set_param command \
61		/usr/sbin/br2684ctl_wrap "nas$unit" \
62		-c "$unit" -e "$encaps" -p "$payload" \
63		-a "$circuit" ${qos:+-q "$qos"} ${sendsize:+-s "$sendsize"} \
64		-S /lib/netifd/br2684-up
65	procd_close_instance
66}
67
68service_triggers() {
69	local script=$(readlink "$initscript")
70	local name=$(basename ${script:-$initscript})
71
72	procd_open_trigger
73	procd_add_raw_trigger hotplug.atm 2000 /etc/init.d/$name reload
74	procd_add_config_trigger "config.change" "network" /etc/init.d/$name reload
75	procd_close_trigger
76}
77
78start_service() {
79	config_load network
80	config_foreach start_daemon atm-bridge
81}
82