add trelay, a trivial ethernet relay which allows pseudo-bridging ad-hoc or client...
[openwrt/staging/yousong.git] / package / trelay / files / trelay.init
diff --git a/package/trelay/files/trelay.init b/package/trelay/files/trelay.init
new file mode 100644 (file)
index 0000000..c812e12
--- /dev/null
@@ -0,0 +1,32 @@
+#!/bin/sh /etc/rc.common
+START=80
+
+check_relay() {
+       local cfg="$1"
+
+       config_get_bool enabled "$cfg" enabled 1
+       [ "$enabled" -gt 0 ] || return
+
+       config_get dev1 "$cfg" dev1
+       config_get dev2 "$cfg" dev2
+
+       [ -d "/sys/kernel/debug/trelay/${dev1}-${dev2}" ] && return
+       [ -d "/sys/class/net/${dev1}" -a -d "/sys/class/net/${dev2}" ] || return
+
+       ifconfig "$dev1" up
+       ifconfig "$dev2" up
+       echo "${dev1}-${dev2},${dev1},${dev2}" > /sys/kernel/debug/trelay/add
+}
+
+start() {
+       config_load trelay
+       config_foreach check_relay trelay
+       touch /var/run/trelay.active
+}
+
+stop() {
+       rm -f /var/run/trelay.active
+       for relay in /sys/kernel/debug/trelay/*; do
+               [ -d "$relay" ] && echo > "$relay/remove"
+       done
+}