ndd(8) on Solnix vs Linux and the BSDs

On Solnix, ndd is the illumos /usr/sbin/ndd. It reads and writes parameters of TCP/IP kernel drivers, addressed as a driver plus a parameter name. The page marks it deprecated in favour of dladm(8) and ipadm(8). It is not a sysctl clone: there is no dotted MIB name and no list-everything option.

What Solnix runs

A default Solnix system runs the illumos ndd at /usr/sbin/ndd. No other variants are shipped. The page says ndd is deprecated: use dladm(8) for Layer 2 properties and ipadm(8) for Layer 3 and Layer 4 properties (IP, TCP, UDP). The extracted flags -e -s -t come from the single option word -set and are not real options.

Differences

Compared withTopicWhat differs
all fouraddressing a parameterndd takes two arguments, a driver and a parameter. sysctl takes one dotted MIB-style name. On Linux the available parameters are those under /proc/sys/, and procfs is required.
Source: Solnix ndd(8) SYNOPSIS; Linux sysctl(8) DESCRIPTION; FreeBSD sysctl(8) DESCRIPTION; OpenBSD sysctl(8) DESCRIPTION; NetBSD sysctl(8) DESCRIPTION
all fourhow to set a valuendd uses the option word -set, then driver parameter value. The value must be given with -set. Linux, FreeBSD and OpenBSD set with name=value and no option. NetBSD synopsis shows -w name=value for setting.
Source: Solnix ndd(8) SYNOPSIS, DESCRIPTION; Linux sysctl(8) SYNOPSIS; FreeBSD sysctl(8) SYNOPSIS; OpenBSD sysctl(8) SYNOPSIS; NetBSD sysctl(8) SYNOPSIS, -w
all fourlisting parametersndd lists parameters one driver at a time: by convention a driver has a read-only parameter named ? that lists its parameters. There is no ndd option to dump everything. FreeBSD, OpenBSD and NetBSD sysctl have -a. The Linux page mentions an --all option.
Source: Solnix ndd(8) DESCRIPTION (parameter ?); FreeBSD sysctl(8) -a; OpenBSD sysctl(8) -a; NetBSD sysctl(8) -a; Linux sysctl(8) Verboten parameters
all fourscopendd supports only drivers that implement the TCP/IP protocol family. sysctl is described as general kernel state, or as parameters under /proc/sys on Linux. Do not expect ndd to cover non-network settings.
Source: Solnix ndd(8) DESCRIPTION; FreeBSD sysctl(8) DESCRIPTION; OpenBSD sysctl(8) DESCRIPTION; NetBSD sysctl(8) DESCRIPTION; Linux sysctl(8) DESCRIPTION
all fourstability of namesThe Solnix page warns that parameter names and the ioctl() interface ndd uses may change between releases, and that scripts should expect this. The sysctl pages in the bundle carry no equivalent warning.
Source: Solnix ndd(8) DESCRIPTION, NOTES
all fourpersistent settingsThe ndd page names no config file or boot-time mechanism. Linux reads /etc/sysctl.conf and sysctl.d directories. FreeBSD, OpenBSD and NetBSD sysctl can load a file with -f. Linux uses -p file. The manual does not say how to make ndd changes persist.
Source: Solnix ndd(8) (no file documented); Linux sysctl(8) NOTES, SYNOPSIS -p; FreeBSD sysctl(8) -f; OpenBSD sysctl(8) -f; NetBSD sysctl(8) -f
FreeBSD, OpenBSD, NetBSDoutput and filtering optionsndd has no options for output control. sysctl has -n (values only), -q (quiet), and on FreeBSD and NetBSD -e (name=value output) and -d (descriptions). FreeBSD also has -t (type), -N (names only) and -h.
Source: Solnix ndd(8) SYNOPSIS; FreeBSD sysctl(8) -n, -q, -e, -d, -t, -N, -h; OpenBSD sysctl(8) -n, -q; NetBSD sysctl(8) -n, -q, -e, -d
FreeBSDjails and zonesFreeBSD sysctl -j jail runs inside a jail. The ndd page documents no zone or jail option.
Source: FreeBSD sysctl(8) -j; Solnix ndd(8) SYNOPSIS
all fourreport size limitIf a TCP driver's report is truncated, ndd's 64K limit on reports sent through it may be the cause. The sysctl pages state no such limit. FreeBSD has -B bufsize to set the read buffer size.
Source: Solnix ndd(8) NOTES; FreeBSD sysctl(8) -B
FreeBSDread-only parametersThe ndd page only says some parameters may be read-only, with no list. FreeBSD sysctl(8) has a table with a Changeable column, and -W shows writable variables.
Source: Solnix ndd(8) DESCRIPTION; FreeBSD sysctl(8) -W, Changeable table

Everyday tasks

TaskSolnixLinuxFreeBSDOpenBSDNetBSD
read one parameterndd driver parametersysctl variablesysctl namesysctl namesysctl name
set a parameterndd -set driver parameter valuesysctl variable=valuesysctl name=valuesysctl name=valuesysctl -w name=value
list parametersndd driver ?sysctl --allsysctl -asysctl -asysctl -a
load settings from a file—sysctl -p file-or-regexpsysctl -f filenamesysctl -f filesysctl -f file
print a description of a parameter——sysctl -d name—sysctl -d name
manage network properties (preferred over ndd)dladm (Layer 2), ipadm (Layer 3 and 4)————

Standards

  • POSIX: ndd is not a POSIX.1-2024 utility.
  • Solnix: The page states that ndd is deprecated and that parameters and the ioctl() interface may change from release to release. It names no standard.

Writing portable scripts

  • Do not script ndd for new work on Solnix: the page marks it deprecated. Use ipadm or dladm, and expect ndd parameter names to change between releases.
  • Wrap parameter get and set in a function that branches on the tool present (ndd, or sysctl). Setting syntax differs: ndd -set driver param value, sysctl name=value, NetBSD sysctl -w name=value.

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.