diff options
author | jow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2011-05-04 08:19:07 +0000 |
---|---|---|
committer | jow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2011-05-04 08:19:07 +0000 |
commit | 8359c4e323c66a7af0cad4785002d5830ff6f2a1 (patch) | |
tree | 9554e3199c2ea6b59a7680eadc6c1083c022ae80 | |
parent | f72d4a34322e17d45287eb440301b51ade5e61ca (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/Makefile | 2 | ||||
-rw-r--r-- | package/comgt/files/3g.usb | 39 |
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 |