pppoed(8) on Solnix vs Linux and the BSDs
pppoed is the illumos PPPoE server daemon, published in pkgs.solnix.illumos-world-man. It is configured through keyword options in /etc/ppp/pppoe files and starts pppd(8) for each client. FreeBSD pppoed instead takes dash flags and one interface name, and starts ppp(8) through netgraph.
The manual pages
- Solnix: pppoed(8) from
pkgs.solnix.illumos-world-man· illumos.org - FreeBSD: pppoed(8) 15.1-RELEASE
What Solnix runs
A default Solnix system runs the illumos pppoed. It lives under /usr/lib, not in /usr/bin, /usr/sbin or /sbin, and no other variants are shipped. The Solnix SYNOPSIS spells the command 'ppoed [options]', which looks like a typo. The bundle has no Linux, OpenBSD or NetBSD counterpart page, so only FreeBSD is compared.
Differences
| Compared with | Topic | What differs |
|---|---|---|
| FreeBSD | how it is configured | Solnix pppoed reads keyword options (service, device, client and so on) from the command line, /etc/ppp/pppoe and per-device /etc/ppp/pppoe.device files, and rereads them on SIGHUP. FreeBSD takes dash flags and a single interface argument; the manual documents no config file.Source: Solnix pppoed(8) DESCRIPTION, OPTIONS; FreeBSD pppoed(8) SYNOPSIS, DESCRIPTION |
| FreeBSD | flags do not carry over | The Solnix page documents no dash flags, only keyword options. FreeBSD's -F, -P, -a, -d, -e, -l, -n and -p do not exist as such on Solnix, so a FreeBSD command line will not work there.Source: Solnix pppoed(8) OPTIONS; FreeBSD pppoed(8) SYNOPSIS |
| FreeBSD | PPP program started per client | Solnix starts pppd(8) for each client, by default /usr/bin/pppd (path option) with extra options 'plugin pppoe.so directtty'. FreeBSD runs 'exec /usr/sbin/ppp -direct label' after the netgraph pppoe node reports SUCCESS; -e or -l change this.Source: Solnix pppoed(8) DESCRIPTION, extra, path, pppd; FreeBSD pppoed(8) DESCRIPTION, -e, -l |
| FreeBSD | interface preparation | On Solnix, the Ethernet interface must be plumbed for PPPoE with sppptun(8) before services can be offered. On FreeBSD, pppoed itself attaches a 'pppoe' netgraph node to the 'ether' node named 'interface:'. Source: Solnix pppoed(8) NOTES; FreeBSD pppoed(8) DESCRIPTION |
| FreeBSD | interfaces served | Solnix services are bound to devices with the device option, a comma-separated list of logical device names such as hme0. FreeBSD pppoed takes exactly one interface argument. FreeBSD fails to start if another netgraph node already uses that interface. Source: Solnix pppoed(8) device; FreeBSD pppoed(8) SYNOPSIS, BUGS |
| FreeBSD | access concentrator name default | Solnix server defaults to "Solaris PPPoE". FreeBSD -a name defaults to the current base hostname when no name is given.Source: Solnix pppoed(8) server; FreeBSD pppoed(8) DESCRIPTION, -a |
| FreeBSD | service selection | Solnix defines named services with service name, and includes them in responses to 'any' requests by default; nowildcard requires the client to ask by name. FreeBSD offers one -p provider, empty if omitted, and '*' accepts any request.Source: Solnix pppoed(8) service, wildcard, nowildcard; FreeBSD pppoed(8) DESCRIPTION, -p |
| FreeBSD | client access control | Solnix has a client [except] client-list option that matches symbolic names (via /etc/ethers or NIS) or Ethernet addresses with '*' wildcards. The FreeBSD page documents no client filtering.Source: Solnix pppoed(8) client; FreeBSD pppoed(8) DESCRIPTION |
| FreeBSD | logging and debugging | Solnix has debug levels 0 to 4, default 1 (errors only), logged to syslog(3C) facility daemon or to a file via log. FreeBSD -d adds diagnostics and -n ngdebug calls NgSetDebug(). The FreeBSD page refers to syslog.conf(5).Source: Solnix pppoed(8) debug, nodebug, log; FreeBSD pppoed(8) DESCRIPTION, -d, -n, SEE ALSO |
| FreeBSD | signals and pid file | Solnix rereads options on SIGHUP and, on SIGINT, dumps status to /tmp/pppoed.pid. The page text shown does not document a pid-file or foreground option. FreeBSD -P writes a real pid file, and -F keeps pppoed in the foreground; otherwise it daemonizes.Source: Solnix pppoed(8) DESCRIPTION; FreeBSD pppoed(8) DESCRIPTION, -P, -F |
| FreeBSD | environment for the child | FreeBSD sets HISMACADDR (peer MAC) and ACNAME (AC name) for the child. Solnix passes variables you set with NEWVAR=string in the option files to each pppd. The manual does not say it sets HISMACADDR or ACNAME. Source: FreeBSD pppoed(8) DESCRIPTION; Solnix pppoed(8) DESCRIPTION |
| FreeBSD | running as non-root | Solnix pppoed need not run as root because pppd is setuid root. The user and group options set pppd's IDs and are ignored when pppoed is not root. The FreeBSD page does not discuss this. Source: Solnix pppoed(8) NOTES, group, user; FreeBSD pppoed(8) DESCRIPTION |
Standards
- POSIX: pppoed is not a POSIX.1-2024 utility.
- Solnix: The page's SEE ALSO cites RFC 2516, A Method for Transmitting PPP Over Ethernet (PPPoE), Network Working Group, February 1999.
- FreeBSD: The FreeBSD page has no STANDARDS section in the bundle. HISTORY says pppoed first appeared in FreeBSD 3.4.
Writing portable scripts
- Do not share pppoed command lines or config between Solnix and FreeBSD. Solnix uses
/etc/ppp/pppoekeyword files and pppd; FreeBSD uses flags plus a netgraph interface and ppp(8).
Every difference here is taken from the manual pages linked above: Solnix's published page, Linux (man-pages and the GNU and util-linux manuals), FreeBSD, OpenBSD and NetBSD. Each row names its source. Where a manual is silent, this page is too. Compiled 2026-10-26. Found a mistake? Mail hackers@lists.solnix.io.