[package] ppp:
authorJo-Philipp Wich <jow@openwrt.org>
Fri, 7 May 2010 01:22:48 +0000 (01:22 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Fri, 7 May 2010 01:22:48 +0000 (01:22 +0000)
- don't let pppd control resolv.conf.auto because it will wipe foreign dns entries
- handle dns setup in ip-up handler
- use add_dns() and remove_dns() to only add/remove dns entries related to the corresponding pppd instance
- make pppd shutdown work for interfaces without ifname option, e.g. pptp

SVN-Revision: 21392

package/ppp/Makefile
package/ppp/files/etc/ppp/ip-up
package/ppp/files/ppp.sh

index 66f72de21d86a671a5f35116bc07fc1b99aa3874..e90d4ccfaca36650240b4a3df2812cee16289333 100644 (file)
@@ -140,7 +140,7 @@ define Package/ppp/install
        $(INSTALL_BIN) ./files/etc/ppp/ipv6-up $(1)/etc/ppp/
        $(INSTALL_BIN) ./files/etc/ppp/ipv6-down $(1)/etc/ppp/
        $(INSTALL_DATA) ./files/etc/ppp/options $(1)/etc/ppp/
        $(INSTALL_BIN) ./files/etc/ppp/ipv6-up $(1)/etc/ppp/
        $(INSTALL_BIN) ./files/etc/ppp/ipv6-down $(1)/etc/ppp/
        $(INSTALL_DATA) ./files/etc/ppp/options $(1)/etc/ppp/
-       ln -sf /tmp/resolv.conf.auto $(1)/etc/ppp/resolv.conf
+       ln -sf /tmp/resolv.conf.ppp $(1)/etc/ppp/resolv.conf
 endef
        
 define Package/ppp-mod-pppoa/install
 endef
        
 define Package/ppp-mod-pppoa/install
index 4b44b25d0bab0f77179f7da6e8aac7e019ae5a71..38959295394bd811d499e99044202726ba5cbd9c 100755 (executable)
@@ -1,5 +1,8 @@
 #!/bin/sh
 #!/bin/sh
+
 . /etc/functions.sh
 . /etc/functions.sh
+. /lib/network/config.sh
+
 PPP_IFACE="$1"
 PPP_TTY="$2"
 PPP_SPEED="$3"
 PPP_IFACE="$1"
 PPP_TTY="$2"
 PPP_SPEED="$3"
@@ -14,8 +17,9 @@ export PPP_IFACE PPP_TTY PPP_SPEED PPP_LOCAL PPP_REMOTE PPP_IPPARAM
        uci_set_state network "$PPP_IPPARAM" gateway "$PPP_REMOTE"
 
        local dns="$DNS1${DNS2:+ $DNS2}"
        uci_set_state network "$PPP_IPPARAM" gateway "$PPP_REMOTE"
 
        local dns="$DNS1${DNS2:+ $DNS2}"
-       [ -n "$dns" ] && uci_set_state network "$PPP_IPPARAM" dns "$dns"
+       [ -n "$dns" ] && add_dns "$PPP_IPPARAM" $dns
 }
 }
+
 [ -z "$PPP_IPPARAM" ] || env -i ACTION="ifup" INTERFACE="$PPP_IPPARAM" DEVICE="$PPP_IFACE" PROTO=ppp /sbin/hotplug-call "iface"
 
 [ -d /etc/ppp/ip-up.d ] && {
 [ -z "$PPP_IPPARAM" ] || env -i ACTION="ifup" INTERFACE="$PPP_IPPARAM" DEVICE="$PPP_IFACE" PROTO=ppp /sbin/hotplug-call "iface"
 
 [ -d /etc/ppp/ip-up.d ] && {
index 42daef92201527d832570bf9d83610a02d16cac9..53cfb1be1aeb1a29988e502c6f1ded43364b4d93 100644 (file)
@@ -4,10 +4,7 @@ stop_interface_ppp() {
        local proto
        config_get proto "$cfg" proto
 
        local proto
        config_get proto "$cfg" proto
 
-       local ifname
-       config_get ifname "$cfg" ifname
-
-       local link="$proto-${ifname#$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
        [ -f "/var/run/ppp-${link}.pid" ] && {
                local pid="$(head -n1 /var/run/ppp-${link}.pid 2>/dev/null)"
                local try=0
@@ -18,6 +15,8 @@ stop_interface_ppp() {
                rm -f "/var/run/ppp-${link}.pid"
        }
 
                rm -f "/var/run/ppp-${link}.pid"
        }
 
+       remove_dns "$cfg"
+
        local lock="/var/lock/ppp-$link"
        [ -f "$lock" ] && lock -u "$lock"
 }
        local lock="/var/lock/ppp-$link"
        [ -f "$lock" ] && lock -u "$lock"
 }
@@ -85,17 +84,11 @@ start_pppd() {
        local peerdns
        config_get_bool peerdns "$cfg" peerdns $peer_default
 
        local peerdns
        config_get_bool peerdns "$cfg" peerdns $peer_default
 
-       if [ "$peerdns" -eq 1 ] || [ ! -e /tmp/resolv.conf.auto ]; then
-               echo -n "" > /tmp/resolv.conf.auto
-       fi
-
        [ "$peerdns" -eq 1 ] && {
                peerdns="usepeerdns"
        } || {
                peerdns=""
        [ "$peerdns" -eq 1 ] && {
                peerdns="usepeerdns"
        } || {
                peerdns=""
-               for dns in $dns; do
-                       echo "nameserver $dns" >> /tmp/resolv.conf.auto
-               done
+               add_dns "$cfg" $dns
        }
 
        local demand
        }
 
        local demand
@@ -104,8 +97,7 @@ start_pppd() {
        local demandargs
        [ "$demand" -eq 1 ] && {
                demandargs="precompiled-active-filter /etc/ppp/filter demand idle"
        local demandargs
        [ "$demand" -eq 1 ] && {
                demandargs="precompiled-active-filter /etc/ppp/filter demand idle"
-               [ "$has_dns" -eq 0 ] && \
-                       echo "nameserver 1.1.1.1" > /tmp/resolv.conf.auto
+               [ "$has_dns" -eq 0 ] && add_dns "$cfg" 1.1.1.1
        } || {
                demandargs="persist"
        }
        } || {
                demandargs="persist"
        }