mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-11-27 17:15:00 +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:
parent
1f2f21c1d0
commit
6772ab104f
@ -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"
|
||||
}
|
||||
|
33
package/pptp/files/pptp.init
Normal file
33
package/pptp/files/pptp.init
Normal 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
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user