rpcgen(1) on Solnix vs Linux and the BSDs

On Solnix, rpcgen is the illumos RPC protocol compiler at /usr/bin/rpcgen. The bundle has only a FreeBSD counterpart. The difference that matters most is -I: on FreeBSD it is required for inetd/port-monitor servers, while on Solnix it is backward-compatibility only and is meant to be used with -b.

What Solnix runs

A default Solnix system runs the illumos rpcgen at /usr/bin/rpcgen, published in pkgs.solnix.illumos-world-man. No other variants are shipped. The bundle has no Linux, OpenBSD or NetBSD rpcgen page, so nothing is claimed about those systems.

Differences

Compared withTopicWhat differs
FreeBSD-I and port-monitor serversOn Solnix, -I is for backward compatibility only and should be used with -b. Without -b, rpcgen already generates servers that port monitors can invoke. On FreeBSD, -I is needed to generate servers invokable through port monitors and inetd(8).
Source: Solnix rpcgen(1) -I; FreeBSD rpcgen(1) -I
FreeBSD-i default inline sizeBoth pages document -i size as the size at which inline code generation starts. The Solnix default is 5. The FreeBSD default is actually 0, which disables inline code unless you pass a non-zero value. Generated code can differ between the two.
Source: Solnix rpcgen(1) -i; FreeBSD rpcgen(1) -i (backwards-compatibility note)
FreeBSD-C meaningOn Solnix, -C generates header and stub files usable with ANSI C compilers, and the headers also work with C++. On FreeBSD, ANSI C code is always generated and -C exists only for backwards compatibility.
Source: Solnix rpcgen(1) -C; FreeBSD rpcgen(1) -C
FreeBSD-A automatic multithreaded modeSolnix rpcgen has -A, which enables Automatic MT mode in the server main program and implicitly turns on -M. The FreeBSD SYNOPSIS and option list have no -A.
Source: Solnix rpcgen(1) SYNOPSIS, -A; FreeBSD rpcgen(1) SYNOPSIS
FreeBSDtransport environment variableFor a server started by a port monitor, Solnix takes the transport name from PM_TRANSPORT. FreeBSD takes it from NLSPROVIDER. Both fall back to NETPATH, then to the visible transports in /etc/netconfig.
Source: Solnix rpcgen(1) DESCRIPTION (PM_TRANSPORT); FreeBSD rpcgen(1) DESCRIPTION (NLSPROVIDER)
FreeBSD-P with -IThe FreeBSD synopsis shows -I together with -P: [-I -P [-K seconds]]. The Solnix synopsis shows [-I [-K seconds]] and has no -P. The FreeBSD text in the bundle does not describe what -P does.
Source: FreeBSD rpcgen(1) SYNOPSIS; Solnix rpcgen(1) SYNOPSIS
FreeBSDport monitors namedThe Solnix page says generated servers can be started by port monitors such as inetd or listen, and that listen(8) always spawns a new process per request. The FreeBSD page names only inetd(8) and ties this behaviour to -I.
Source: Solnix rpcgen(1) DESCRIPTION, -K; FreeBSD rpcgen(1) DESCRIPTION
FreeBSDRPC_MSGOUT error hookSolnix documents compiling the generated proto_svc.c with -DRPC_MSGOUT=func to redirect server error reports, with a printf-like signature. The FreeBSD text in the bundle does not document RPC_MSGOUT.
Source: Solnix rpcgen(1) Server Error Reporting; FreeBSD rpcgen(1) (no such section in the bundle)
FreeBSD-v optionThe Solnix SYNOPSIS lists -v. The FreeBSD SYNOPSIS has no -v. The Solnix text in the bundle does not describe it.
Source: Solnix rpcgen(1) SYNOPSIS; FreeBSD rpcgen(1) SYNOPSIS

Standards

  • POSIX: rpcgen is not a POSIX.1-2024 utility.

Writing portable scripts

  • Pass -i with an explicit non-zero size if you want inline code on both systems, since the defaults are 5 on Solnix and 0 on FreeBSD.
  • Do not rely on -I alone to get an inetd-capable server. On Solnix, use -I -b. On FreeBSD, -I is required.

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.