From 10ac83603936411a2b7d2624d469ac35056a1301 Mon Sep 17 00:00:00 2001
From: Mike Baker <mbm@openwrt.org>
Date: Tue, 1 May 2007 21:53:32 +0000
Subject: [PATCH] various patches to add support for ppp over evdo or character
 devices

SVN-Revision: 7076
---
 .../base-files/files/lib/network/config.sh    |  2 ++
 package/kernel/modules/usb.mk                 | 10 +++++++++
 package/ppp/files/ppp.sh                      | 22 ++++++++++++++++++-
 3 files changed, 33 insertions(+), 1 deletion(-)

diff --git a/package/base-files/files/lib/network/config.sh b/package/base-files/files/lib/network/config.sh
index eee72c0cde..7e90368e26 100755
--- a/package/base-files/files/lib/network/config.sh
+++ b/package/base-files/files/lib/network/config.sh
@@ -75,6 +75,8 @@ prepare_interface() {
 	# to create any interfaces here. The scripts have already done that, otherwise
 	# the bridge interface wouldn't exist.
 	[ "$iface" = "br-$config" ] && return 0;
+
+	[ -f "$iface" ] && return 0;
 	
 	ifconfig "$iface" 2>/dev/null >/dev/null && {
 		# make sure the interface is removed from any existing bridge and brought down
diff --git a/package/kernel/modules/usb.mk b/package/kernel/modules/usb.mk
index 99a497a92a..d5af3d92b5 100644
--- a/package/kernel/modules/usb.mk
+++ b/package/kernel/modules/usb.mk
@@ -170,6 +170,16 @@ define KernelPackage/usb-serial
 endef
 $(eval $(call KernelPackage,usb-serial))
 
+define KernelPackage/usb-serial-airprime
+  TITLE:=Support for Airprime (EVDO) 
+  DESCRIPTION:=Kernel support for Airprime (EVDO) 
+  DEPENDS:=kmod-usb-serial
+  SUBMENU:=$(USBMENU)
+  KCONFIG:=$(CONFIG_USB_SERIAL_AIRPRIME)
+  FILES:=$(LINUX_DIR)/drivers/usb/serial/airprime.$(LINUX_KMOD_SUFFIX)
+  AUTOLOAD:=$(call AutoLoad,65,airprime)
+endef
+$(eval $(call KernelPackage,usb-serial-airprime))
 
 define KernelPackage/usb-serial-belkin
   TITLE:=Support for Belkin devices
diff --git a/package/ppp/files/ppp.sh b/package/ppp/files/ppp.sh
index 0bd75fc0a7..0d0941fda5 100644
--- a/package/ppp/files/ppp.sh
+++ b/package/ppp/files/ppp.sh
@@ -21,6 +21,10 @@ start_pppd() {
 	config_get username "$cfg" username
 	config_get password "$cfg" password
 	config_get keepalive "$cfg" keepalive
+
+	config_get connect "$cfg" connect
+	config_get disconnect "$cfg" disconnect
+
 	interval="${keepalive##*[, ]}"
 	[ "$interval" != "$keepalive" ] || interval=5
 	
@@ -34,7 +38,23 @@ start_pppd() {
 		replacedefaultroute \
 		${username:+user "$username" password "$password"} \
 		linkname "$cfg" \
-		ipparam "$cfg"
+		ipparam "$cfg" \
+		${connect:+connect "$connect"} \
+		${disconnect:+disconnect "$disconnect"}
 
 	lock -u "/var/lock/ppp-${cfg}"
 }
+
+setup_interface_ppp() {
+	local iface="$1"
+	local config="$2"
+
+	config_get device "$config" device
+
+	config_get mtu "$cfg" mtu
+	mtu=${mtu:-1492}
+	start_pppd "$config" \
+		mtu $mtu mru $mtu \
+		"$device"
+}
+
-- 
GitLab