[backfire] merge r26809, r26810 and r26816
[openwrt-10.03/.git] / package / comgt / files / 3g.usb
index d5a38b8a4ccfdd38723bd89c3cb1c194f0414626..ba6c64617786a9b7a99a80ee97c72c86a965f1c5 100644 (file)
@@ -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##*/}" ]; then
-                       log "Starting interface $cfg for device ${tty##*/}"
+       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
-               *-*:*.*) config_load network;;
-               *) exit 0;;
-       esac
-
-       local tty
-       for tty in /sys/$DEVPATH/ttyUSB* /sys/$DEVPATH/tty/ttyACM* /sys/$DEVPATH/tty/ttyHS*; do
-               [ -d "$tty" ] || continue
-               config_foreach find_3g_iface interface "$tty"
-       done
-fi