Skip to content

serfreeman1337/pppoe-l

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PPPoE-L

L, because I never get Ws. A PPPoE client for Linux.
May be used as drop-in replacement for pppd.

Features

  • Doesn't recreate PPP interface each time it reconnects, because I wanted it.
  • Can reconnect each IPv4 and IPv6 individually without reconnecting the session itself, but why.
  • Sets ppp interface operstate, so on the ip command, the PPP interface will have green "UP" state instead of gray "UNKNOWN".
  • Will send echo replies anyway when it's expected, so ISP will not disconnect halfway through game downloading from Steam, because their echo requests didn't make it.
  • pppoe-mac now sends initiation requests straight to that server, rather than waiting for offer, speeding up connecting to favorite server.
  • Supports Type=notify-reload for systemd service. The systemctl reload isp command now waits before session reconnects or fails.
  • Adds default route with proto kernel flag, so it will survive systemd-networkd reload without ManageForeignRoutes=no option set.

Usage

It supports some pppd options. To connect you will need to provide the interface and auth details:
./pppoe-l nic-wan user test password hunter2

Options

Option Default Description
nic-wan Use the specified interface wan to connect PPPoE.
pppoe-mac ff:ff:ff:ff:ff:ff PPPoE Server MAC address to connect to. Will fallback to any server if no response was received.
pppoe-padi-timeout 5 Time in seconds between discovery request retransmissions.
pppoe-padi-attempts 5 Number of discovery attempts before fallback to any server.
user (none) Username for authentication.
password (none) Password for authentication.
mru 0 Set MRU (maximum received packet size) for negotiation. 0 means interface MTU - 8.
mtu 0 Set PPP interface MTU. 0 means use negotiated MRU.
lcp-echo-interval 0 Time in seconds between LCP echo requests.
lcp-echo-failure 0 Number of consecutive echo requests without reply before reconnecting.
lcp-echo-adaptive 0 Don't send echo requests when echo requests from the server are received.
lcp-echo-expected 1 Always send echo reply when an echo request from the server was expected, but wasn't received.
lcp-restart 3 Time in seconds between retransmissions.
lcp-max-terminate 2 Number of terminate-request attempts before reconnecting.
lcp-max-configure 10 Number of configure-request attempts before reconnecting.
noip 0 Disable IPv4.
-ip 0 Same as noip.
defaultroute 1 Add default route for IPv4.
nodefaultroute 0 Don't add default route for IPv4.
+defaultroute 1 Same as defaultroute.
-defaultroute 0 Same as nodefaultroute.
defaultroute-metric 100 IPv4 default route metric.
ipv6 1 Enable IPv6.
+ipv6 1 Same as ipv6
noipv6 0 Disable IPv6.
-ipv6 0 Same as noipv6.
defaultroute6 0 Add default route for IPv6.
nodefaultroute6 1 Don't add default route for IPv6.
+defaultroute6 0 Same as defaultroute6
-defaultroute6 1 Same as nodefaultroute6
defaultroute6-metric 100 IPv6 default route metric.
call (file name) Take options from a /etc/ppp/peers file.
file (file name) Same as call.
-f (file name) Take options from a file.

Signals

kill -s (signal) $(pidof pppoe-l)

  • SIGINT - disconnect and exit.
  • SIGTERM - disconnect and exit.
  • SIGHUP - reload configuration and reconnect the session.
  • SIGUSR1 - reconnect IPv4 without reconnecting the session.
  • SIGUSR2 - reconnect IPv6 without reconnecting the session.
  • SIGPWR - disconnect IPv4.
  • SIGSYS - disconnect IPv6.

Build

cmake -B build -DCMAKE_BUILD_TYPE=Release && cmake --build build

About

A PPPoE client for Linux

Topics

Resources

License

Stars

Watchers

Forks

Contributors