diff options
-rw-r--r-- | net/pppd.sh | 38 |
1 files changed, 30 insertions, 8 deletions
diff --git a/net/pppd.sh b/net/pppd.sh index 22644f2..1b14fed 100644 --- a/net/pppd.sh +++ b/net/pppd.sh @@ -1,4 +1,4 @@ -# Copyright (c) 2005-2007 Gentoo Foundation +# Copyright (c) 2005-2023 Gentoo Authors # Copyright (c) 2007-2008 Roy Marples <roy@marples.name> # Released under the 2-clause BSD license. # shellcheck shell=sh disable=SC1008 @@ -21,12 +21,28 @@ requote() printf "'%s' " "$@" } +pppd_version_int() { + # 002004008 is v2.4.8 + printf '%03d' $(/usr/sbin/pppd --version | awk '/pppd version/ {print $3}' | tr '.' ' ') +} + pppd_is_ge_248() { - local ver_str="$(/usr/sbin/pppd --version 2>&1 | awk '/pppd version/ {print $3}' | tr '.' ' ')" + [ $(pppd_version_int) -ge 002004008 ] +} - # 002004008 is v2.4.8 - [ "$(printf '%03d' ${ver_str})" -ge 002004008 ] +pppd_is_ge_250() +{ + [ $(pppd_version_int) -ge 002005000 ] +} + +pppd_pidfile() +{ + if pppd_is_ge_250; then + echo "/run/pppd/ppp-${IFACE}.pid" + else + echo "/run/ppp-${IFACE}.pid" + fi } pppd_pre_start() @@ -207,16 +223,18 @@ pppd_pre_start() fi [ "${insert_link_in_opts}" = "0" ] || opts="${link} ${opts}" + local pidfile="$(pppd_pidfile)" + ebegin "Starting pppd in ${IFACE}" mark_service_inactive if [ -n "${username}" ] \ && [ -n "${password}" -o -z "${passwordset}" ]; then printf "%s" "${password}" | \ eval start-stop-daemon --start --exec /usr/sbin/pppd \ - --pidfile "/run/ppp-${IFACE}.pid" -- "${opts}" >/dev/null + --pidfile "${pidfile}" -- "${opts}" >/dev/null else eval start-stop-daemon --start --exec /usr/sbin/pppd \ - --pidfile "/run/ppp-${IFACE}.pid" -- "${opts}" >/dev/null + --pidfile "${pidfile}" -- "${opts}" >/dev/null fi if ! eend $? "Failed to start PPP"; then @@ -243,9 +261,13 @@ pppd_start() pppd_stop() { yesno ${IN_BACKGROUND} && return 0 - local pidfile="/run/ppp-${IFACE}.pid" - [ ! -s "${pidfile}" ] && return 0 + local pidfile="$(pppd_pidfile)" + if [ ! -s "${pidfile}" ]; then + # Try the old path. + pidfile="/run/ppp-${IFACE}.pid" + [ -s "${pidfile}" ] || return 0 + fi # Give pppd at least 30 seconds do die, #147490 einfo "Stopping pppd on ${IFACE}" |