X-Git-Url: https://git.archive.openwrt.org/?a=blobdiff_plain;f=package%2Fpptp%2Ffiles%2Fpptp.sh;h=911e0aae2a8a98082716b7919d5fc815f5715a3b;hb=060f822fc24aab317475152fec91ee7f99528523;hp=648e0326bc2d98c0fe7cd0e1b1b4d12753b86b92;hpb=474e65cbab6cad7dbf74b7cb62acb02aa12403a3;p=openwrt.git diff --git a/package/pptp/files/pptp.sh b/package/pptp/files/pptp.sh old mode 100644 new mode 100755 index 648e0326bc..911e0aae2a --- a/package/pptp/files/pptp.sh +++ b/package/pptp/files/pptp.sh @@ -1,45 +1,55 @@ -scan_pptp() { - scan_ppp "$@" -} +#!/bin/sh + +. /etc/functions.sh +. ../netifd-proto.sh +init_proto "$@" + +INCLUDE_ONLY=1 +. ./ppp.sh -find_gw() { - route -n | awk '$1 == "0.0.0.0" { print $2; exit }' +proto_pptp_init_config() { + ppp_generic_init_config + proto_config_add_string "server" + proto_config_add_boolean "buffering" + available=1 + no_device=1 } +proto_pptp_setup() { + local config="$1" + local iface="$2" + local load + + json_get_vars server buffering + + serv_addr= + for ip in $(resolveip -t 5 "$server"); do + ( proto_add_host_dependency "$config" "$server" ) + serv_addr=1 + done + [ -n "$serv_addr" ] || { + echo "Could not resolve server address" + sleep 5 + proto_setup_failed "$config" + exit 1 + } -setup_interface_pptp() { - local config="$2" - local ifname - - config_get device "$config" device - config_get ipproto "$config" ipproto - config_get server "$config" server + [ "${buffering:-1}" == 0 ] && buffering="--nobuffer" || buffering= for module in slhc ppp_generic ppp_async ip_gre; do + grep -q "$module" /proc/modules && continue /sbin/insmod $module 2>&- >&- + load=1 done - sleep 1 + [ "$load" = "1" ] && sleep 1 - setup_interface "$device" "$config" "${ipproto:-dhcp}" - local gw="$(find_gw)" - [ -n "$gw" ] && { - route delete "$server" 2>/dev/null >/dev/null - route add "$server" gw "$gw" - } + ppp_generic_setup "$config" \ + pty "/usr/sbin/pptp $server --loglevel 0 --nolaunchpppd $buffering" \ + file /etc/ppp/options.pptp +} - # fix up the netmask - config_get netmask "$config" netmask - [ -z "$netmask" -o -z "$device" ] || ifconfig $device netmask $netmask - - # make sure the network state references the correct ifname - scan_ppp "$config" - config_get ifname "$config" ifname - uci_set_state network "$config" ifname "$ifname" - - config_get mtu "$configg" mtu - mtu=${mtu:-1452} - start_pppd "$config" \ - pty "/usr/sbin/pptp $server --loglevel 0 --nolaunchpppd" \ - file /etc/ppp/options.pptp \ - mtu $mtu mru $mtu +proto_pptp_teardown() { + ppp_generic_teardown "$@" } + +add_protocol pptp