- 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=""
-
- start-stop-daemon -S -b -x /usr/sbin/pppd -m -p /var/run/ppp-$link.pid -- "$@" \
- ${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
+ 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