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.

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 withTopicWhat differs
FreeBSDhow it is configuredSolnix 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
FreeBSDflags do not carry overThe 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
FreeBSDPPP program started per clientSolnix 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
FreeBSDinterface preparationOn 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
FreeBSDinterfaces servedSolnix 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
FreeBSDaccess concentrator name defaultSolnix 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
FreeBSDservice selectionSolnix 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
FreeBSDclient access controlSolnix 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
FreeBSDlogging and debuggingSolnix 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
FreeBSDsignals and pid fileSolnix 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
FreeBSDenvironment for the childFreeBSD 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
FreeBSDrunning as non-rootSolnix 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/pppoe keyword 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.