1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-11-27 19:37:10 +02:00

/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

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@20221 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
thepeople 2010-03-14 21:42:56 +00:00
parent 1f2f21c1d0
commit 6772ab104f
2 changed files with 71 additions and 9 deletions

View File

@ -1,14 +1,43 @@
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
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}"
[ "$pppdev" -le "$unit" ] && pppdev="$(($unit + 1))"
else
pppdev="$(($pppdev + 1))"
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"

View File

@ -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
}