summaryrefslogtreecommitdiffstats
path: root/sbin/dhclient-script
diff options
context:
space:
mode:
Diffstat (limited to 'sbin/dhclient-script')
-rwxr-xr-xsbin/dhclient-script53
1 files changed, 31 insertions, 22 deletions
diff --git a/sbin/dhclient-script b/sbin/dhclient-script
index 89a00a0..e4f7f47 100755
--- a/sbin/dhclient-script
+++ b/sbin/dhclient-script
@@ -94,12 +94,16 @@ add_new_alias() {
delete_old_routes() {
$ROUTE delete "$old_ip_address" $LOCALHOST >/dev/null 2>&1
- for router in $old_routers; do
- if [ $if_defaultroute = x -o $if_defaultroute = $interface ]; then
- $ROUTE delete default $route >/dev/null 2>&1
- /bin/rm -f /tmp/${interface}_router
- fi
- done
+ # Only allow the default route to be overridden if it's on our own interface
+ DEFAULTROUTE_IFACE=`route get default | grep interface | awk '{print $2};'`
+ if [ -z "${DEFAULTROUTE_IFACE}" -o "{$interface}" = "${DEFAULTROUTE_IFACE}" ]; then
+ for router in $old_routers; do
+ if [ $if_defaultroute = x -o $if_defaultroute = $interface ]; then
+ $ROUTE delete default $route >/dev/null 2>&1
+ /bin/rm -f /tmp/${interface}_router
+ fi
+ done
+ fi
if [ -n "$old_static_routes" ]; then
set $old_static_routes
@@ -115,22 +119,27 @@ delete_old_routes() {
add_new_routes() {
$ROUTE add $new_ip_address $LOCALHOST >/dev/null 2>&1
- for router in $new_routers; do
- if [ "$new_ip_address" = "$router" ]; then
- $ROUTE add default -iface $router
- #>/dev/null 2>&1
- echo $ROUTE add default -iface $router | $LOGGER
- echo $new_routers > /tmp/${interface}_router
- else
- $ROUTE add default $router
- echo $ROUTE add default $router | $LOGGER
- #>/dev/null 2>&1
- echo $new_routers > /tmp/${interface}_router
- fi
- # 2nd and subsequent default routers error out, so explicitly
- # stop processing the list after the first one.
- break
- done
+
+ # Only allow the default route to be overridden if it's on our own interface
+ DEFAULTROUTE_IFACE=`route get default | grep interface | awk '{print $2};'`
+ if [ -z "${DEFAULTROUTE_IFACE}" -o "{$interface}" = "${DEFAULTROUTE_IFACE}" ]; then
+ for router in $new_routers; do
+ if [ "$new_ip_address" = "$router" ]; then
+ $ROUTE add default -iface $router
+ #>/dev/null 2>&1
+ echo $ROUTE add default -iface $router | $LOGGER
+ echo $new_routers > /tmp/${interface}_router
+ else
+ $ROUTE add default $router
+ echo $ROUTE add default $router | $LOGGER
+ #>/dev/null 2>&1
+ echo $new_routers > /tmp/${interface}_router
+ fi
+ # 2nd and subsequent default routers error out, so explicitly
+ # stop processing the list after the first one.
+ break
+ done
+ fi
if [ -n "$new_static_routes" ]; then
$LOGGER "New Static Routes ($interface): $new_static_routes"
OpenPOWER on IntegriCloud