3d122270e9b81e5a0950ceca3c7f72806cca806b
[openwrt/openwrt.git] / package / network / utils / linux-atm / files / br2684ctl
1 #!/bin/sh /etc/rc.common
2
3 START=50
4 USE_PROCD=1
5
6 start_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 \
62 -c "$unit" -e "$encaps" -p "$payload" \
63 -a "$circuit" ${qos:+-q "$qos"} ${sendsize:+-s "$sendsize"}
64 procd_close_instance
65 }
66
67 service_running() {
68 . /lib/functions/network.sh
69
70 sleep 1
71 for path in /sys/class/net/nas*; do
72 dev="${path##*/}"
73 network_ready_device "$dev"
74 done
75 }
76
77 service_triggers() {
78 local script=$(readlink "$initscript")
79 local name=$(basename ${script:-$initscript})
80
81 procd_open_trigger
82 procd_add_raw_trigger hotplug.atm 2000 /etc/init.d/$name reload
83 procd_add_config_trigger "config.change" "network" /etc/init.d/$name reload
84 procd_close_trigger
85 }
86
87 start_service() {
88 config_load network
89 config_foreach start_daemon atm-bridge
90 }