X-Git-Url: https://git.archive.openwrt.org/?a=blobdiff_plain;f=package%2Fpptp%2Ffiles%2Fpptp.sh;h=911e0aae2a8a98082716b7919d5fc815f5715a3b;hb=060f822fc24aab317475152fec91ee7f99528523;hp=fffa625a2fc561e5b14fe08e1b2ce04510aabca4;hpb=89c0b40c57f9de26cf5d4e2d5167bfd294aa1e83;p=openwrt.git diff --git a/package/pptp/files/pptp.sh b/package/pptp/files/pptp.sh old mode 100644 new mode 100755 index fffa625a2f..911e0aae2a --- a/package/pptp/files/pptp.sh +++ b/package/pptp/files/pptp.sh @@ -1,23 +1,55 @@ -scan_pptp() { - scan_ppp "$@" +#!/bin/sh + +. /etc/functions.sh +. ../netifd-proto.sh +init_proto "$@" + +INCLUDE_ONLY=1 +. ./ppp.sh + +proto_pptp_init_config() { + ppp_generic_init_config + proto_config_add_string "server" + proto_config_add_boolean "buffering" + available=1 + no_device=1 } -setup_interface_pptp() { - local iface="$1" - local config="$2" - - config_get device "$config" device +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 + } + + [ "${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 - setup_interface "$iface" "$config" "dhcp" + [ "$load" = "1" ] && sleep 1 - config_get mtu "$cfg" mtu - config_get server "$cfg" server - mtu=${mtu:-1452} - start_pppd "$config" \ - pty "/usr/sbin/pptp $server --loglevel 0 --nolaunchpppd" + ppp_generic_setup "$config" \ + pty "/usr/sbin/pptp $server --loglevel 0 --nolaunchpppd $buffering" \ file /etc/ppp/options.pptp - mtu $mtu mru $mtu } + +proto_pptp_teardown() { + ppp_generic_teardown "$@" +} + +add_protocol pptp