pptp: use resolveip, schedule restart if dns lookups fail
[openwrt.git] / package / pptp / files / pptp.sh
1 #!/bin/sh
2
3 . /etc/functions.sh
4 . ../netifd-proto.sh
5 init_proto "$@"
6
7 INCLUDE_ONLY=1
8 . ./ppp.sh
9
10 proto_pptp_init_config() {
11         ppp_generic_init_config
12         proto_config_add_string "server"
13         proto_config_add_boolean "buffering"
14         available=1
15         no_device=1
16 }
17
18 proto_pptp_setup() {
19         local config="$1"
20         local iface="$2"
21         local load
22
23         json_get_var server server
24
25         serv_addr=
26         for ip in $(resolveip -t 5 "$server"); do
27                 proto_add_host_dependency "$config" "$server"
28                 serv_addr=1
29         done
30         [ -n "$serv_addr" ] || {
31                 echo "Could not resolve server address"
32                 sleep 5
33                 proto_setup_failed "$config"
34                 exit 1
35         }
36
37         json_get_var buffering buffering
38         [ "${buffering:-1}" == 0 ] && buffering="--nobuffer" || buffering=
39
40         for module in slhc ppp_generic ppp_async ip_gre; do
41                 grep -q "$module" /proc/modules && continue
42                 /sbin/insmod $module 2>&- >&-
43                 load=1
44         done
45         [ "$load" = "1" ] && sleep 1
46
47         ppp_generic_setup "$config" \
48                 pty "/usr/sbin/pptp $server --loglevel 0 --nolaunchpppd $buffering" \
49                 file /etc/ppp/options.pptp
50 }
51
52 proto_pptp_teardown() {
53         ppp_generic_teardown "$@"
54 }
55
56 add_protocol pptp