# Copyright 2019-present Open Networking Foundation
#
# SPDX-License-Identifier: Apache-2.0

# Configuration file for PPP, using PPP over Ethernet
# See the manual page pppd(8) for information on all the options.

# Use the pppoe program to send the ppp packets over the Ethernet link
# This line should work fine if this computer is the only one accessing
# the Internet through this DSL connection. This is the right line to use
# for most people.
pty "/usr/sbin/pppoe -I eth0 -T 80 -m 1452"

# Assumes that your IP address is allocated dynamically
# by your DSL provider...
noipdefault

# Use this connection as the default route.
# Comment out if you already have the correct default route installed.
defaultroute

# Override any connect script that may have been set in /etc/ppp/options.
connect /bin/true
noauth
persist
mtu 1492

# RFC 2516, paragraph 7 mandates that the following options MUST NOT be
# requested and MUST be rejected if requested by the peer:
# Address-and-Control-Field-Compression (ACFC)
noaccomp
# Asynchronous-Control-Character-Map (ACCM)
default-asyncmap

hide-password
lcp-echo-interval 20
lcp-echo-failure 3

plugin rp-pppoe.so
nic-veth1
nomagic

user SEBA
password rocks
