diff options
| author | jow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2010-05-01 11:08:03 +0000 | 
|---|---|---|
| committer | jow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2010-05-01 11:08:03 +0000 | 
| commit | ae44d0ee94268e6ad649dc5395da8d1a08406f18 (patch) | |
| tree | 97105d12c9857a220247f42ef5f73bcf7fe856e6 | |
| parent | d12f20b38d39ef59eb98f0cd67e6b10f7edb92e3 (diff) | |
[package] pppd:
	- localize variables in setup script
	- implement demand option as true boolean so that 0 actually disables it
	- don't overwrite user supplied dns servers if demand is enabled
	- toggle peerdns default value, use 1 if no user supplied dns server is set, 0 otherwise
	- reset resolv.conf.auto before setting up dns
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@21280 3c298f89-4303-0410-b956-a3cf2f4a3e73
| -rw-r--r-- | package/ppp/files/ppp.sh | 61 | 
1 files changed, 52 insertions, 9 deletions
| diff --git a/package/ppp/files/ppp.sh b/package/ppp/files/ppp.sh index 62f584fa8..c6440025b 100644 --- a/package/ppp/files/ppp.sh +++ b/package/ppp/files/ppp.sh @@ -65,40 +65,80 @@ start_pppd() {  	# /dev/ppp fast enough to be used here  	[ -e /dev/ppp ] || mknod /dev/ppp c 108 0 +	local device  	config_get device "$cfg" device + +	local unit  	config_get unit "$cfg" unit + +	local username  	config_get username "$cfg" username + +	local password  	config_get password "$cfg" password + +	local keepalive  	config_get keepalive "$cfg" keepalive +	local connect  	config_get connect "$cfg" connect + +	local disconnect  	config_get disconnect "$cfg" disconnect + +	local pppd_options  	config_get pppd_options "$cfg" pppd_options + +	local defaultroute  	config_get_bool defaultroute "$cfg" defaultroute 1  	[ "$defaultroute" -eq 1 ] && defaultroute="defaultroute replacedefaultroute" || defaultroute="" -	interval="${keepalive##*[, ]}" +	local interval="${keepalive##*[, ]}"  	[ "$interval" != "$keepalive" ] || interval=5 -	config_get_bool peerdns "$cfg" peerdns 1 -	[ "$peerdns" -eq 1 ] && peerdns="usepeerdns" || { +	local dns +	config_get dns "$config" dns + +	local has_dns=0 +	local peer_default=1 +	[ -n "$dns" ] && { +		has_dns=1 +		peer_default=0 +	} + +	local peerdns +	config_get_bool peerdns "$cfg" peerdns $peer_default + +	echo -n "" > /tmp/resolv.conf.auto + +	[ "$peerdns" -eq 1 ] && { +		peerdns="usepeerdns" +	} || {  		peerdns="" -		config_get dns "$config" dns  		for dns in $dns; do -			grep -q "$dns" /tmp/resolv.conf.auto 2>/dev/null || \ -				echo "nameserver $dns" >> /tmp/resolv.conf.auto +			echo "nameserver $dns" >> /tmp/resolv.conf.auto  		done  	} -	config_get demand "$cfg" demand -	[ -n "$demand" ] && echo "nameserver 1.1.1.1" > /tmp/resolv.conf.auto +	local demand +	config_get_bool demand "$cfg" demand 0 +	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 +	} || { +		demandargs="persist" +	} + +	local ipv6  	config_get_bool ipv6 "$cfg" ipv6 0  	[ "$ipv6" -eq 1 ] && ipv6="+ipv6" || ipv6=""  	/usr/sbin/pppd "$@" \  		${keepalive:+lcp-echo-interval $interval lcp-echo-failure ${keepalive%%[, ]*}} \ -		${demand:+precompiled-active-filter /etc/ppp/filter demand idle }${demand:-persist} \ +		$demandargs \  		$peerdns \  		$defaultroute \  		${username:+user "$username" password "$password"} \ @@ -117,9 +157,12 @@ setup_interface_ppp() {  	local iface="$1"  	local config="$2" +	local device  	config_get device "$config" device +	local mtu  	config_get mtu "$config" mtu +  	mtu=${mtu:-1492}  	start_pppd "$config" \  		mtu $mtu mru $mtu \ | 
