From eccba67e0a96c40cac84906b6e4a4f370c9c1ff0 Mon Sep 17 00:00:00 2001
From: Jo-Philipp Wich <jow@openwrt.org>
Date: Sun, 4 Jul 2010 18:11:34 +0000
Subject: [PATCH] comgt: add usb hotplug handler to bring up 3g ifaces on boot
 or when the dongle is attached

SVN-Revision: 22061
---
 package/comgt/Makefile     |  4 +++-
 package/comgt/files/3g.usb | 43 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 46 insertions(+), 1 deletion(-)
 create mode 100644 package/comgt/files/3g.usb

diff --git a/package/comgt/Makefile b/package/comgt/Makefile
index a7c45c558a..253e12af0e 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:=3
+PKG_RELEASE:=4
 
 PKG_SOURCE:=$(PKG_NAME).$(PKG_VERSION).tgz
 PKG_SOURCE_URL:=@SF/comgt
@@ -54,6 +54,8 @@ define Package/comgt/install
 	$(INSTALL_DATA) ./files/3g.button $(1)/etc/hotplug.d/button/05-3g
 	$(INSTALL_DIR) $(1)/etc/hotplug.d/iface
 	$(INSTALL_DATA) ./files/3g.iface $(1)/etc/hotplug.d/iface/05-3g
+	$(INSTALL_DIR) $(1)/etc/hotplug.d/usb
+	$(INSTALL_DATA) ./files/3g.usb $(1)/etc/hotplug.d/usb/30-3g
 	$(INSTALL_DIR) $(1)/etc/gcom
 	$(INSTALL_DATA) ./files/setpin.gcom $(1)/etc/gcom/setpin.gcom
 	$(INSTALL_DATA) ./files/setmode.gcom $(1)/etc/gcom/setmode.gcom
diff --git a/package/comgt/files/3g.usb b/package/comgt/files/3g.usb
new file mode 100644
index 0000000000..c52646b3dd
--- /dev/null
+++ b/package/comgt/files/3g.usb
@@ -0,0 +1,43 @@
+#!/bin/sh
+
+. /etc/functions.sh
+
+log() {
+	logger -t 3g-hotplug "$@"
+}
+
+find_3g_iface() {
+	local cfg="$1"
+	local tty="$2"
+
+	local proto
+	config_get proto "$cfg" proto
+
+	[ "$proto" = 3g ] && {
+		local auto
+		config_get_bool auto "$cfg" auto 1
+		[ "$auto" = 1 ] || return 0
+
+		local dev
+		config_get dev "$cfg" device
+
+		if [ "${dev##*/}" = "${tty##*/}" ]; then
+			log "Starting interface $cfg for device ${tty##*/}"
+			( sleep 1; /sbin/ifup "$cfg" ) &
+		fi
+	}
+}
+
+
+if [ "$ACTION" = add ]; then
+	case "$DEVICENAME" in
+		*-*:*.*) config_load network;;
+		*) exit 0;;
+	esac
+
+	local tty
+	for tty in /sys/$DEVPATH/ttyUSB*; do
+		[ -d "$tty" ] || break
+		config_foreach find_3g_iface interface "$tty"
+	done
+fi
-- 
GitLab