/lib/network/ppp.sh fixes a problem with PPtP (and other PPP-based things) where PPtP + PPPoE will fail to work. This is because PPtP defaults to ppp0 and so does PPPoE, because /etc/init.d/ppp reinitializes the unit counter for each PPP-type connection (so you could have multiple PPtP over cable, for instance, but PPPoE + PPtP is a problem).

/etc/init.d/ppp automatically starts pptp session on boot., from #6720

SVN-Revision: 20221
master
Travis Kemen 15 years ago
parent 3a13fb95ab
commit 1223494f1d
  1. 47
      package/ppp/files/ppp.sh
  2. 33
      package/pptp/files/pptp.init

@ -1,15 +1,44 @@
scan_ppp() {
config_get ifname "$1" ifname
pppdev="${pppdev:-0}"
config_get unit "$1" unit
[ -z "$unit" ] && {
unit="$pppdev"
if [ "${ifname%%[0-9]*}" = ppp ]; then
unit="${ifname##ppp}"
[ "$pppdev" -le "$unit" ] && pppdev="$(($unit + 1))"
else
pppdev="$(($pppdev + 1))"
fi
config_get devunit "$1" unit
{
unit=
pppif=
if [ ! -d /tmp/.ppp-counter ]; then
mkdir -p /tmp/.ppp-counter
fi
local maxunit
maxunit="$(cat /tmp/.ppp-counter/max-unit 2>/dev/null)"
if [ -z "$maxunit" ]; then
maxunit=-1
fi
local i
i=0
while [ $i -le $maxunit ]; do
local unitdev
unitdev="$(cat /tmp/.ppp-counter/ppp${i} 2>/dev/null)"
if [ "$unitdev" = "$1" ]; then
unit="$i"
pppif="ppp${i}"
break
fi
i="$(($i + 1))"
done
if [ -z "$unit" ] || [ -z "$pppif" ]; then
maxunit="$(($maxunit + 1))"
if [ -n "$devunit" ]; then
unit="$devunit"
elif [ "${ifname%%[0-9]*}" = ppp ]; then
unit="${ifname##ppp}"
else
unit="$maxunit"
fi
[ "$maxunit" -lt "$unit" ] && maxunit="$unit"
pppif="ppp${unit}"
echo "$1" >/tmp/.ppp-counter/$pppif 2>/dev/null
echo "$maxunit" >/tmp/.ppp-counter/max-unit 2>/dev/null
fi
config_set "$1" ifname "ppp$unit"
config_set "$1" unit "$unit"
}

@ -0,0 +1,33 @@
#!/bin/sh /etc/rc.common
# Copyright (C) 2006 OpenWrt.org
START=41
STOP=30
updown_pptp_interface () {
config_get proto "$1" proto
if [ "$proto" = "pptp" ]; then
if$2 "$1"
fi
}
boot () {
start
}
start() {
config_load network
config_foreach updown_pptp_interface interface up
}
restart() {
config_load network
config_foreach updown_pptp_interface interface down
config_foreach updown_pptp_interface interface up
}
stop() {
config_load network
config_foreach updown_pptp_interface interface down
}
Loading…
Cancel
Save