From 65b4654000ef64d06a72f87542753ad16dbeb610 Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@openwrt.org>
Date: Fri, 2 Mar 2007 15:48:29 +0000
Subject: add support for static routes - based on the patch from #1365

SVN-Revision: 6457
---
 .../base-files/files/etc/hotplug.d/iface/10-routes | 40 ++++++++++++++++++++++
 1 file changed, 40 insertions(+)
 create mode 100644 package/base-files/files/etc/hotplug.d/iface/10-routes

(limited to 'package/base-files/files/etc/hotplug.d/iface/10-routes')

diff --git a/package/base-files/files/etc/hotplug.d/iface/10-routes b/package/base-files/files/etc/hotplug.d/iface/10-routes
new file mode 100644
index 0000000..4b55f8b
--- /dev/null
+++ b/package/base-files/files/etc/hotplug.d/iface/10-routes
@@ -0,0 +1,40 @@
+add_route() {
+	local config="$1"
+
+	# is this route intended for the
+	# $INTERFACE of this hotplug event
+	config_get interface "$config" interface
+	[ "$interface" != "$INTERFACE" ] && return 0
+	
+	# get the real interface name from network config
+	config_get dev "$interface" ifname
+
+	config_get target "$config" target
+	config_get netmask "$config" netmask
+	config_get gateway "$config" gateway
+	config_get metric "$config" metric
+
+	# make sure there is a gateway and a target
+	[ -n "$target" ] || {
+		echo "Missing target in route section $config"
+		return 1
+	}
+	[ -n "$gateway" ] || {
+		echo "Missing gateway in route section $config"
+		return 1
+	}
+
+	netmask="${netmask:-255.255.255.255}"
+	dest="${netmask:+-net "$target" netmask "$netmask"}"
+	dest="${dest:--host "$target"}"
+	
+	/sbin/route add $dest gw "$gateway" ${dev:+dev "$dev"} ${metric:+ metric "$metric"}
+}
+
+case "$ACTION" in
+	ifup)
+		include /lib/network
+		scan_interfaces
+		config_foreach "add_route" route
+	;;
+esac
-- 
cgit v1.1