diff options
| -rwxr-xr-x | package/netifd/files/lib/netifd/proto/ppp.sh | 183 | ||||
| -rw-r--r-- | package/ppp/Makefile | 39 | ||||
| -rw-r--r-- | package/ppp/files.old/etc/hotplug.d/atm/20-atm-modem (renamed from package/ppp/files/etc/hotplug.d/atm/20-atm-modem) | 0 | ||||
| -rwxr-xr-x | package/ppp/files.old/etc/ppp/ip-down (renamed from package/ppp/files/etc/ppp/ip-down) | 0 | ||||
| -rwxr-xr-x | package/ppp/files.old/etc/ppp/ip-up (renamed from package/ppp/files/etc/ppp/ip-up) | 0 | ||||
| -rw-r--r-- | package/ppp/files.old/etc/ppp/ipv6-down (renamed from package/ppp/files/etc/ppp/ipv6-down) | 0 | ||||
| -rw-r--r-- | package/ppp/files.old/etc/ppp/ipv6-up (renamed from package/ppp/files/etc/ppp/ipv6-up) | 0 | ||||
| -rw-r--r-- | package/ppp/files.old/ppp.sh | 145 | ||||
| -rw-r--r-- | package/ppp/files.old/pppoa.sh (renamed from package/ppp/files/pppoa.sh) | 0 | ||||
| -rw-r--r-- | package/ppp/files.old/pppoe.sh (renamed from package/ppp/files/pppoe.sh) | 0 | ||||
| -rwxr-xr-x[-rw-r--r--] | package/ppp/files/ppp.sh | 270 | 
11 files changed, 324 insertions, 313 deletions
diff --git a/package/netifd/files/lib/netifd/proto/ppp.sh b/package/netifd/files/lib/netifd/proto/ppp.sh deleted file mode 100755 index 5f549bf6e..000000000 --- a/package/netifd/files/lib/netifd/proto/ppp.sh +++ /dev/null @@ -1,183 +0,0 @@ -#!/bin/sh - -[ -x /usr/sbin/pppd ] || exit 0 - -[ -n "$INCLUDE_ONLY" ] || { -	. /etc/functions.sh -	. ../netifd-proto.sh -	init_proto "$@" -} - -ppp_generic_init_config() { -	proto_config_add_string "username" -	proto_config_add_string "password" -	proto_config_add_string "keepalive" -	proto_config_add_int "demand" -	proto_config_add_string "pppd_options" -	proto_config_add_string "connect" -	proto_config_add_string "disconnect" -	proto_config_add_boolean "defaultroute" -	proto_config_add_boolean "peerdns" -	proto_config_add_boolean "ipv6" -	proto_config_add_int "mtu" -} - -ppp_generic_setup() { -	local config="$1"; shift - -	json_get_var ipv6 ipv6 -	[ "$ipv6" = 1 ] || ipv6="" - -	json_get_var peerdns peerdns -	[ "$peerdns" = 0 ] && peerdns="" || peerdns="1" - -	json_get_var defaultroute defaultroute -	if [ "$defaultroute" = 1 ]; then -		defaultroute="defaultroute replacedefaultroute"; -	else -		defaultroute="nodefaultroute" -	fi - -	json_get_var demand demand -	if [ "${demand:-0}" -gt 0 ]; then -		demand="precompiled-active-filter /etc/ppp/filter demand idle $demand" -	else -		demand="persist" -	fi - -	[ -n "$mtu" ] || json_get_var mtu mtu - -	json_get_var keepalive keepalive -	local interval="${keepalive##*[, ]}" -	[ "$interval" != "$keepalive" ] || interval=5 - -	json_get_var username username -	json_get_var password password - -	[ -n "$connect" ] || json_get_var connect connect -	[ -n "$disconnect" ] || json_get_var disconnect disconnect -	json_get_var pppd_options pppd_options - -	proto_run_command "$config" /usr/sbin/pppd \ -		nodetach ipparam "$config" \ -		ifname "${proto:-ppp}-$config" \ -		${keepalive:+lcp-echo-interval $interval lcp-echo-failure ${keepalive%%[, ]*}} \ -		${ipv6:++ipv6} $defaultroute \ -		${peerdns:+usepeerdns} \ -		$demand maxfail 1 \ -		${username:+user "$username" password "$password"} \ -		${connect:+connect "$connect"} \ -		${disconnect:+disconnect "$disconnect"} \ -		ip-up-script /lib/netifd/ppp-up \ -		ipv6-up-script /lib/netifd/ppp-up \ -		ip-down-script /lib/netifd/ppp-down \ -		ipv6-down-script /lib/netifd/ppp-down \ -		${mtu:+mtu $mtu mru $mtu} \ -		$pppd_options "$@" -} - -ppp_generic_teardown() { -	local interface="$1" - -	case "$ERROR" in -		11|19) -			proto_notify_error "$interface" AUTH_FAILED -			proto_block_restart "$interface" -		;; -	esac -	proto_kill_command "$interface" -} - -# PPP on serial device - -proto_ppp_init_config() { -	proto_config_add_string "device" -	ppp_generic_init_config -	no_device=1 -	available=1 -} - -proto_ppp_setup() { -	local config="$1" - -	json_get_var device device -	ppp_generic_setup "$config" "$device" -} - -proto_ppp_teardown() { -	ppp_generic_teardown "$@" -} - -proto_pppoe_init_config() { -	ppp_generic_init_config -	proto_config_add_string "ac" -	proto_config_add_string "service" -} - -proto_pppoe_setup() { -	local config="$1" -	local iface="$2" - -	for module in slhc ppp_generic pppox pppoe; do -		/sbin/insmod $module 2>&- >&- -	done - -	json_get_var mtu mtu -	mtu="${mtu:-1492}" - -	json_get_var ac ac -	json_get_var service service - -	ppp_generic_setup "$config" \ -		plugin rp-pppoe.so \ -		${ac:+rp_pppoe_ac "$ac"} \ -		${service:+rp_pppoe_service "$service"} \ -		"nic-$iface" -} - -proto_pppoe_teardown() { -	ppp_generic_teardown "$@" -} - -proto_pppoa_init_config() { -	ppp_generic_init_config -	proto_config_add_int "atmdev" -	proto_config_add_int "vci" -	proto_config_add_int "vpi" -	proto_config_add_string "encaps" -} - -proto_pppoa_setup() { -	local config="$1" -	local iface="$2" - -	for module in slhc ppp_generic pppox pppoatm; do -		/sbin/insmod $module 2>&- >&- -	done - -	json_get_var atmdev atmdev -	json_get_var vci vci -	json_get_var vpi vpi - -	json_get_var encaps encaps -	case "$encaps" in -		1|vc) encaps="vc-encaps" ;; -		*) encaps="llc-encaps" ;; -	esac - -	ppp_generic_setup "$config" \ -		plugin pppoatm.so \ -		${atmdev:+$atmdev.}${vpi:-8}.${vci:-35} \ -		${encaps} -} - -proto_pppoa_teardown() { -	ppp_generic_teardown "$@" -} - -[ -n "$INCLUDE_ONLY" ] || { -	add_protocol ppp -	[ -f /usr/lib/pppd/*/rp-pppoe.so ] && add_protocol pppoe -	[ -f /usr/lib/pppd/*/pppoatm.so ] && add_protocol pppoa -} - diff --git a/package/ppp/Makefile b/package/ppp/Makefile index e41e87730..4ace4d936 100644 --- a/package/ppp/Makefile +++ b/package/ppp/Makefile @@ -156,23 +156,40 @@ define Build/InstallDev  	$(CP) $(PKG_INSTALL_DIR)/include/pppd $(1)/usr/include/  endef +ifneq ($(CONFIG_PACKAGE_netifd),) +  define Package/ppp/script_install +	$(INSTALL_DIR) $(1)/lib/netifd/proto +	$(INSTALL_BIN) ./files/ppp.sh $(1)/lib/netifd/proto/ +  endef +else +  define Package/ppp/script_install +	$(INSTALL_DIR) $(1)/lib/network +	$(INSTALL_BIN) ./files.old/ppp.sh $(1)/lib/network/ +	$(INSTALL_BIN) ./files.old/etc/ppp/ip-up $(1)/etc/ppp/ +	$(INSTALL_DIR) $(1)/etc/ppp/ip-up.d +	$(INSTALL_BIN) ./files.old/etc/ppp/ip-down $(1)/etc/ppp/ +	$(INSTALL_DIR) $(1)/etc/ppp/ip-down.d +	$(INSTALL_BIN) ./files.old/etc/ppp/ipv6-up $(1)/etc/ppp/ +	$(INSTALL_BIN) ./files.old/etc/ppp/ipv6-down $(1)/etc/ppp/ +	$(INSTALL_DIR) $(1)/lib/network +	$(INSTALL_BIN) ./files.old/pppoe.sh $(1)/lib/network/ +	$(INSTALL_DIR) $(1)/lib/network +	$(INSTALL_BIN) ./files.old/pppoa.sh $(1)/lib/network/ +	$(INSTALL_DIR) $(1)/etc/hotplug.d/atm +	$(INSTALL_DATA) ./files.old/etc/hotplug.d/atm/20-atm-modem $(1)/etc/hotplug.d/atm/ +  endef +endif +  define Package/ppp/install  	$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_VERSION)  	$(INSTALL_DIR) $(1)/usr/sbin  	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/sbin/pppd $(1)/usr/sbin/ -	$(INSTALL_DIR) $(1)/lib/network -	$(INSTALL_BIN) ./files/ppp.sh $(1)/lib/network/  	$(INSTALL_DIR) $(1)/etc/ppp  	$(INSTALL_CONF) ./files/etc/ppp/chap-secrets $(1)/etc/ppp/  	$(INSTALL_DATA) ./files/etc/ppp/filter $(1)/etc/ppp/ -	$(INSTALL_BIN) ./files/etc/ppp/ip-up $(1)/etc/ppp/ -	$(INSTALL_DIR) $(1)/etc/ppp/ip-up.d -	$(INSTALL_BIN) ./files/etc/ppp/ip-down $(1)/etc/ppp/ -	$(INSTALL_DIR) $(1)/etc/ppp/ip-down.d -	$(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.ppp $(1)/etc/ppp/resolv.conf +	$(Package/ppp/script_install)  endef  Package/ppp-multilink/install=$(Package/ppp/install) @@ -180,18 +197,12 @@ define Package/ppp-mod-pppoa/install  	$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_VERSION)  	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_VERSION)/pppoatm.so \  		$(1)/usr/lib/pppd/$(PKG_VERSION)/ -	$(INSTALL_DIR) $(1)/lib/network -	$(INSTALL_BIN) ./files/pppoa.sh $(1)/lib/network/ -	$(INSTALL_DIR) $(1)/etc/hotplug.d/atm -	$(INSTALL_DATA) ./files/etc/hotplug.d/atm/20-atm-modem $(1)/etc/hotplug.d/atm/  endef  define Package/ppp-mod-pppoe/install  	$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_VERSION)  	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_VERSION)/rp-pppoe.so \  		$(1)/usr/lib/pppd/$(PKG_VERSION)/ -	$(INSTALL_DIR) $(1)/lib/network -	$(INSTALL_BIN) ./files/pppoe.sh $(1)/lib/network/  endef  define Package/ppp-mod-radius/install diff --git a/package/ppp/files/etc/hotplug.d/atm/20-atm-modem b/package/ppp/files.old/etc/hotplug.d/atm/20-atm-modem index 4fd9b9c66..4fd9b9c66 100644 --- a/package/ppp/files/etc/hotplug.d/atm/20-atm-modem +++ b/package/ppp/files.old/etc/hotplug.d/atm/20-atm-modem diff --git a/package/ppp/files/etc/ppp/ip-down b/package/ppp/files.old/etc/ppp/ip-down index 487ff6b46..487ff6b46 100755 --- a/package/ppp/files/etc/ppp/ip-down +++ b/package/ppp/files.old/etc/ppp/ip-down diff --git a/package/ppp/files/etc/ppp/ip-up b/package/ppp/files.old/etc/ppp/ip-up index 353f66789..353f66789 100755 --- a/package/ppp/files/etc/ppp/ip-up +++ b/package/ppp/files.old/etc/ppp/ip-up diff --git a/package/ppp/files/etc/ppp/ipv6-down b/package/ppp/files.old/etc/ppp/ipv6-down index 436b91ded..436b91ded 100644 --- a/package/ppp/files/etc/ppp/ipv6-down +++ b/package/ppp/files.old/etc/ppp/ipv6-down diff --git a/package/ppp/files/etc/ppp/ipv6-up b/package/ppp/files.old/etc/ppp/ipv6-up index 5162455fa..5162455fa 100644 --- a/package/ppp/files/etc/ppp/ipv6-up +++ b/package/ppp/files.old/etc/ppp/ipv6-up diff --git a/package/ppp/files.old/ppp.sh b/package/ppp/files.old/ppp.sh new file mode 100644 index 000000000..e26749ebc --- /dev/null +++ b/package/ppp/files.old/ppp.sh @@ -0,0 +1,145 @@ +stop_interface_ppp() { +	local cfg="$1" + +	local proto +	config_get proto "$cfg" proto + +	local link="$proto-$cfg" +	SERVICE_PID_FILE="/var/run/ppp-${link}.pid" \ +	service_stop /usr/sbin/pppd + +	remove_dns "$cfg" + +	local lock="/var/lock/ppp-$link" +	[ -f "$lock" ] && lock -u "$lock" +} + +start_pppd() { +	local cfg="$1"; shift + +	# Workaround for PPPoE service and AC name options, +	# filter out the nic-* argument and append it as last option +	local nic="" +	case "$1" in +		nic-*) nic="$1"; shift ;; +	esac + +	local proto +	config_get proto "$cfg" proto + +	# unique link identifier +	local link="${proto:-ppp}-$cfg" + +	# make sure only one pppd process is started +	lock "/var/lock/ppp-${link}" +	SERVICE_PID_FILE="/var/run/ppp-${link}.pid" \ +	service_check /usr/sbin/pppd && { +		lock -u "/var/lock/ppp-${link}" +		return 0 +	} + +	# Workaround: sometimes hotplug2 doesn't deliver the hotplug event for creating +	# /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 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="nodefaultroute" + +	local interval="${keepalive##*[, ]}" +	[ "$interval" != "$keepalive" ] || interval=5 + +	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 + +	[ "$peerdns" -eq 1 ] && { +		peerdns="usepeerdns" +	} || { +		peerdns="" +		add_dns "$cfg" $dns +	} + +	local demand +	config_get demand "$cfg" demand 0 + +	local demandargs +	[ "$demand" -gt 0 ] && { +		demandargs="precompiled-active-filter /etc/ppp/filter demand idle $demand" +		[ "$has_dns" -eq 0 ] && add_dns "$cfg" 1.1.1.1 +	} || { +		demandargs="persist" +	} + +	local ipv6 +	config_get_bool ipv6 "$cfg" ipv6 0 +	[ "$ipv6" -eq 1 ] && ipv6="+ipv6" || ipv6="" + +	SERVICE_DAEMONIZE=1 \ +	SERVICE_WRITE_PID=1 \ +	SERVICE_PID_FILE="/var/run/ppp-$link.pid" \ +	service_start /usr/sbin/pppd "$@" \ +		${keepalive:+lcp-echo-interval $interval lcp-echo-failure ${keepalive%%[, ]*}} \ +		$demandargs \ +		$peerdns \ +		$defaultroute \ +		${username:+user "$username" password "$password"} \ +		ipparam "$cfg" \ +		ifname "$link" \ +		${connect:+connect "$connect"} \ +		${disconnect:+disconnect "$disconnect"} \ +		${ipv6} \ +		${pppd_options} \ +		nodetach \ +		${nic} + +	lock -u "/var/lock/ppp-${link}" +} + +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 \ +		"$device" +} + diff --git a/package/ppp/files/pppoa.sh b/package/ppp/files.old/pppoa.sh index dbb6eb00e..dbb6eb00e 100644 --- a/package/ppp/files/pppoa.sh +++ b/package/ppp/files.old/pppoa.sh diff --git a/package/ppp/files/pppoe.sh b/package/ppp/files.old/pppoe.sh index ea3dc6cf0..ea3dc6cf0 100644 --- a/package/ppp/files/pppoe.sh +++ b/package/ppp/files.old/pppoe.sh diff --git a/package/ppp/files/ppp.sh b/package/ppp/files/ppp.sh index e26749ebc..5f549bf6e 100644..100755 --- a/package/ppp/files/ppp.sh +++ b/package/ppp/files/ppp.sh @@ -1,145 +1,183 @@ -stop_interface_ppp() { -	local cfg="$1" +#!/bin/sh -	local proto -	config_get proto "$cfg" proto +[ -x /usr/sbin/pppd ] || exit 0 -	local link="$proto-$cfg" -	SERVICE_PID_FILE="/var/run/ppp-${link}.pid" \ -	service_stop /usr/sbin/pppd +[ -n "$INCLUDE_ONLY" ] || { +	. /etc/functions.sh +	. ../netifd-proto.sh +	init_proto "$@" +} + +ppp_generic_init_config() { +	proto_config_add_string "username" +	proto_config_add_string "password" +	proto_config_add_string "keepalive" +	proto_config_add_int "demand" +	proto_config_add_string "pppd_options" +	proto_config_add_string "connect" +	proto_config_add_string "disconnect" +	proto_config_add_boolean "defaultroute" +	proto_config_add_boolean "peerdns" +	proto_config_add_boolean "ipv6" +	proto_config_add_int "mtu" +} + +ppp_generic_setup() { +	local config="$1"; shift + +	json_get_var ipv6 ipv6 +	[ "$ipv6" = 1 ] || ipv6="" + +	json_get_var peerdns peerdns +	[ "$peerdns" = 0 ] && peerdns="" || peerdns="1" + +	json_get_var defaultroute defaultroute +	if [ "$defaultroute" = 1 ]; then +		defaultroute="defaultroute replacedefaultroute"; +	else +		defaultroute="nodefaultroute" +	fi + +	json_get_var demand demand +	if [ "${demand:-0}" -gt 0 ]; then +		demand="precompiled-active-filter /etc/ppp/filter demand idle $demand" +	else +		demand="persist" +	fi + +	[ -n "$mtu" ] || json_get_var mtu mtu -	remove_dns "$cfg" +	json_get_var keepalive keepalive +	local interval="${keepalive##*[, ]}" +	[ "$interval" != "$keepalive" ] || interval=5 + +	json_get_var username username +	json_get_var password password -	local lock="/var/lock/ppp-$link" -	[ -f "$lock" ] && lock -u "$lock" +	[ -n "$connect" ] || json_get_var connect connect +	[ -n "$disconnect" ] || json_get_var disconnect disconnect +	json_get_var pppd_options pppd_options + +	proto_run_command "$config" /usr/sbin/pppd \ +		nodetach ipparam "$config" \ +		ifname "${proto:-ppp}-$config" \ +		${keepalive:+lcp-echo-interval $interval lcp-echo-failure ${keepalive%%[, ]*}} \ +		${ipv6:++ipv6} $defaultroute \ +		${peerdns:+usepeerdns} \ +		$demand maxfail 1 \ +		${username:+user "$username" password "$password"} \ +		${connect:+connect "$connect"} \ +		${disconnect:+disconnect "$disconnect"} \ +		ip-up-script /lib/netifd/ppp-up \ +		ipv6-up-script /lib/netifd/ppp-up \ +		ip-down-script /lib/netifd/ppp-down \ +		ipv6-down-script /lib/netifd/ppp-down \ +		${mtu:+mtu $mtu mru $mtu} \ +		$pppd_options "$@"  } -start_pppd() { -	local cfg="$1"; shift +ppp_generic_teardown() { +	local interface="$1" -	# Workaround for PPPoE service and AC name options, -	# filter out the nic-* argument and append it as last option -	local nic="" -	case "$1" in -		nic-*) nic="$1"; shift ;; +	case "$ERROR" in +		11|19) +			proto_notify_error "$interface" AUTH_FAILED +			proto_block_restart "$interface" +		;;  	esac +	proto_kill_command "$interface" +} -	local proto -	config_get proto "$cfg" proto +# PPP on serial device -	# unique link identifier -	local link="${proto:-ppp}-$cfg" +proto_ppp_init_config() { +	proto_config_add_string "device" +	ppp_generic_init_config +	no_device=1 +	available=1 +} -	# make sure only one pppd process is started -	lock "/var/lock/ppp-${link}" -	SERVICE_PID_FILE="/var/run/ppp-${link}.pid" \ -	service_check /usr/sbin/pppd && { -		lock -u "/var/lock/ppp-${link}" -		return 0 -	} +proto_ppp_setup() { +	local config="$1" -	# Workaround: sometimes hotplug2 doesn't deliver the hotplug event for creating -	# /dev/ppp fast enough to be used here -	[ -e /dev/ppp ] || mknod /dev/ppp c 108 0 +	json_get_var device device +	ppp_generic_setup "$config" "$device" +} -	local device -	config_get device "$cfg" device +proto_ppp_teardown() { +	ppp_generic_teardown "$@" +} -	local username -	config_get username "$cfg" username +proto_pppoe_init_config() { +	ppp_generic_init_config +	proto_config_add_string "ac" +	proto_config_add_string "service" +} -	local password -	config_get password "$cfg" password +proto_pppoe_setup() { +	local config="$1" +	local iface="$2" -	local keepalive -	config_get keepalive "$cfg" keepalive +	for module in slhc ppp_generic pppox pppoe; do +		/sbin/insmod $module 2>&- >&- +	done -	local connect -	config_get connect "$cfg" connect +	json_get_var mtu mtu +	mtu="${mtu:-1492}" -	local disconnect -	config_get disconnect "$cfg" disconnect +	json_get_var ac ac +	json_get_var service service -	local pppd_options -	config_get pppd_options "$cfg" pppd_options +	ppp_generic_setup "$config" \ +		plugin rp-pppoe.so \ +		${ac:+rp_pppoe_ac "$ac"} \ +		${service:+rp_pppoe_service "$service"} \ +		"nic-$iface" +} -	local defaultroute -	config_get_bool defaultroute "$cfg" defaultroute 1 -	[ "$defaultroute" -eq 1 ] && \ -		defaultroute="defaultroute replacedefaultroute" || defaultroute="nodefaultroute" +proto_pppoe_teardown() { +	ppp_generic_teardown "$@" +} -	local interval="${keepalive##*[, ]}" -	[ "$interval" != "$keepalive" ] || interval=5 +proto_pppoa_init_config() { +	ppp_generic_init_config +	proto_config_add_int "atmdev" +	proto_config_add_int "vci" +	proto_config_add_int "vpi" +	proto_config_add_string "encaps" +} -	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 - -	[ "$peerdns" -eq 1 ] && { -		peerdns="usepeerdns" -	} || { -		peerdns="" -		add_dns "$cfg" $dns -	} - -	local demand -	config_get demand "$cfg" demand 0 - -	local demandargs -	[ "$demand" -gt 0 ] && { -		demandargs="precompiled-active-filter /etc/ppp/filter demand idle $demand" -		[ "$has_dns" -eq 0 ] && add_dns "$cfg" 1.1.1.1 -	} || { -		demandargs="persist" -	} - -	local ipv6 -	config_get_bool ipv6 "$cfg" ipv6 0 -	[ "$ipv6" -eq 1 ] && ipv6="+ipv6" || ipv6="" - -	SERVICE_DAEMONIZE=1 \ -	SERVICE_WRITE_PID=1 \ -	SERVICE_PID_FILE="/var/run/ppp-$link.pid" \ -	service_start /usr/sbin/pppd "$@" \ -		${keepalive:+lcp-echo-interval $interval lcp-echo-failure ${keepalive%%[, ]*}} \ -		$demandargs \ -		$peerdns \ -		$defaultroute \ -		${username:+user "$username" password "$password"} \ -		ipparam "$cfg" \ -		ifname "$link" \ -		${connect:+connect "$connect"} \ -		${disconnect:+disconnect "$disconnect"} \ -		${ipv6} \ -		${pppd_options} \ -		nodetach \ -		${nic} +proto_pppoa_setup() { +	local config="$1" +	local iface="$2" -	lock -u "/var/lock/ppp-${link}" -} +	for module in slhc ppp_generic pppox pppoatm; do +		/sbin/insmod $module 2>&- >&- +	done -setup_interface_ppp() { -	local iface="$1" -	local config="$2" +	json_get_var atmdev atmdev +	json_get_var vci vci +	json_get_var vpi vpi -	local device -	config_get device "$config" device +	json_get_var encaps encaps +	case "$encaps" in +		1|vc) encaps="vc-encaps" ;; +		*) encaps="llc-encaps" ;; +	esac + +	ppp_generic_setup "$config" \ +		plugin pppoatm.so \ +		${atmdev:+$atmdev.}${vpi:-8}.${vci:-35} \ +		${encaps} +} -	local mtu -	config_get mtu "$config" mtu +proto_pppoa_teardown() { +	ppp_generic_teardown "$@" +} -	mtu=${mtu:-1492} -	start_pppd "$config" \ -		mtu $mtu mru $mtu \ -		"$device" +[ -n "$INCLUDE_ONLY" ] || { +	add_protocol ppp +	[ -f /usr/lib/pppd/*/rp-pppoe.so ] && add_protocol pppoe +	[ -f /usr/lib/pppd/*/pppoatm.so ] && add_protocol pppoa  }  | 
