#!/bin/sh
run_ip_up ()
{
case $interface in
ppp0)
case $tty in
"" | eth*| br* | bond* | /dev/ttyp0 | /dev/ttyS[0-4] | /dev/ttyUSB[0-4] | /dev/capi/0 | /dev/ttyACM0 | /dev/ttyHS[0-3] | /dev/gsmmodem )
interface=pppoe
>/var/run/pppoe.up
;;
esac
;;
*)
>/var/run/$interface.up
;;
esac
echo $local >/var/run/$interface.ip
def_gateway=
def_route=`ip -4 route show | grep ^default`
route_dev=
route_gw=
if [ "$def_route" ]; then
regex_dev='^default\>.*\<dev\>[[:space:]]*\([^[:space:]]\+\).*'
route_dev=$(echo "$def_route" | grep "$regex_dev" | sed -e "s/$regex_dev/\1/")
regex_gw='^default\>.*\<via\>[[:space:]]*\([^[:space:]]\+\).*'
route_gw=$(echo "$def_route" | grep "$regex_gw" | sed -e "s/$regex_gw/\1/")
fi
if [ -f /etc/default-route-interface ]
then
read default_route_interface < /etc/default-route-interface
else
default_route_interface=$route_dev
case $default_route_interface in
ppp0) default_route_interface=pppoe ;;
esac
fi
if [ "$default_route_interface" = "$interface" ]
then
echo "default route interface '$interface' comes up"
is_default_route='yes'
[ -f /var/run/$interface.gw ] && read def_gateway < /var/run/$interface.gw
: ${def_gateway:=$remote}
echo $interface $def_gateway > /var/run/online
if [ "$route_dev" ]
then
if [ "$route_dev" != "$default_route_interface" -o \
 "$route_gw" != "$def_gateway" ]; then
echo "changing default route from ${route_gw:-<none>}:$route_dev to ${def_gateway:-<none>}:$interface"
ip -4 route change default ${def_gateway:+via $def_gateway} dev $real_interface
fi
else
ip -4 route add default ${def_gateway:+via $def_gateway} dev $real_interface
fi
else
is_default_route='no'
fi
if [ -f /var/run/imond.pid ]
then
/usr/local/bin/imond-stat "$real_interface up $local"
fi
for j in /etc/ppp/ip-up[0-9][0-9][0-9].*
do
if [ -f $j ]
then
echo "executing $j"
. $j
fi
done
if [ ! -f /var/run/ip-up.ppp-once ]
then
for j in /etc/ppp-once/ip-up[0-9][0-9][0-9].*
do
if [ -f $j ]
then
echo "executing $j"
. $j
fi
done
fi
}
ip=ip
script_op=up
. /etc/ppp/ip-up-down
