aboutsummaryrefslogtreecommitdiffstats
path: root/package/base-files/files
diff options
context:
space:
mode:
authorJo-Philipp Wich <jow@openwrt.org>2010-11-17 19:11:50 +0000
committerJo-Philipp Wich <jow@openwrt.org>2010-11-17 19:11:50 +0000
commitd0ab35c115643db40b2bece8698ecd472f4ce147 (patch)
treea713b7eb2bcde7c4f5a2c15a4273463011611370 /package/base-files/files
parent2201a230a9872cfe2fa1733b66742dea5cb816e6 (diff)
downloadupstream-d0ab35c115643db40b2bece8698ecd472f4ce147.tar.gz
upstream-d0ab35c115643db40b2bece8698ecd472f4ce147.tar.bz2
upstream-d0ab35c115643db40b2bece8698ecd472f4ce147.zip
base-file: add metric option for static and dhcp protos, this simplifies the management of multiple default routes
SVN-Revision: 24020
Diffstat (limited to 'package/base-files/files')
-rwxr-xr-xpackage/base-files/files/lib/network/config.sh7
-rwxr-xr-xpackage/base-files/files/usr/share/udhcpc/default.script4
2 files changed, 7 insertions, 4 deletions
diff --git a/package/base-files/files/lib/network/config.sh b/package/base-files/files/lib/network/config.sh
index d285da23ad..358e610f62 100755
--- a/package/base-files/files/lib/network/config.sh
+++ b/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
diff --git a/package/base-files/files/usr/share/udhcpc/default.script b/package/base-files/files/usr/share/udhcpc/default.script
index 708f847839..9acde829d0 100755
--- a/package/base-files/files/usr/share/udhcpc/default.script
+++ b/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