ppp: add config options to tune discovery timeout and attempts
[openwrt/openwrt.git] / package / network / services / ppp / files / ppp.sh
index 9c27b3c280b5680cd56f3d8b18437e5d6e3b0c4d..b553effd889e7662f366793665c789ed0d0c0ff2 100755 (executable)
@@ -74,7 +74,7 @@ ppp_generic_init_config() {
        proto_config_add_string pppd_options
        proto_config_add_string 'connect:file'
        proto_config_add_string 'disconnect:file'
-       proto_config_add_string ipv6
+       [ -e /proc/sys/net/ipv6 ] && proto_config_add_string ipv6
        proto_config_add_boolean authfail
        proto_config_add_int mtu
        proto_config_add_string pppname
@@ -88,7 +88,10 @@ ppp_generic_setup() {
        local config="$1"; shift
        local localip
 
-       json_get_vars ipv6 ip6table demand keepalive keepalive_adaptive username password pppd_options pppname unnumbered persist maxfail holdoff
+       json_get_vars ip6table demand keepalive keepalive_adaptive username password pppd_options pppname unnumbered persist maxfail holdoff peerdns
+
+       [ ! -e /proc/sys/net/ipv6 ] && ipv6=0 || json_get_var ipv6 ipv6
+
        if [ "$ipv6" = 0 ]; then
                ipv6=""
        elif [ -z "$ipv6" -o "$ipv6" = auto ]; then
@@ -120,6 +123,8 @@ ppp_generic_setup() {
                }
        }
 
+       [ -n "$keepalive" ] || keepalive="5 1"
+
        local lcp_failure="${keepalive%%[, ]*}"
        local lcp_interval="${keepalive##*[, ]}"
        local lcp_adaptive="lcp-echo-adaptive"
@@ -137,6 +142,7 @@ ppp_generic_setup() {
                ${ipv6:++ipv6} \
                ${autoipv6:+set AUTOIPV6=1} \
                ${ip6table:+set IP6TABLE=$ip6table} \
+               ${peerdns:+set PEERDNS=$peerdns} \
                nodefaultroute \
                usepeerdns \
                $demand $persist maxfail $maxfail \
@@ -145,9 +151,9 @@ ppp_generic_setup() {
                ${connect:+connect "$connect"} \
                ${disconnect:+disconnect "$disconnect"} \
                ip-up-script /lib/netifd/ppp-up \
-               ipv6-up-script /lib/netifd/ppp6-up \
+               ${ipv6:+ipv6-up-script /lib/netifd/ppp6-up} \
                ip-down-script /lib/netifd/ppp-down \
-               ipv6-down-script /lib/netifd/ppp-down \
+               ${ipv6:+ipv6-down-script /lib/netifd/ppp-down} \
                ${mtu:+mtu $mtu mru $mtu} \
                "$@" $pppd_options
 }
@@ -204,6 +210,9 @@ proto_pppoe_init_config() {
        proto_config_add_string "ac"
        proto_config_add_string "service"
        proto_config_add_string "host_uniq"
+       proto_config_add_int "padi_attempts"
+       proto_config_add_int "padi_timeout"
+
        lasterror=1
 }
 
@@ -221,12 +230,16 @@ proto_pppoe_setup() {
        json_get_var ac ac
        json_get_var service service
        json_get_var host_uniq host_uniq
+       json_get_var padi_attempts padi_attempts
+       json_get_var padi_timeout padi_timeout
 
        ppp_generic_setup "$config" \
                plugin rp-pppoe.so \
                ${ac:+rp_pppoe_ac "$ac"} \
                ${service:+rp_pppoe_service "$service"} \
                ${host_uniq:+host-uniq "$host_uniq"} \
+               ${padi_attempts:+pppoe-padi-attempts $padi_attempts} \
+               ${padi_timeout:+pppoe-padi-timeout $padi_timeout} \
                "nic-$iface"
 }