X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/2d6dd9f18a11ea7ca97ac44527632269ecff913d..58deaa72404fc049b2e55679e339b13ec32c0afb:/package/ppp/files/ppp.sh diff --git a/package/ppp/files/ppp.sh b/package/ppp/files/ppp.sh index 46a66c969..7c789fc98 100644 --- a/package/ppp/files/ppp.sh +++ b/package/ppp/files/ppp.sh @@ -5,15 +5,7 @@ stop_interface_ppp() { config_get proto "$cfg" proto local link="$proto-$cfg" - [ -f "/var/run/ppp-${link}.pid" ] && { - local pid="$(head -n1 /var/run/ppp-${link}.pid 2>/dev/null)" - local try=0 - grep -qs pppd "/proc/$pid/cmdline" && kill -TERM $pid && \ - while grep -qs pppd "/proc/$pid/cmdline" && [ $((try++)) -lt 5 ]; do sleep 1; done - grep -qs pppd "/proc/$pid/cmdline" && kill -KILL $pid && \ - while grep -qs pppd "/proc/$pid/cmdline"; do sleep 1; done - rm -f "/var/run/ppp-${link}.pid" - } + service_kill pppd "/var/run/ppp-${link}.pid" remove_dns "$cfg" @@ -24,6 +16,13 @@ stop_interface_ppp() { start_pppd() { local cfg="$1"; shift + # Workaround for PPPoE service and AC name options, + # filter out the nic-* argument and append it as last option + local nic="" + case "$1" in + nic-*) nic="$1"; shift ;; + esac + local proto config_get proto "$cfg" proto @@ -118,7 +117,8 @@ start_pppd() { ${disconnect:+disconnect "$disconnect"} \ ${ipv6} \ ${pppd_options} \ - nodetach + nodetach \ + ${nic} lock -u "/var/lock/ppp-${link}" }