add lcp ping to ppp ifup script so that it timeouts properly (fixes #42)
[openwrt.git] / package / ppp / files / ifup.pppoe
index caf06f76ca670bdf6a39c4bc971f6e40b95c7bfb..36bbe30299503d57d607e7a68e7cbc7f24aea709 100644 (file)
@@ -1,29 +1,51 @@
 #!/bin/sh
+[ $# = 0 ] && { echo "  $0 <group>"; exit; }
 . /etc/functions.sh
-IF_NAME=$1
+. /etc/network.overrides
+[ -e /etc/config/network ] && . /etc/config/network
+type=$1
 
-PROTO=$(nvram get ${IF_NAME}_proto)
-[ "$PROTO" = "pppoe" ] || exit 0
+[ "$(nvram get ${type}_proto)" = "pppoe" ] || {
+       echo "$0: ${type}_proto isn't pppoe"
+       exit
+}
 
 for module in slhc ppp_generic pppox pppoe; do
-       /sbin/insmod $module 2>/dev/null >/dev/null
+       /sbin/insmod $module 2>&- >&-
 done
 
-(
-       while true; do
-               IFNAME=$(nvram get pppoe_ifname)
-               USERNAME=$(nvram get ppp_username)
-               PASSWORD=$(nvram get ppp_passwd)
-               REDIAL=$(nvram get ppp_redialperiod)
-               REDIAL=${REDIAL:+lcp-echo-interval $REDIAL}
-               IDLETIME=$(nvram get ppp_idletime)
-               IDLETIME=${IDLETIME:+lcp-echo-failure $IDLETIME}
-               MTUV=$(nvram get ppp_mtu)
-               MTU=${MTUV:+mtu $MTUV}
-               MRU=${MTUV:+mru $MTUV}
+while :; do
+       IFNAME=$(nvram get pppoe_ifname)
+       USERNAME=$(nvram get ppp_username)
+       PASSWORD=$(nvram get ppp_passwd)
+       KEEPALIVE=$(nvram get ppp_redialperiod)
+       KEEPALIVE=${KEEPALIVE:+lcp-echo-interval 10 lcp-echo-failure $KEEPALIVE}
+       DEMAND=$(nvram get ppp_demand)
+       case "$DEMAND" in
+               on|1|enabled)
+                       DEMAND=$(nvram get ppp_idletime)
+                       DEMAND=${IDLETIME:+demand idle $IDLETIME}
+               ;;
+               *) DEMAND="";;
+       esac
+       MTU=$(nvram get ppp_mtu)
+       MTU=${MTU:-1492}
 
-               ifconfig $IFNAME up
-               echo -e "plugin rp-pppoe.so\nconnect /bin/true\nusepeerdns\ndefaultroute\nuser \"$USERNAME\"\npassword \"$PASSWORD\"\n$MTU\n$MRU\n$IDLETIME\n$REDIAL" > /tmp/.pppoe-data
-               /usr/sbin/pppd nodetach file /tmp/.pppoe-data $IFNAME
-       done
-) &
+       ifconfig $IFNAME up
+       /usr/sbin/pppd nodetach \
+               plugin rp-pppoe.so \
+               connect /bin/true \
+               usepeerdns \
+               defaultroute \
+               linkname $type \
+               ipparam $type \
+               user "$USERNAME" \
+               password "$PASSWORD" \
+               mtu $MTU mru $MTU \
+               $DEMAND \
+               $KEEPALIVE \
+               nic-$IFNAME
+       
+       # Read settings again (might have changed)
+       [ -e /etc/config/network ] && . /etc/config/network
+done &