summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73>2011-05-04 08:19:07 +0000
committerjow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73>2011-05-04 08:19:07 +0000
commit8359c4e323c66a7af0cad4785002d5830ff6f2a1 (patch)
tree9554e3199c2ea6b59a7680eadc6c1083c022ae80
parentf72d4a34322e17d45287eb440301b51ade5e61ca (diff)
[package] comgt: add tty hotplug remove handling, only iterate each tty once (#9211)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@26816 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rw-r--r--package/comgt/Makefile2
-rw-r--r--package/comgt/files/3g.usb39
2 files changed, 20 insertions, 21 deletions
diff --git a/package/comgt/Makefile b/package/comgt/Makefile
index 49cc08bbf1..00c1118113 100644
--- a/package/comgt/Makefile
+++ b/package/comgt/Makefile
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=comgt
PKG_VERSION:=0.32
-PKG_RELEASE:=8
+PKG_RELEASE:=9
PKG_SOURCE:=$(PKG_NAME).$(PKG_VERSION).tgz
PKG_SOURCE_URL:=@SF/comgt
diff --git a/package/comgt/files/3g.usb b/package/comgt/files/3g.usb
index 590cad4177..ba6c646177 100644
--- a/package/comgt/files/3g.usb
+++ b/package/comgt/files/3g.usb
@@ -12,32 +12,31 @@ find_3g_iface() {
local proto
config_get proto "$cfg" proto
+ [ "$proto" = 3g ] || return 0
- [ "$proto" = 3g ] && {
- local auto
- config_get_bool auto "$cfg" auto 1
- [ "$auto" = 1 ] || return 0
+ local auto
+ config_get_bool auto "$cfg" auto 1
+ [ "$auto" = 1 ] || [ "$ACTION" = remove ] || return 0
- local dev
- config_get dev "$cfg" device
+ local dev
+ config_get dev "$cfg" device
- if [ "${dev##*/}" = "${tty##*/}" ] && [ -z "$(ls /var/lock | grep ${dev##*/})" ]; then
+ if [ "${dev##*/}" = "${tty##*/}" ]; then
+ if [ "$ACTION" = add ]; then
log "Starting interface $cfg for device ${dev##*/}"
( sleep 1; /sbin/ifup "$cfg" ) &
+ else
+ log "Stopping interface $cfg for device ${dev##*/}"
+ /sbin/ifdown "$cfg" &
fi
- }
+ fi
}
+case "$DEVICENAME" in
+ tty*)
+ [ -e "/dev/$DEVICENAME" ] || [ "$ACTION" = remove ] || exit 0
+ config_load network
+ config_foreach find_3g_iface interface "/dev/$DEVICENAME"
+ ;;
+esac
-if [ "$ACTION" = add ]; then
- case "$DEVICENAME" in
- tty*) config_load network;;
- *) exit 0;;
- esac
-
- local tty
- for tty in /dev/ttyUSB* /dev/ttyACM* /dev/ttyHS*; do
- [ -e "$tty" ] || continue
- config_foreach find_3g_iface interface "$tty"
- done
-fi