Browse Source

base-file: add metric option for static and dhcp protos, this simplifies the management of multiple default routes

SVN-Revision: 24020
Jo-Philipp Wich 15 years ago
parent
commit
d0ab35c115

+ 1 - 1
package/base-files/Makefile

@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
 include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=base-files
-PKG_RELEASE:=60
+PKG_RELEASE:=61
 
 PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/
 PKG_BUILD_DEPENDS:=opkg/host

+ 4 - 3
package/base-files/files/lib/network/config.sh

@@ -228,16 +228,17 @@ setup_interface_static() {
 	config_get ip6addr "$config" ip6addr
 	[ -z "$ipaddr" -o -z "$netmask" ] && [ -z "$ip6addr" ] && return 1
 
-	local gateway ip6gw dns bcast
+	local gateway ip6gw dns bcast metric
 	config_get gateway "$config" gateway
 	config_get ip6gw "$config" ip6gw
 	config_get dns "$config" dns
 	config_get bcast "$config" broadcast
+	config_get metric "$config" metric
 
 	[ -z "$ipaddr" ] || $DEBUG ifconfig "$iface" "$ipaddr" netmask "$netmask" broadcast "${bcast:-+}"
 	[ -z "$ip6addr" ] || $DEBUG ifconfig "$iface" add "$ip6addr"
-	[ -z "$gateway" ] || $DEBUG route add default gw "$gateway" dev "$iface"
-	[ -z "$ip6gw" ] || $DEBUG route -A inet6 add default gw "$ip6gw" dev "$iface"
+	[ -z "$gateway" ] || $DEBUG route add default gw "$gateway" ${metric:+metric $metric} dev "$iface"
+	[ -z "$ip6gw" ] || $DEBUG route -A inet6 add default gw "$ip6gw" ${metric:+metric $metric} dev "$iface"
 	[ -z "$dns" ] || add_dns "$config" $dns
 
 	config_get type "$config" TYPE

+ 3 - 1
package/base-files/files/usr/share/udhcpc/default.script

@@ -19,6 +19,7 @@ setup_interface () {
 	local old_dns
 	local user_dns
 	local user_router
+	local user_metric
 
 	[ -n "$ifc" ] && {
 		old_ip="$(uci_get_state network "$ifc" ipaddr)"
@@ -43,6 +44,7 @@ setup_interface () {
 		change_state network "$ifc" lease_gateway "$router"
 		old_router="$(uci_get_state network "$ifc" gateway)"
 		user_router="$(uci_get network "$ifc" gateway)"
+		user_metric="$(uci_get network "$ifc" metric)"
 		[ -n "$user_router" ] && router="$user_router"
 	}
 
@@ -51,7 +53,7 @@ setup_interface () {
 
 		local valid_gw=""
 		for i in $router ; do
-			route add default gw $i dev $interface
+			route add default gw $i ${user_metric:+metric $user_metric} dev $interface
 			valid_gw="${valid_gw:+$valid_gw|}$i"
 		done