inetd(8) on Solnix vs Linux and the BSDs
On Solnix, inetd is the SMF delegated restarter for internet services at /usr/sbin/inetd, and it cannot be run from the command line. Linux (inetutils), FreeBSD, OpenBSD and NetBSD run inetd as a daemon configured by inetd.conf. Solnix converts that file into SMF services with inetconv(8) and manages them with inetadm(8) and svcadm(8).
The manual pages
What Solnix runs
A default Solnix system runs the illumos inetd at /usr/sbin/inetd, managed as svc:/network/inetd:default. No other variants are shipped. The page is published in pkgs.solnix.illumos-world-man.
Differences
| Compared with | Topic | What differs |
|---|---|---|
| all four | cannot be run from the shell | Solnix inetd cannot run outside SMF. Run from the command line, it sends a message to stderr mapping the old inetd options to the SMF version. The other four systems start inetd directly, with options such as -d.Source: Solnix inetd(8) DESCRIPTION; Linux inetd(8) SYNOPSIS; FreeBSD/OpenBSD/NetBSD inetd(8) SYNOPSIS |
| all four | inetd.conf is no longer the source of truth | On Solnix, services are no longer managed by editing inetd.conf(5). Use inetconv(8) to convert it into SMF services, then manage them with inetadm(8) and svcadm(8). After conversion, edits to the legacy file take no effect. The other systems read /etc/inetd.conf (FreeBSD, OpenBSD, NetBSD default).Source: Solnix inetd(8) DESCRIPTION; FreeBSD inetd(8) DESCRIPTION; OpenBSD inetd(8) DESCRIPTION; NetBSD inetd(8) DESCRIPTION |
| all four | synopsis and options | Solnix inetd takes an optional configuration-file and one of start, stop or refresh. It has no -d, -R or -l. Linux has --debug, --rate and --pidfile. FreeBSD has -a -C -c -d -l -p -R -s -W -w. OpenBSD has -d and -R. NetBSD has -d, -f and -l.Source: Solnix inetd(8) SYNOPSIS; Linux inetd(8) options; FreeBSD inetd(8) SYNOPSIS; OpenBSD inetd(8) SYNOPSIS; NetBSD inetd(8) SYNOPSIS |
| all four | rate and connection limits | On Solnix, limits are per-service SMF properties: max_con_rate (with con_rate_offline timer) and max_copies. Over the limit, a service goes offline and is re-evaluated later. The others use -R rate (FreeBSD and OpenBSD default 256 per minute) or per-entry max fields in inetd.conf.Source: Solnix inetd(8) Service States (offline); FreeBSD inetd(8) -R; OpenBSD inetd(8) -R, wait/nowait[.max]; Linux inetd(8) -R |
| FreeBSD, OpenBSD, NetBSD | binding to an address | Solnix sets the bind address per service with the bind_addr property; an empty string means any interface. FreeBSD uses -a address. OpenBSD and NetBSD put an optional listen address in front of the service name in each inetd.conf line.Source: Solnix inetd(8) Service Properties (bind_addr); FreeBSD inetd(8) -a; OpenBSD inetd(8) DESCRIPTION (host address specifier); NetBSD inetd(8) listen-addr |
| all four | bind failure handling | On Solnix, if another server already holds the port, inetd logs it and retries at the bind_fail_interval, up to bind_fail_max times. The service is then degraded if some protocols listen, or in maintenance if none do. The other manuals shown do not describe a retry property. Source: Solnix inetd(8) DESCRIPTION, Service Properties, Service States (degraded, maintenance) |
| all four | service state model | Each Solnix inetd service has an smf(7) state: uninitialized, online, degraded, offline, disabled or maintenance. Disabled and maintenance need administrator intervention to leave. Use inetadm(8) to read the state. The other inetd manuals describe no per-service state machine. Source: Solnix inetd(8) Service States; FreeBSD/OpenBSD/NetBSD inetd(8) DESCRIPTION |
| all four | per-service methods | Solnix runs optional methods on state changes: inetd_start (the only compulsory one), inetd_offline, inetd_online, inetd_disable and inetd_refresh. The other systems just invoke the configured server program, with its path and arguments in inetd.conf. Source: Solnix inetd(8) Service Methods; FreeBSD inetd(8) configuration fields; OpenBSD inetd(8) configuration fields |
| all four | reloading configuration | Solnix inetd rereads all managed service configuration on an SMF refresh request or on SIGHUP, and runs inetd_refresh for online services that need no restart. The visible text of the other pages does not describe reload behaviour. Source: Solnix inetd(8) DESCRIPTION, Service Methods (inetd_refresh) |
| FreeBSD | TCP Wrappers | FreeBSD inetd has -W and -w for TCP Wrapping of internal and external services. The Solnix page text in the bundle shows no equivalent option.Source: FreeBSD inetd(8) -W, -w; Solnix inetd(8) SYNOPSIS |
| Linux | pidfile and environment | Linux inetutils inetd has -p/--pidfile (default /usr/local/var/run/inetd.pid) and --environment to pass socket information in environment variables. The Solnix page documents neither; SMF supervises the process.Source: Linux inetd(8) -p, --environment; Solnix inetd(8) SYNOPSIS |
| NetBSD | foreground and config path | NetBSD -d also runs inetd in the foreground, -f runs it in the foreground without debugging, and the configuration path must be absolute unless -d is given. Solnix has no foreground mode.Source: NetBSD inetd(8) -d, -f, DESCRIPTION; Solnix inetd(8) DESCRIPTION |
Everyday tasks
| Task | Solnix | Linux | FreeBSD | OpenBSD | NetBSD |
|---|---|---|---|---|---|
| bring inetd.conf entries under management | inetconv(8), then inetadm(8) and svcadm(8) | — | edit /etc/inetd.conf | edit /etc/inetd.conf | edit /etc/inetd.conf |
| show the state of a managed service | inetadm(8) | — | — | — | — |
| run inetd in the foreground for debugging | not possible: inetd cannot run outside SMF | inetd -d | inetd -d | inetd -d | inetd -d or inetd -f |
| set the maximum invocations per minute | max_con_rate service property | inetd -R number | inetd -R rate | inetd -R rate | — |
Standards
- POSIX: inetd is not a POSIX.1-2024 utility.
Writing portable scripts
- Do not start inetd from a script on Solnix. Use inetconv, inetadm and svcadm there, and edit inetd.conf and start the daemon on the other systems.
- Treat inetd.conf as per-OS: field syntax differs, such as FreeBSD user[:group][/login-class], OpenBSD wait/nowait[.max], and NetBSD key-values notation.
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.