X-Git-Url: https://git.archive.openwrt.org/?p=openwrt.git;a=blobdiff_plain;f=package%2Fppp%2Ffiles%2Fppp.sh;h=7e9b8dd8562a564ff4e8ec568a1c7ddac6764ca0;hp=297a3291546988eaf9901feb466065d3ab80cd37;hb=eecf5b17520f6b3b6ffb45ac7dca298d93b27501;hpb=aa44be4505a2a98c53833914dc95a470a0505b20 diff --git a/package/ppp/files/ppp.sh b/package/ppp/files/ppp.sh index 297a329154..7e9b8dd856 100755 --- a/package/ppp/files/ppp.sh +++ b/package/ppp/files/ppp.sh @@ -19,6 +19,7 @@ ppp_generic_init_config() { proto_config_add_boolean "defaultroute" proto_config_add_boolean "peerdns" proto_config_add_boolean "ipv6" + proto_config_add_boolean "authfail" proto_config_add_int "mtu" } @@ -70,6 +71,13 @@ ppp_generic_teardown() { case "$ERROR" in 11|19) proto_notify_error "$interface" AUTH_FAILED + json_get_var authfail authfail + if [ "${authfail:-0}" -gt 0 ]; then + proto_block_restart "$interface" + fi + ;; + 2) + proto_notify_error "$interface" INVALID_OPTIONS proto_block_restart "$interface" ;; esac @@ -133,6 +141,8 @@ proto_pppoa_init_config() { proto_config_add_int "vci" proto_config_add_int "vpi" proto_config_add_string "encaps" + no_device=1 + available=1 } proto_pppoa_setup() { @@ -160,9 +170,53 @@ proto_pppoa_teardown() { ppp_generic_teardown "$@" } +proto_pptp_init_config() { + ppp_generic_init_config + proto_config_add_string "server" + available=1 + no_device=1 +} + +proto_pptp_setup() { + local config="$1" + local iface="$2" + + local ip serv_addr server + json_get_var server server && { + for ip in $(resolveip -t 5 "$server"); do + ( proto_add_host_dependency "$config" "$ip" ) + serv_addr=1 + done + } + [ -n "$serv_addr" ] || { + echo "Could not resolve server address" + sleep 5 + proto_setup_failed "$config" + exit 1 + } + + local load + for module in slhc ppp_generic ppp_async ppp_mppe ip_gre gre pptp; do + grep -q "$module" /proc/modules && continue + /sbin/insmod $module 2>&- >&- + load=1 + done + [ "$load" = "1" ] && sleep 1 + + ppp_generic_setup "$config" \ + plugin pptp.so \ + pptp_server $server \ + file /etc/ppp/options.pptp +} + +proto_pptp_teardown() { + ppp_generic_teardown "$@" +} + [ -n "$INCLUDE_ONLY" ] || { add_protocol ppp [ -f /usr/lib/pppd/*/rp-pppoe.so ] && add_protocol pppoe [ -f /usr/lib/pppd/*/pppoatm.so ] && add_protocol pppoa + [ -f /usr/lib/pppd/*/pptp.so ] && add_protocol pptp }