X-Git-Url: http://git.rohieb.name/openwrt.git/blobdiff_plain/6f08fda54e6f2b58c2972cb542042ed7c03e3540..88a55754b24e2bb45b2b93b68bcc864fa8757eaa:/openwrt/package/pptp/files/ifup.pptp diff --git a/openwrt/package/pptp/files/ifup.pptp b/openwrt/package/pptp/files/ifup.pptp index 21a574acb..23cad0805 100644 --- a/openwrt/package/pptp/files/ifup.pptp +++ b/openwrt/package/pptp/files/ifup.pptp @@ -10,21 +10,32 @@ for module in slhc ppp_generic ppp_async ip_gre; do /sbin/insmod $module 2>&- >&- done -if=$(nvram get pptp_ifname) -ip=$(nvram get ${type}_ipaddr) -netmask=$(nvram get ${type}_netmask) -[ -z "$ip" -o -z "$if" ] || ifconfig $if $ip ${netmask:+netmask $netmask} broadcast + up - while :; do + PPTP_PROTO="$(nvram get pptp_proto)" + [ "$PPTP_PROTO" = "static" ] || PPTP_PROTO="" + PPTP_PROTO="${PPTP_PROTO:-dhcp}" IP=$(nvram get pptp_server_ip) 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} + 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:+ mtu $MTU mru $MTU} + MTU=${MTU:-1452} + + do_ifup $PPTP_PROTO $type + + # hack for some buggy ISPs + NETMASK=$(nvram get ${type}_netmask) + IFNAME=$(nvram get pptp_ifname) + [ -z "$NETMASK" -o -z "$IFNAME" ] || ifconfig $IFNAME netmask $NETMASK /usr/sbin/pppd nodetach \ pty "/usr/sbin/pptp $IP --loglevel 0 --nolaunchpppd" \ @@ -32,12 +43,13 @@ while :; do connect /bin/true \ usepeerdns \ defaultroute \ - linkname $type \ + replacedefaultroute \ + linkname "$type" \ + ipparam "$type" \ user "$USERNAME" \ password "$PASSWORD" \ - $MTU \ - $IDLETIME \ - $REDIAL \ - $IFNAME + mtu $MTU mru $MTU \ + $DEMAND \ + $KEEPALIVE done &