Browse Source

comgt: add tty hotplug remove handling, only iterate each tty once (#9211)

SVN-Revision: 26816
Jo-Philipp Wich 14 years ago
parent
commit
9736cfef66
2 changed files with 20 additions and 21 deletions
  1. 1 1
      package/comgt/Makefile
  2. 19 20
      package/comgt/files/3g.usb

+ 1 - 1
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

+ 19 - 20
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