pptp: fix passing setup json variables to the ppp setup code
[openwrt.git] / package / pptp / files / pptp.sh
old mode 100644 (file)
new mode 100755 (executable)
index 4d03af0..911e0aa
@@ -1,24 +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
-       config_get ipproto "$config" ipproto
+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" "${ipproto:-dhcp}"
-
-       config_get mtu "$cfg" mtu
-       config_get server "$cfg" server
-       mtu=${mtu:-1452}
-       start_pppd "$config" \
-               pty "/usr/sbin/pptp $server --loglevel 0 --nolaunchpppd" \
-               file /etc/ppp/options.pptp \
-               mtu $mtu mru $mtu
+       [ "$load" = "1" ] && sleep 1
+
+       ppp_generic_setup "$config" \
+               pty "/usr/sbin/pptp $server --loglevel 0 --nolaunchpppd $buffering" \
+               file /etc/ppp/options.pptp
 }
+
+proto_pptp_teardown() {
+       ppp_generic_teardown "$@"
+}
+
+add_protocol pptp