-scan_ppp() {
- config_get ifname "$1" ifname
- pppdev="${pppdev:-0}"
- config_set "$1" ifname "ppp$pppdev"
- config_set "$1" unit "$pppdev"
+stop_interface_ppp() {
+ local cfg="$1"
+
+ local proto
+ 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"
+ }
+
+ remove_dns "$cfg"
+
+ local lock="/var/lock/ppp-$link"
+ [ -f "$lock" ] && lock -u "$lock"