---
name: "rc.conf"
section: "5"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd"]
url: "https://new.carta.tech/rc.conf/5"
---

# rc.conf(5)

system configuration information

## NAME

**rc.conf** – system configuration information

## DESCRIPTION

The file **rc.conf** contains descriptive information about the local host name, configuration details for any potential network interfaces and which services should be started up at system initial boot time. In new installations, the **rc.conf** file is generally initialized by the system installation utility.

The purpose of **rc.conf** is not to run commands or perform system startup actions directly. Instead, it is included by the various generic startup scripts in */etc* which conditionalize their internal actions according to the settings found there.

The */etc/rc.conf* file is included from the file */etc/defaults/rc.conf*, which specifies the default settings for all the available options. Options need only be specified in */etc/rc.conf* when the system administrator wishes to override these defaults. The file */etc/defaults/vendor.conf* allows vendors to override FreeBSD defaults. The file */etc/rc.conf.local* is used to override settings in */etc/rc.conf* for historical reasons.

The [sysrc(8)](/sysrc/8.md) command provides a scripting interface to modify system config files.

In addition to */etc/rc.conf.local* you can also place smaller configuration files for each [rc(8)](/rc/8.md) script in the */etc/rc.conf.d* directory or ⟨*dir*⟩*/rc.conf.d* directories (where ⟨*dir*⟩ is each entry specified in *local\_startup*, but with any trailing */rc.d* stripped), which will be included by the *load\_rc\_config* function. For jail configurations you could use the file */etc/rc.conf.d/jail* to store jail-specific configuration options. If *local\_startup* contains */usr/local/etc/rc.d* and */opt/conf*, */usr/local/etc/rc.conf.d/jail* and */opt/conf/rc.conf.d/jail* will be loaded. If ⟨*dir*⟩*/rc.conf.d/*⟨*name*⟩ is a directory then all of the files in the directory will be loaded. See also the *rc\_conf\_files* variable below.

Options are set with “*name*=*value*” assignments that use [sh(1)](/sh/1.md) syntax. The following list provides a name and short description for each variable that can be set in the **rc.conf** file:

- *rc\_debug*

  (*bool*) If set to “YES”, enable output of debug messages from rc scripts. This variable can be helpful in diagnosing mistakes when editing or integrating new scripts. Beware that this produces copious output to the terminal and [syslog(3)](/syslog/3.md).

- *rc\_info*

  (*bool*) If set to “NO”, disable informational messages from the rc scripts. Informational messages are displayed when a condition that is not serious enough to warrant a warning or an error occurs.

- *rc\_startmsgs*

  (*bool*) If set to “YES”, show “Starting foo:” when faststart is used (e.g., at boot time).

- *early\_late\_divider*

  (*str*) The name of the script that should be used as the delimiter between the “early” and “late” stages of the boot process. The early stage should contain all the services needed to get the disks (local or remote) mounted so that the late stage can include scripts contained in the directories listed in the *local\_startup* variable (see below). Thus, the two likely candidates for this value are *mountcritlocal* for the typical system, and *mountcritremote* if the system needs remote file systems mounted to get access to the *local\_startup* directories; for example when */usr/local* is NFS mounted. For *rc.conf* within a [jail(8)](/jail/8.md) *NETWORKING* is likely to be an appropriate value. Extreme care should be taken when changing this value, and before changing it one should ensure that there are adequate provisions to recover from a failed boot (such as physical contact with the machine, or reliable remote console access).

- *always\_force\_depends*

  (*bool*) Various *rc.d* scripts use the force\_depend function to check whether required services are already running, and to start them if necessary. By default during boot time this check is bypassed if the required service is enabled in */etc/rc.conf\[.local\]*. Setting this option will bypass that check at boot time and always test whether or not the service is actually running. Enabling this option is likely to increase your boot time if services are enabled that utilize the force\_depend check.

- ⟨*name*⟩*\_audit\_user*

  (*str*) A user name or UID to use as the [audit(4)](/audit/4.md) user for the service. Run the chrooted service under this system group. By default, when an unprvileged user restarts a service using a utility such as sudo or doas, the service's will audit session will point to the unprivileged user, which may be undesirable. In that case, this variable can be used to override the audit user using [setaudit(8)](/setaudit/8.md).

- ⟨*name*⟩*\_chroot*

  (*str*) [chroot(8)](/chroot/8.md) to this directory before running the service.

- ⟨*name*⟩*\_cpuset*

  (*str*) A list of CPUs to run the service on. Passed to [cpuset(1)](/cpuset/1.md) using the **-l** flag.

- ⟨*name*⟩*\_fib*

  (*int*) The [setfib(1)](/setfib/1.md) value to run the service under.

- ⟨*name*⟩*\_group*

  (*str*) Unlike the ⟨*name*⟩*\_user* setting, this setting has no effect if the service is not chrooted.

- ⟨*name*⟩*\_limits*

  (*str*) Resource limits to apply to the service using [limits(1)](/limits/1.md). By default, resource limits are based on the login class defined in ⟨*name*⟩*\_login\_class*.

- ⟨*name*⟩*\_login\_class*

  (*str*) Login class to be used with ⟨*name*⟩*\_limits*. Defaults to “daemon”.

- ⟨*name*⟩*\_nice*

  (*int*) The [nice(1)](/nice/1.md) value to run the service under.

- ⟨*name*⟩*\_oomprotect*

  (*str*) Use [protect(1)](/protect/1.md) to prevent the service from being killed when swap space is exhausted. Use “YES” to protect only the service itself, and “ALL” to protect the service and all its child processes.

  Please note that rc scripts which redefine

  ```
  ${argument}_cmd
  ```

  (see [rc.subr(8)](/rc.subr/8.md)) such as PostgreSQL will not inherit the OOM killer protection.

  This variable has no effect on services running within a [jail(8)](/jail/8.md).

- ⟨*name*⟩*\_setup*

  (*str*) Run the specified setup script right before starting the actual service command. Useful for automatic configuration file generation.

- ⟨*name*⟩*\_umask*

  (*int*) Run the service using this [umask(1)](/umask/1.md) value.

- ⟨*name*⟩*\_user*

  (*str*) Run the service under this user account.

- ⟨*name*⟩*\_svcj*

  (*bool*) If set to “YES”, auto-jail the service with inherited filesystem and other jail properties depending on ⟨*name*⟩*\_svcj\_options*.

- ⟨*name*⟩*\_svcj\_ipaddrs*

  (*str*) A list of IP addresses that the service jail will be permitted to use. If this is not specified, the service jail will be permitted to use all assigned IP addresses if networking is enabled in the jail.

- ⟨*name*⟩*\_svcj\_options*

  (*str*) A list of jail properties for the service. See SERVICE JAILS for a list of valid properties.

- *devd\_enable*

  (*bool*) Run [devd(8)](/devd/8.md) to handle device added, removed or unknown events from the kernel.

- *ddb\_enable*

  (*bool*) Run [ddb(8)](/ddb/8.md) to install [ddb(4)](/ddb/4.md) scripts at boot time.

- *ddb\_config*

  (*str*) Configuration file for [ddb(8)](/ddb/8.md). Default */etc/ddb.conf*.

- *devmatch\_enable*

  (*bool*) If set to “NO”, disable auto-loading of kernel modules with [devmatch(8)](/devmatch/8.md).

- *devmatch\_blocklist*

  (*str*) A whitespace-separated list of kernel modules to be ignored by [devmatch(8)](/devmatch/8.md). In addition, the [kenv(1)](/kenv/1.md) *devmatch\_blocklist* is appended to this variable to allow disabling of [devmatch(8)](/devmatch/8.md) loaded modules from the boot loader.

- *devmatch\_blacklist*

  (*str*) This variable is deprecated. Use *devmatch\_blocklist* instead. A whitespace-separated list of kernel modules to be ignored by [devmatch(8)](/devmatch/8.md).

- *kld\_list*

  (*str*) A whitespace-separated list of kernel modules to load right after the local disks are mounted, without any *.ko* extension or path.

- *kldxref\_enable*

  (*bool*) Set to “NO” by default. Set to “YES” to automatically rebuild *linker.hints* files with [kldxref(8)](/kldxref/8.md) at boot time.

- *kldxref\_clobber*

  (*bool*) Set to “NO” by default. If *kldxref\_enable* is true, setting to “YES” will overwrite existing *linker.hints* files at boot time. Otherwise, only missing *linker.hints* files are generated.

- *kldxref\_module\_path*

  (*str*) Empty by default. A semi-colon (‘;’) delimited list of paths containing [kld(4)](/kld/4.md) modules. If empty, the contents of the *kern.module\_path* [sysctl(8)](/sysctl/8.md) are used.

- *powerd\_enable*

  (*bool*) If set to “YES”, enable the system power control facility with the [powerd(8)](/powerd/8.md) daemon.

- *powerd\_flags*

  (*str*) If *powerd\_enable* is set to “YES”, these are the flags to pass to the [powerd(8)](/powerd/8.md) daemon.

- *svcj\_all\_enable*

  Enable auto-jailing of all services which are not explicitly excluded. See SERVICE JAILS for more info.

- *tmpmfs*

  Controls the creation of a */tmp* memory file system. Always happens if set to “YES” and never happens if set to “NO”. If set to anything else, a memory file system is created if */tmp* is not writable.

- *tmpsize*

  Controls the size of a created */tmp* memory file system.

- *tmpmfs\_flags*

  Extra options passed to the [mdmfs(8)](/mdmfs/8.md) utility when the memory file system for */tmp* is created. The default is “-S”, which inhibits the use of softupdates on */tmp* so that file system space is freed without delay after file truncation or deletion. See [mdmfs(8)](/mdmfs/8.md) for other options you can use in *tmpmfs\_flags*.

- *varmfs*

  Controls the creation of a */var* memory file system. Always happens if set to “YES” and never happens if set to “NO”. If set to anything else, a memory file system is created if */var* is not writable.

- *varsize*

  Controls the size of a created */var* memory file system.

- *varmfs\_flags*

  Extra options passed to the [mdmfs(8)](/mdmfs/8.md) utility when the memory file system for */var* is created. The default is “-S”, which inhibits the use of softupdates on */var* so that file system space is freed without delay after file truncation or deletion. See [mdmfs(8)](/mdmfs/8.md) for other options you can use in *varmfs\_flags*.

- *populate\_var*

  Controls the automatic population of the */var* file system. Always happens if set to “YES” and never happens if set to “NO”. If set to anything else, a memory file system is created if */var* is not writable. Note that this process requires access to certain commands in */usr* before */usr* is mounted on normal systems.

- *cleanvar\_enable*

  (*bool*) Clean the */var* directory.

- *var\_run\_enable*

  (*bool*) Set to "YES" to enable saving of the */var/run* directory structure into an mtree file at shutdown and the reload of the */var/run* directory structure at boot.

- *var\_run\_autosave*

  (*bool*) In some cases it may be undesirable to save */var/run* at shutdown. When set to "NO" */var/run* is loaded at reboot but not saved at shutdown. Typically in this scenario ‘service var\_run save’ would be performed to save a copy of the */var/run* directory structure once, to be reloaded during all subsequent reboots.

- *var\_run\_mtree*

  (*str*) Where to save the */var/run* mtree. The default location is */var/db/mtree/BSD.var-run.mtree*.

- *local\_startup*

  (*str*) List of directories to search for startup script files.

- *script\_name\_sep*

  (*str*) The field separator to use for breaking down the list of startup script files into individual filenames. The default is a space. It is not necessary to change this unless there are startup scripts with names containing spaces.

- *hostapd\_enable*

  (*bool*) Set to “YES” to start [hostapd(8)](/hostapd/8.md) at system boot time.

- *hostname*

  (*str*) The fully qualified domain name (FQDN) of this host on the network. This should almost certainly be set to something meaningful, even if there is no network connection. If [dhclient(8)](/dhclient/8.md) is used to set the hostname via DHCP, this variable should be set to an empty string. Within a [jail(8)](/jail/8.md) the hostname is generally already set and this variable may be absent. If this value remains unset when the system is done booting your console login will display the default hostname of “Amnesiac”.

- *nisdomainname*

  (*str*) The NIS domain name of this host, or “NO” if NIS is not used.

- *hostid\_enable*

  (*bool*) If set to “NO”, disable the generation or saving of the *hostid* and *machine-id* files at system boot and shutdown.

- *hostid\_file*

  (*str*) Path to the *hostid* file, default */etc/hostid*.

- *hostid\_uuidgen\_flags*

  (*str*) Flags passed to [uuidgen(1)](/uuidgen/1.md) when generating a software host UUID. This is used only if the system cannot determine a hardware UUID. Set to “-r” by default.

- *machine\_id\_file*

  (*str*) Path to the *machine-id* file, default */etc/machine-id*.

- *dhclient\_program*

  (*str*) Path to the DHCP client program, defaulting to */sbin/dhclient*.

- *dhclient\_flags*

  (*str*) Additional flags to pass to the DHCP client program. See the [dhclient(8)](/dhclient/8.md) manpage for a description of the command line options available.

- *dhclient\_flags\_*⟨*iface*⟩

  Additional flags to pass to the DHCP client program running on *iface* only. When specified, this variable overrides *dhclient\_flags*.

- *background\_dhclient*

  (*bool*) Set to “YES” to start the DHCP client in background. This can cause trouble with applications depending on a working network, but it will provide a faster startup in many cases.

- *background\_dhclient\_*⟨*iface*⟩

  When specified, this variable overrides the *background\_dhclient* variable for interface *iface* only.

- *dhclient\_arpwait*

  (*bool*) Set to “NO” to stop [dhclient(8)](/dhclient/8.md) from waiting for ARP resolution, to make the system boot faster. This may be done on networks where the DHCP server is certain to know whether an address is available.

- *synchronous\_dhclient*

  (*bool*) Set to “YES” to start [dhclient(8)](/dhclient/8.md) synchronously at startup. This behavior can be overridden on a per-interface basis by replacing the “DHCP” keyword in the *ifconfig\_*⟨*interface*⟩ variable with “SYNCDHCP” or “NOSYNCDHCP”.

- *defaultroute\_delay*

  (*int*) When set to a positive value, wait up to this long after configuring DHCP interfaces at startup to give the interfaces time to receive a lease.

- *firewall\_enable*

  (*bool*) Set to “YES” to load firewall rules at startup. If the kernel was not built with **options IPFIREWALL**, the *ipfw.ko* kernel module will be loaded. See also *ipfilter\_enable*.

- *firewall\_script*

  (*str*) This variable specifies the full path to the firewall script to run. The default is */etc/rc.firewall*.

- *firewall\_type*

  (*str*) Names the firewall type from the selection in */etc/rc.firewall*, or the file which contains the local firewall ruleset. Valid selections from */etc/rc.firewall* are:

  - open

    unrestricted IP access

  - closed

    all IP services disabled, except via “lo0”

  - client

    basic protection for a workstation

  - workstation

    basic protection for a workstation using stateful firewalling

  - simple

    basic protection for a LAN.

    If a filename is specified, the full path must be given.

    Most of the predefined rulesets define additional configuration variables. These are documented in */etc/rc.firewall*.

- *firewall\_quiet*

  (*bool*) Set to “YES” to disable the display of firewall rules on the console during boot.

- *firewall\_logging*

  (*bool*) Set to “YES” to enable firewall event logging. This is equivalent to the IPFIREWALL\_VERBOSE kernel option.

- *firewall\_logif*

  (*bool*) Set to “YES” to create pseudo interface ipfw0 for logging. For more details, see [ipfw(8)](/ipfw/8.md) manual page.

- *firewall\_flags*

  (*str*) Flags passed to [ipfw(8)](/ipfw/8.md) if *firewall\_type* specifies a filename.

- *firewall\_coscripts*

  (*str*) List of executables and/or rc scripts to run after firewall starts/stops. Default is empty.

- *firewall\_nat\_enable*

  (*bool*) The [ipfw(8)](/ipfw/8.md) equivalent of *natd\_enable*. Setting this to “YES” will automatically load the [ipfw(8)](/ipfw/8.md) NAT kernel module if *firewall\_enable* is also set to “YES”.

- *firewall\_nat\_interface*

  (*str*) The [ipfw(8)](/ipfw/8.md) equivalent of *natd\_interface*. This is the name of the public interface or IP address on which kernel NAT should run.

- *firewall\_nat\_flags*

  (*str*) Additional configuration parameters for kernel NAT should be placed here.

- *firewall\_nat64\_enable*

  (*bool*) Setting this to “YES” will automatically load the [ipfw(8)](/ipfw/8.md) NAT64 kernel module if *firewall\_enable* is also set to “YES”.

- *firewall\_nptv6\_enable*

  (*bool*) Setting this to “YES” will automatically load the [ipfw(8)](/ipfw/8.md) NPTv6 kernel module if *firewall\_enable* is also set to “YES”.

- *firewall\_pmod\_enable*

  (*bool*) Setting this to “YES” will automatically load the [ipfw(8)](/ipfw/8.md) pmod kernel module if *firewall\_enable* is also set to “YES”.

- *dummynet\_enable*

  (*bool*) Setting this to “YES” will automatically load the [dummynet(4)](/dummynet/4.md) module if *firewall\_enable* is also set to “YES”.

- *ipfw\_netflow\_enable*

  (*bool*) Setting this to “YES” will enable netflow logging via [ng\_netflow(4)](/ng_netflow/4.md).

  By default a ipfw rule is inserted and all packets are duplicated with the ngtee command and netflow packets are sent to 127.0.0.1 on the netflow port using protocol version 5.

- *ipfw\_netflow\_hook*

  (*int*) netflow hook name, must be numerical (default *9995*).

- *ipfw\_netflow\_rule*

  (*int*) ipfw rule number (default *1000*).

- *ipfw\_netflow\_ip*

  (*str*) Destination server ip for receiving netflow data (default *127.0.0.1*).

- *ipfw\_netflow\_port*

  (*int*) Destination server port for receiving netflow data (default *9995*).

- *ipfw\_netflow\_version*

  (*int*) Do not set for using version 5 of the netflow protocol, set it to 9 for using version 9.

- *ipfw\_netflow\_fib*

  (*int*) Only match packet in FIB *ipfw\_netflow\_fib* (default is undefined meaning all FIBs).

- *natd\_program*

  (*str*) Path to [natd(8)](/natd/8.md).

- *natd\_enable*

  (*bool*) Set to “YES” to enable [natd(8)](/natd/8.md). *firewall\_enable* must also be set to “YES”, and [divert(4)](/divert/4.md) sockets must be enabled in the kernel. If the kernel was not built with **options IPDIVERT**, the *ipdivert.ko* kernel module will be loaded.

- *natd\_interface*

  (*str*) This is the name of the public interface on which [natd(8)](/natd/8.md) should run. The interface may be given as an interface name or as an IP address.

- *natd\_flags*

  (*str*) Additional [natd(8)](/natd/8.md) flags should be placed here. The **-n** or **-a** flag is automatically added with the above *natd\_interface* as an argument.

- *ipfilter\_enable*

  (*bool*) Set to “NO” by default. Setting this to “YES” enables [ipf(8)](/ipf/8.md) packet filtering.

  Typical usage will require putting

  ```
  ipfilter_enable="YES"
  ipnat_enable="YES"
  ipmon_enable="YES"
  ipfs_enable="YES"
  ```

  into */etc/rc.conf* and editing */etc/ipf.rules* and */etc/ipnat.rules* appropriately.

  Note that *ipfilter\_enable* and *ipnat\_enable* can be enabled independently. *ipmon\_enable* and *ipfs\_enable* both require at least one of *ipfilter\_enable* and *ipnat\_enable* to be enabled.

  Having

  ```
  options IPFILTER
  options IPFILTER_LOG
  options IPFILTER_DEFAULT_BLOCK
  ```

  in the kernel configuration file is a good idea, too.

- *ipfilter\_program*

  (*str*) Path to [ipf(8)](/ipf/8.md) (default */sbin/ipf*).

- *ipfilter\_rules*

  (*str*) Set to */etc/ipf.rules* by default. This variable contains the name of the filter rule definition file. The file is expected to be readable for the [ipf(8)](/ipf/8.md) command to execute.

- *ipfilter\_flags*

  (*str*) Empty by default. This variable contains flags passed to the [ipf(8)](/ipf/8.md) program.

- *ipnat\_enable*

  (*bool*) Set to “NO” by default. Set it to “YES” to enable [ipnat(8)](/ipnat/8.md) network address translation. See *ipfilter\_enable* for a detailed discussion.

- *ipnat\_program*

  (*str*) Path to [ipnat(8)](/ipnat/8.md) (default */sbin/ipnat*).

- *ipnat\_rules*

  (*str*) Set to */etc/ipnat.rules* by default. This variable contains the name of the file holding the network address translation definition. This file is expected to be readable for the [ipnat(8)](/ipnat/8.md) command to execute.

- *ipnat\_flags*

  (*str*) Empty by default. This variable contains flags passed to the [ipnat(8)](/ipnat/8.md) program.

- *ipmon\_enable*

  (*bool*) Set to “NO” by default. Set it to “YES” to enable [ipmon(8)](/ipmon/8.md) monitoring (logging [ipf(8)](/ipf/8.md) and [ipnat(8)](/ipnat/8.md) events). Setting this variable needs setting *ipfilter\_enable* or *ipnat\_enable* too. See *ipfilter\_enable* for a detailed discussion.

- *ipmon\_program*

  (*str*) Path to [ipmon(8)](/ipmon/8.md) (default */sbin/ipmon*).

- *ipmon\_flags*

  (*str*) Set to “-Ds” by default. This variable contains flags passed to the [ipmon(8)](/ipmon/8.md) program. Another typical example would be “**-D** */var/log/ipflog*” to have [ipmon(8)](/ipmon/8.md) log directly to a file bypassing [syslogd(8)](/syslogd/8.md). Make sure to adjust */etc/newsyslog.conf* in such case like this:

  ```
  /var/log/ipflog  640  10  100  *  Z  /var/run/ipmon.pid
  ```

- *ipfs\_enable*

  (*bool*) Set to “NO” by default. Set it to “YES” to enable ipfs(8) saving the filter and NAT state tables during shutdown and reloading them during startup again. Setting this variable needs setting *ipfilter\_enable* or *ipnat\_enable* to “YES” too. See *ipfilter\_enable* for a detailed discussion. Note that if *kern\_securelevel* is set to 3, *ipfs\_enable* cannot be used because the raised securelevel will prevent ipfs(8) from saving the state tables at shutdown time.

- *ipfs\_program*

  (*str*) Path to ipfs(8) (default */sbin/ipfs*).

- *ipfs\_flags*

  (*str*) Empty by default. This variable contains flags passed to the ipfs(8) program.

- *pf\_enable*

  (*bool*) Set to “NO” by default. Setting this to “YES” enables [pf(4)](/pf/4.md) packet filtering.

  Typical usage will require putting

  ```
  pf_enable="YES"
  ```

  into */etc/rc.conf* and editing */etc/pf.conf* appropriately. Adding

  ```
  device pf
  ```

  builds support for [pf(4)](/pf/4.md) into the kernel, otherwise the kernel module will be loaded.

- *pf\_rules*

  (*str*) Path to [pf(4)](/pf/4.md) ruleset configuration file (default */etc/pf.conf*).

- *pf\_program*

  (*str*) Path to [pfctl(8)](/pfctl/8.md) (default */sbin/pfctl*).

- *pf\_flags*

  (*str*) If *pf\_enable* is set to “YES”, these flags are passed to the [pfctl(8)](/pfctl/8.md) program when loading the ruleset.

- *pf\_fallback\_rules\_enable*

  (*bool*) Set to “NO” by default. Setting this to “YES” enables loading *pf\_fallback\_rules\_file* or *pf\_fallback\_rules* in case of a problem when loading the ruleset in *pf\_rules*.

- *pf\_fallback\_rules\_file*

  (*str*) Path to a pf ruleset to load in case of failure when loading the ruleset in *pf\_rules* (default */etc/pf-fallback.conf*).

- *pf\_fallback\_rules*

  (*str*) A pf ruleset to load in case of failure when loading the ruleset in *pf\_rules* and *pf\_fallback\_rules\_file* is not found. Multiple rules can be set as follows:

  ```
  pf_fallback_rules="
  	block drop log all
  	pass in quick on em0"
  ```

  The default fallback rule is “block drop log all”

- *pflog\_enable*

  (*bool*) Set to “NO” by default. Setting this to “YES” enables [pflogd(8)](/pflogd/8.md) which logs packets from the [pf(4)](/pf/4.md) packet filter.

- *pflog\_logfile*

  (*str*) If *pflog\_enable* is set to “YES” this controls where [pflogd(8)](/pflogd/8.md) stores the logfile (default */var/log/pflog*). Check */etc/newsyslog.conf* to adjust logfile rotation for this.

- *pflog\_program*

  (*str*) Path to [pflogd(8)](/pflogd/8.md) (default */sbin/pflogd*).

- *pflog\_flags*

  (*str*) Empty by default. This variable contains additional flags passed to the [pflogd(8)](/pflogd/8.md) program.

- *pflog\_instances*

  (*str*) If logging to more than one [pflog(4)](/pflog/4.md) interface is desired, *pflog\_instances* is set to the list of [pflogd(8)](/pflogd/8.md) instances that should be started at system boot time. If *pflog\_instances* is set, for each whitespace-separated *element* in the list, ⟨*element*⟩*\_dev* and ⟨*element*⟩*\_logfile* elements are assumed to exist. ⟨*element*⟩*\_dev* must contain the [pflog(4)](/pflog/4.md) interface to be watched by the named [pflogd(8)](/pflogd/8.md) instance. ⟨*element*⟩*\_logfile* must contain the name of the logfile that will be used by the [pflogd(8)](/pflogd/8.md) instance.

- *ftpproxy\_enable*

  (*bool*) Set to “NO” by default. Setting this to “YES” enables [ftp-proxy(8)](/ftp-proxy/8.md) which supports the [pf(4)](/pf/4.md) packet filter in translating ftp connections.

- *ftpproxy\_flags*

  (*str*) Empty by default. This variable contains additional flags passed to the [ftp-proxy(8)](/ftp-proxy/8.md) program.

- *ftpproxy\_instances*

  (*str*) Empty by default. If multiple instances of [ftp-proxy(8)](/ftp-proxy/8.md) are desired at boot time, *ftpproxy\_instances* should contain a whitespace-separated list of instance names. For each *element* in the list, a variable named ⟨*element*⟩*\_flags* should be defined, containing the command-line flags to be passed to the [ftp-proxy(8)](/ftp-proxy/8.md) instance.

- *pfsync\_enable*

  (*bool*) Set to “NO” by default. Setting this to “YES” enables exposing [pf(4)](/pf/4.md) state changes to other hosts over the network by means of [pfsync(4)](/pfsync/4.md). The *pfsync\_syncdev* variable must also be set then.

- *pfsync\_syncdev*

  (*str*) Empty by default. This variable specifies the name of the network interface [pfsync(4)](/pfsync/4.md) should operate through. It must be set accordingly if *pfsync\_enable* is set to “YES”.

- *pfsync\_syncpeer*

  (*str*) Empty by default. This variable is optional. By default, state change messages are sent out on the synchronisation interface using IP multicast packets. The protocol is IP protocol 240, PFSYNC, and the multicast group used is 224.0.0.240. When a peer address is specified using the *pfsync\_syncpeer* option, the peer address is used as a destination for the pfsync traffic, and the traffic can then be protected using [ipsec(4)](/ipsec/4.md). See the [pfsync(4)](/pfsync/4.md) manpage for more details about using [ipsec(4)](/ipsec/4.md) with [pfsync(4)](/pfsync/4.md) interfaces.

- *pfsync\_ifconfig*

  (*str*) Empty by default. This variable can contain additional options to be passed to the [ifconfig(8)](/ifconfig/8.md) command used to set up [pfsync(4)](/pfsync/4.md).

- *tcp\_extensions*

  (*bool*) Set to “YES” by default. Setting this to “NO” disables certain TCP options as described by *RFC 1323*. Setting this to “NO” might help remedy such problems with connections as randomly hanging or other weird behavior. Some network devices are known to be broken with respect to these options.

- *log\_in\_vain*

  (*int*) Set to 0 by default. The [sysctl(8)](/sysctl/8.md) variables, *net.inet.tcp.log\_in\_vain* and *net.inet.udp.log\_in\_vain*, as described in [tcp(4)](/tcp/4.md) and [udp(4)](/udp/4.md), are set to the given value.

- *tcp\_keepalive*

  (*bool*) Set to “YES” by default. Setting to “NO” will disable probing idle TCP connections to verify that the peer is still up and reachable.

- *tcp\_drop\_synfin*

  (*bool*) Set to “NO” by default. Setting to “YES” will cause the kernel to ignore TCP frames that have both the SYN and FIN flags set. This prevents OS fingerprinting, but may break some legitimate applications.

- *icmp\_drop\_redirect*

  (*bool*) Set to “AUTO” by default. This setting will be identical to “YES”, if a dynamic routing daemon is enabled, because redirect processing may cause performance issues for large routing tables. If no such service is enabled, this setting behaves like a “NO”. Setting to “YES” will cause the kernel to ignore ICMP REDIRECT packets. Setting to “NO” will cause the kernel to process ICMP REDIRECT packets. Refer to [icmp(4)](/icmp/4.md) for more information.

- *icmp\_log\_redirect*

  (*bool*) Set to “NO” by default. Setting to “YES” will cause the kernel to log ICMP REDIRECT packets. Note that the log messages are not rate-limited, so this option should only be used for troubleshooting networks. Refer to [icmp(4)](/icmp/4.md) for more information.

- *icmp\_bmcastecho*

  (*bool*) Set to “YES” to respond to broadcast or multicast ICMP ping packets. Refer to [icmp(4)](/icmp/4.md) for more information.

- *ip\_portrange\_first*

  (*int*) If not set to “NO”, this is the first port in the default portrange. Refer to [ip(4)](/ip/4.md) for more information.

- *ip\_portrange\_last*

  (*int*) If not set to “NO”, this is the last port in the default portrange. Refer to [ip(4)](/ip/4.md) for more information.

- *network\_interfaces*

  (*str*) Set to the list of network interfaces to configure on this host or “AUTO” (the default) for all current interfaces. Setting the *network\_interfaces* variable to anything other than the default is deprecated. Interfaces that the administrator wishes to store configuration for, but not start at boot should be configured with the “NOAUTO” keyword in their *ifconfig\_*⟨*interface*⟩ variables as described below.

  An *ifconfig\_*⟨*interface*⟩ variable is assumed to exist for each value of *interface*. When an interface name contains any of the characters “.-/+” they are translated to “\_” before lookup. For example, the interface *em0.102* would be configured using the variable *ifconfig\_em0\_102*.

  The variable can contain arguments to [ifconfig(8)](/ifconfig/8.md), as well as special case-insensitive keywords described below. Such keywords are removed before passing the value to [ifconfig(8)](/ifconfig/8.md) while the order of the other arguments is preserved.

  For example, to assign the IPv4 address 192.0.2.1/24 to the interface em0:

  ```
  ifconfig_em0="inet 192.0.2.1/24 up"
  ```

  If the variable *ifconfig\_*⟨*interface*⟩*\_ipv6* is set, then *ifconfig\_*⟨*interface*⟩ does not need to be set unless an IPv4 address should also be assigned to the interface.

  It is possible to add IP alias entries using [ifconfig(8)](/ifconfig/8.md) syntax with the address family keyword such as inet. Assuming that the interface in question was em0, it might look something like this:

  ```
  ifconfig_em0_alias0="inet 127.0.0.253/32"
  ifconfig_em0_alias1="inet 127.0.0.254/32"
  ```

  It also possible to configure multiple IP addresses in Classless Inter-Domain Routing (CIDR) address notation, whose each address component can be a range like inet 192.0.2.5-23/24 or inet6 2001:db8:1-f::1/64. This notation allows address and prefix length part only, not the other address modifiers. Note that the maximum number of the generated addresses from a range specification is limited to an integer value specified in *netif\_ipexpand\_max* in **rc.conf** because a small typo can unexpectedly generate a large number of addresses. The default value is 2048. It can be increased by adding the following line into **rc.conf**:

  ```
  netif_ipexpand_max="4096"
  ```

  In the case of 192.0.2.5-23/24, the address 192.0.2.5 will be configured with the prefix length /24 and the addresses 192.0.2.6 to 192.0.2.23 with the non-conflicting prefix length /32 as explained in the [ifconfig(8)](/ifconfig/8.md) alias section. Note that this special CIDR handling is only for inet, not for the other address families such as inet6.

  With the interface in question being em0, an example could look like:

  ```
  ifconfig_em0_alias2="inet 192.0.2.129/27"
  ifconfig_em0_alias3="inet 192.0.2.1-5/28"
  ```

  and so on.

  Note that deprecated *ipv4\_addrs\_*⟨*interface*⟩ variable was supported for IPv4 CIDR address notation. The *ifconfig\_*⟨*interface*⟩*\_alias*⟨*n*⟩ variable replaces it, though *ipv4\_addrs\_*⟨*interface*⟩ is still supported for backward compatibility.

  For each *ifconfig\_*⟨*interface*⟩*\_alias*⟨*n*⟩ entry with an address family keyword, its contents are passed to [ifconfig(8)](/ifconfig/8.md). Execution stops at the first unsuccessful access, so if something like this is present:

  ```
  ifconfig_em0_alias0="inet 127.0.0.251/32"
  ifconfig_em0_alias1="inet 127.0.0.252/32"
  ifconfig_em0_alias2="inet 127.0.0.253/32"
  ifconfig_em0_alias4="inet 127.0.0.254/32"
  ```

  Then note that alias4 would *not* be added since the search would stop with the missing “alias3” entry. Because of this difficult to manage behavior, there is *ifconfig\_*⟨*interface*⟩*\_aliases* variable, which has the same functionality as *ifconfig\_*⟨*interface*⟩*\_alias*⟨*n*⟩ and can have all of the entries in a variable like the following:

  ```
  ifconfig_em0_aliases="\
  	inet 127.0.0.251/32 \
  	inet 127.0.0.252/32 \
  	inet 127.0.0.253/32 \
  	inet 127.0.0.254/32"
  ```

  It also supports netmask notation for backward compatibility.

  If the */etc/start\_if*.⟨*interface*⟩ file is present, it is read and executed by the [sh(1)](/sh/1.md) interpreter before configuring the interface as specified in the *ifconfig\_*⟨*interface*⟩ and *ifconfig\_*⟨*interface*⟩*\_alias*⟨*n*⟩ variables.

  If a *vlans\_*⟨*interface*⟩ variable is set, a [vlan(4)](/vlan/4.md) interface will be created for each item in the list with the *vlandev* argument set to *interface*. If a vlan interface's name is a number, then that number is used as the vlan tag and the new vlan interface is named *interface*.*tag*. Otherwise, the vlan tag must be specified via a *vlan* parameter in the *create\_args\_*⟨*interface*⟩ variable.

  To create a vlan device named em0.101 on em0 with the vlan tag 101 and the optional IPv4 address 192.0.2.1/24:

  ```
  vlans_em0="101"
  ifconfig_em0_101="inet 192.0.2.1/24"
  ```

  To create a vlan device named myvlan on em0 with the vlan tag 102:

  ```
  vlans_em0="myvlan"
  create_args_myvlan="vlan 102"
  ```

  If a *wlans\_*⟨*interface*⟩ variable is set, an [wlan(4)](/wlan/4.md) interface will be created for each item in the list with the *wlandev* argument set to *interface*. Further wlan cloning arguments may be passed to the [ifconfig(8)](/ifconfig/8.md) **create** command by setting the *create\_args\_*⟨*interface*⟩ variable. One or more [wlan(4)](/wlan/4.md) devices must be created for each wireless device as of FreeBSD 8.0. Debugging flags for [wlan(4)](/wlan/4.md) devices as set by [wlandebug(8)](/wlandebug/8.md) may be specified with an *wlandebug\_*⟨*interface*⟩ variable. The contents of this variable will be passed directly to [wlandebug(8)](/wlandebug/8.md).

  If the *ifconfig\_*⟨*interface*⟩ contains the keyword “NOAUTO” then the interface will be created but not started at boot or by */etc/pccard\_ether* when *network\_interfaces* is set to “AUTO”. Start the interface by issuing the following command:

  ```
  service netif start interface
  ```

  It is possible to bring up an interface with DHCP by adding “DHCP” to the *ifconfig\_*⟨*interface*⟩ variable. For instance, to initialize the em0 device via DHCP, it is possible to use something like:

  ```
  ifconfig_em0="DHCP"
  ```

  If you want to configure your wireless interface with [wpa\_supplicant(8)](/wpa_supplicant/8.md) for use with WPA, EAP/LEAP or WEP, you need to add “WPA” to the *ifconfig\_*⟨*interface*⟩ variable.

  On the other hand, if you want to configure your wireless interface with [hostapd(8)](/hostapd/8.md), you need to add “HOSTAP” to the *ifconfig\_*⟨*interface*⟩ variable. [hostapd(8)](/hostapd/8.md) will use the settings from */etc/hostapd-*⟨*interface*⟩.conf

  Finally, you can add [ifconfig(8)](/ifconfig/8.md) options in this variable, in addition to the */etc/start\_if*.⟨*interface*⟩ file. For instance, to configure an [ath(4)](/ath/4.md) wireless device in station mode with an address obtained via DHCP, using WPA authentication and 802.11b mode, it is possible to use something like:

  ```
  wlans_ath0="wlan0"
  ifconfig_wlan0="DHCP WPA mode 11b"
  ```

  In addition to the *ifconfig\_*⟨*interface*⟩ form, a fallback variable *ifconfig\_DEFAULT* may be configured. It will be used for all interfaces with no *ifconfig\_*⟨*interface*⟩ variable.

  It is also possible to rename an interface by doing:

  ```
  ifconfig_em0_name="net0"
  ifconfig_net0="inet 192.0.2.1/24"
  ```

- *ipv6\_enable*

  (*bool*) This variable is deprecated. Use *ifconfig\_*⟨*interface*⟩\_ipv6 and *ipv6\_activate\_all\_interfaces* if necessary.

  If the variable is “YES”, “inet6 accept\_rtadv” is added to all of *ifconfig\_*⟨*interface*⟩\_ipv6 and the *ipv6\_activate\_all\_interfaces* variable is defined as “YES”.

- *ipv6\_prefer*

  (*bool*) This variable is deprecated. Use *ip6addrctl\_policy* instead.

  If the variable is “YES”, the default address selection policy table set by [ip6addrctl(8)](/ip6addrctl/8.md) will be IPv6-preferred.

  If the variable is “NO”, the default address selection policy table set by [ip6addrctl(8)](/ip6addrctl/8.md) will be IPv4-preferred.

- *ipv6\_activate\_all\_interfaces*

  (*bool*) This controls initial configuration on IPv6-capable interfaces with no corresponding *ifconfig\_*⟨*interface*⟩\_ipv6 variable. Note that it is not always necessary to set this variable to “YES” to use IPv6 functionality on FreeBSD. In most cases, just configuring *ifconfig\_*⟨*interface*⟩\_ipv6 variables works.

  If the variable is “NO”, all interfaces which do not have a corresponding *ifconfig\_*⟨*interface*⟩\_ipv6 variable will be marked as “IFDISABLED” at creation. This means that all IPv6 functionality on that interface is completely disabled to enforce a security policy. If the variable is set to “YES”, the flag will be cleared on all of the interfaces.

  In most cases, just defining an *ifconfig\_*⟨*interface*⟩\_ipv6 for an IPv6-capable interface should be sufficient. However, if an interface is added dynamically (by some tunneling protocols such as PPP, for example), it is often difficult to define the variable in advance. In such a case, configuring the “IFDISABLED” flag can be disabled by setting this variable to “YES”.

  For more details of the “IFDISABLED” flag and keywords “inet6 ifdisabled”, see [ifconfig(8)](/ifconfig/8.md).

  Default is “NO”.

- *ipv6\_privacy*

  (*bool*) If the variable is “YES” privacy addresses will be generated for each IPv6 interface as described in RFC 4941.

- *ipv6\_network\_interfaces*

  (*str*) This is the IPv6 equivalent of *network\_interfaces*. Normally manual configuration of this variable is not needed.

- *ipv6\_cpe\_wanif*

  (*str*) If the variable is set to an interface name, the [ifconfig(8)](/ifconfig/8.md) options “inet6 -no\_radr accept\_rtadv” will be added to the specified interface automatically before evaluating *ifconfig\_*⟨*interface*⟩\_ipv6, and two [sysctl(8)](/sysctl/8.md) variables *net.inet6.ip6.rfc6204w3* and *net.inet6.ip6.no\_radr* will be set to 1.

  This means the specified interface will accept ICMPv6 Router Advertisement messages on that link and add the discovered routers into the Default Router List. While the other interfaces can still accept RA messages if the “inet6 accept\_rtadv” option is specified, adding routes into the Default Router List will be disabled by “inet6 no\_radr” option by default. See [ifconfig(8)](/ifconfig/8.md) for more details.

  Note that ICMPv6 Router Advertisement messages will be accepted even when *net.inet6.ip6.forwarding* is 1 (packet forwarding is enabled) when *net.inet6.ip6.rfc6204w3* is set to 1.

  Default is “NO”.

- *ifconfig\_*⟨*interface*⟩\_descr

  (*str*) This assigns arbitrary description to an interface. The [sysctl(8)](/sysctl/8.md) variable *net.ifdescr\_maxlen* limits its length. This static setting may be overridden by commands started with dynamic interface configuration utilities like [dhclient(8)](/dhclient/8.md) hooks. The description can be seen with [ifconfig(8)](/ifconfig/8.md) command and it may be exported with [bsnmpd(1)](/bsnmpd/1.md) daemon using its MIB-2 module.

- *ifconfig\_*⟨*interface*⟩\_ipv6

  (*str*) IPv6 functionality on an interface should be configured by *ifconfig\_*⟨*interface*⟩\_ipv6, instead of setting ifconfig parameters in *ifconfig\_*⟨*interface*⟩. If this variable is empty, all IPv6 configurations on the specified interface by other variables such as *ipv6\_prefix\_*⟨*interface*⟩ will be ignored.

  Aliases should be set by *ifconfig\_*⟨*interface*⟩*\_alias*⟨*n*⟩ with “inet6” keyword. For example:

  ```
  ifconfig_em0_ipv6="inet6 2001:db8:1::1 prefixlen 64"
  ifconfig_em0_alias0="inet6 2001:db8:2::1 prefixlen 64"
  ```

  Interfaces that have an “inet6 accept\_rtadv” keyword in *ifconfig\_*⟨*interface*⟩\_ipv6 setting will be automatically configured by SLAAC (StateLess Address AutoConfiguration) described in *RFC 4862*.

  Note that a link-local address will be automatically configured in addition to the configured global-scope addresses because the IPv6 specifications require it on each link. The address is calculated from the MAC address by using an algorithm defined in *RFC 4862*, Section 5.3.

  If only a link-local address is needed on the interface, the following configuration can be used:

  ```
  ifconfig_em0_ipv6="inet6 auto_linklocal"
  ```

  A link-local address can also be configured manually. This is useful for the default router address of an IPv6 router so that it does not change when the network interface card is replaced. For example:

  ```
  ifconfig_em0_ipv6="inet6 fe80::1 prefixlen 64"
  ```

- *ipv6\_prefix\_*⟨*interface*⟩

  (*str*) If one or more prefixes are defined in *ipv6\_prefix\_*⟨*interface*⟩ addresses based on each prefix and the EUI-64 interface index will be configured on that interface. Note that this variable will be ignored when *ifconfig\_*⟨*interface*⟩\_ipv6 is empty.

  For example, the following configuration

  ```
  ipv6_prefix_em0="2001:db8:1:0 2001:db8:2:0"
  ```

  is equivalent to the following:

  ```
  ifconfig_em0_alias0="inet6 2001:db8:1:: eui64 prefixlen 64"
  ifconfig_em0_alias1="inet6 2001:db8:1:: prefixlen 64 anycast"
  ifconfig_em0_alias2="inet6 2001:db8:2:: eui64 prefixlen 64"
  ifconfig_em0_alias3="inet6 2001:db8:2:: prefixlen 64 anycast"
  ```

  These Subnet-Router anycast addresses will be added only when *ipv6\_gateway\_enable* is YES.

- *ipv6\_default\_interface*

  (*str*) If not set to “NO”, this is the default output interface for scoped addresses. This works only with ipv6\_gateway\_enable="NO".

- *ip6addrctl\_enable*

  (*bool*) This variable is to enable configuring default address selection policy table (RFC 3484). The table can be specified in another variable *ip6addrctl\_policy*. For *ip6addrctl\_policy* the following keywords can be specified: “ipv4\_prefer”, “ipv6\_prefer”, or “AUTO”.

  If “ipv4\_prefer” or “ipv6\_prefer” is specified, [ip6addrctl(8)](/ip6addrctl/8.md) installs a pre-defined policy table described in Section 10.3 (IPv4-preferred) or 2.1 (IPv6-preferred) of RFC 3484.

  If “AUTO” is specified, it attempts to read a file */etc/ip6addrctl.conf* first. If this file is found, [ip6addrctl(8)](/ip6addrctl/8.md) reads and installs it. If not found, a policy is automatically set according to *ipv6\_activate\_all\_interfaces* variable; if the variable is set to “YES” the IPv6-preferred one is used. Otherwise IPv4-preferred.

  The default value of *ip6addrctl\_enable* and *ip6addrctl\_policy* are “YES” and “AUTO”, respectively.

- *cloned\_interfaces*

  (*str*) Set to the list of clonable network interfaces to create on this host. Further cloning arguments may be passed to the [ifconfig(8)](/ifconfig/8.md) **create** command for each interface by setting the *create\_args\_*⟨*interface*⟩ variable. If an interface name is specified with “:sticky” keyword, the interface will not be destroyed even when *rc.d/netif* script is invoked with “stop” argument. This is useful when reconfiguring the interface without destroying it. Entries in *cloned\_interfaces* are automatically appended to *network\_interfaces* for configuration.

- *cloned\_interfaces\_sticky*

  (*bool*) This variable is to globally enable functionality of “:sticky” keyword in *cloned\_interfaces* for all interfaces. The default value is “NO”. Even if this variable is specified to “YES”, “:nosticky” keyword can be used to override it on per interface basis.

- *gif\_interfaces*

  Set to the list of [gif(4)](/gif/4.md) tunnel interfaces to configure on this host. A *gifconfig\_*⟨*interface*⟩ variable is assumed to exist for each value of *interface*. The value of this variable is used to configure the link layer of the tunnel using the **tunnel** option to [ifconfig(8)](/ifconfig/8.md). Additionally, this option ensures that each listed interface is created via the **create** option to [ifconfig(8)](/ifconfig/8.md) before attempting to configure it.

  For example, configure two [gif(4)](/gif/4.md) interfaces with:

  ```
  gif_interfaces="gif0 gif1"
  gifconfig_gif0="100.64.0.1 100.64.0.2"
  ifconfig_gif0="inet 10.0.0.1/30 10.0.0.2"
  gifconfig_gif1="inet6 2a00::1 2a01::1"
  ifconfig_gif1="inet 10.1.0.1/30 10.1.0.2"
  ```

- *ppp\_enable*

  (*bool*) If set to “YES”, run the [ppp(8)](/ppp/8.md) daemon.

- *ppp\_profile*

  (*str*) The name of the profile to use from */etc/ppp/ppp.conf*. Also used for per-profile overrides of *ppp\_mode* and *ppp\_nat*, and *ppp\_*⟨*profile*⟩\_unit. When the profile name contains any of the characters “.-/+” they are translated to “\_” for the proposes of the override variable names.

- *ppp\_mode*

  (*str*) Mode in which to run the [ppp(8)](/ppp/8.md) daemon.

- *ppp\_*⟨*profile*⟩\_mode

  (*str*) Overrides the global *ppp\_mode* for *profile*. Accepted modes are “auto”, “ddial”, “direct” and “dedicated”. See the manual for a full description.

- *ppp\_nat*

  (*bool*) If set to “YES”, enables network address translation. Used in conjunction with *gateway\_enable* allows hosts on private network addresses access to the Internet using this host as a network address translating router. Default is “YES”.

- *ppp\_*⟨*profile*⟩\_nat

  (*str*) Overrides the global *ppp\_nat* for *profile*.

- *ppp\_*⟨*profile*⟩\_unit

  (*int*) Set the unit number to be used for this profile. See the manual description of **-unit***N* for details.

- *ppp\_user*

  (*str*) The name of the user under which [ppp(8)](/ppp/8.md) should be started. By default, [ppp(8)](/ppp/8.md) is started as “root”.

- *rc\_conf\_files*

  (*str*) This option is used to specify a list of files that will override the settings in */etc/defaults/rc.conf*. The files will be read in the order in which they are specified and should include the full path to the file. By default, the files specified are */etc/rc.conf* and */etc/rc.conf.local*.

- *zfs\_enable*

  (*bool*) If set to “YES”, */etc/rc.d/zfs* will attempt to automatically mount ZFS file systems and initialize ZFS volumes (ZVOLs).

- *zpool\_reguid*

  (*str*) A space-separated list of ZFS pool names for which new pool GUIDs should be assigned upon first boot. This is useful when using a ZFS pool copied from a template, such as a virtual machine image.

- *zpool\_upgrade*

  (*str*) A space-separated list of ZFS pool names for which the version should be upgraded upon first boot. This is useful when using a ZFS pool generated by the [makefs(8)](/makefs/8.md) utility.

- *gptboot\_enable*

  (*bool*) If set to “YES”, */etc/rc.d/gptboot* will log if the system successfully (or not) booted from a GPT partition, which had the *bootonce* attribute set using [gpart(8)](/gpart/8.md) utility.

- *geli\_devices*

  (*str*) List of devices to automatically attach on boot. Note that .eli devices from */etc/fstab* are automatically appended to this list.

- *geli\_groups*

  (*str*) List of groups containing devices to automatically attach on boot with the same keyfiles and passphrase. This must be accompanied with a corresponding *geli\_*⟨*group*⟩*\_devices* variable.

- *geli\_tries*

  (*int*) Number of times user is asked for the pass-phrase. If empty, it will be taken from *kern.geom.eli.tries* sysctl variable.

- *geli\_default\_flags*

  (*str*) Default flags to use by [geli(8)](/geli/8.md) when configuring disk encryption. Flags can be configured for every device separately by defining the *geli\_*⟨*device*⟩*\_flags* variable, and for every group separately by defining the *geli\_*⟨*group*⟩*\_flags* variable.

- *geli\_autodetach*

  (*str*) Specifies if GELI devices should be marked for detach on last close after file systems are mounted. Default is “YES”. This can be changed for every device separately by defining the *geli\_*⟨*device*⟩*\_autodetach* variable.

- *root\_rw\_mount*

  (*bool*) Set to “YES” by default. After the file systems are checked at boot time, the root file system is remounted as read-write if this is set to “YES”. Diskless systems that mount their root file system from a read-only remote NFS share should set this to “NO” in their *rc.conf*.

- *fsck\_y\_enable*

  (*bool*) If set to “YES”, [fsck(8)](/fsck/8.md) will be run with the **-y** flag if the initial preen of the file systems fails.

- *background\_fsck*

  (*bool*) If set to “NO”, the system will not attempt to run [fsck(8)](/fsck/8.md) in the background where possible.

- *background\_fsck\_delay*

  (*int*) The amount of time in seconds to sleep before starting a background [fsck(8)](/fsck/8.md). It defaults to sixty seconds to allow large applications such as the X server to start before disk I/O bandwidth is monopolized by [fsck(8)](/fsck/8.md). If set to a negative number, the background file system check will be delayed indefinitely to allow the administrator to run it at a more convenient time. For example it may be run from [cron(8)](/cron/8.md) by adding a line like

  ```
  0 4 * * * root /etc/rc.d/bgfsck forcestart
  ```

  to */etc/crontab*.

- *netfs\_types*

  (*str*) List of file system types that are network-based. This list should generally not be modified by end users. Use *extra\_netfs\_types* instead.

- *extra\_netfs\_types*

  (*str*) If set to something other than “NO” (the default), this variable extends the list of file system types for which automatic mounting at startup by [rc(8)](/rc/8.md) should be delayed until the network is initialized. It should contain a whitespace-separated list of network file system descriptor pairs, each consisting of a file system type as passed to [mount(8)](/mount/8.md) and a human-readable, one-word description, joined with a colon (‘:’). Extending the default list in this way is only necessary when third party file system types are used.

- *syslogd\_enable*

  (*bool*) If set to “YES”, run the [syslogd(8)](/syslogd/8.md) daemon. Note, the *syslogd\_oomprotect* variable is set to “YES” by default in */etc/defaults/rc.conf*.

- *syslogd\_program*

  (*str*) Path to [syslogd(8)](/syslogd/8.md) (default */usr/sbin/syslogd*).

- *syslogd\_flags*

  (*str*) If *syslogd\_enable* is set to “YES”, these are the flags to pass to [syslogd(8)](/syslogd/8.md).

- *inetd\_enable*

  (*bool*) If set to “YES”, run the [inetd(8)](/inetd/8.md) daemon.

- *inetd\_program*

  (*str*) Path to [inetd(8)](/inetd/8.md) (default */usr/sbin/inetd*).

- *inetd\_flags*

  (*str*) If *inetd\_enable* is set to “YES”, these are the flags to pass to [inetd(8)](/inetd/8.md).

- *hastd\_enable*

  (*bool*) If set to “YES”, run the [hastd(8)](/hastd/8.md) daemon.

- *hastd\_program*

  (*str*) Path to [hastd(8)](/hastd/8.md) (default */sbin/hastd*).

- *hastd\_flags*

  (*str*) If *hastd\_enable* is set to “YES”, these are the flags to pass to [hastd(8)](/hastd/8.md).

- *local\_unbound\_enable*

  (*bool*) If set to “YES”, run the [unbound(8)](/unbound/8.md) daemon as a local caching DNS resolver. Note, the *local\_unbound\_oomprotect* variable is set to “YES” by default in */etc/defaults/rc.conf*.

- *nscd\_enable*

  (*bool*) Set to “YES” to start the [nscd(8)](/nscd/8.md) caching daemon for the **nsswitch** subsystem.

- *nscd\_flags*

  (*str*) If *nscd\_enable* is set to “YES”, these flags are passed to [nscd(8)](/nscd/8.md).

- *kdc\_enable*

  (*bool*) Set to “YES” to start a Kerberos 5 authentication server at boot time.

- *kdc\_program*

  (*str*) If *kdc\_enable* is set to “YES” this is the path to Kerberos 5 Authentication Server.

- *kdc\_flags*

  (*str*) Empty by default. This variable contains additional flags to be passed to the Kerberos 5 authentication server.

- *kadmind\_enable*

  (*bool*) Set to “YES” to start [kadmind(8)](/kadmind/8.md), the Kerberos 5 Administration Daemon; set to “NO” on a slave server.

- *kadmind\_program*

  (*str*) If *kadmind\_enable* is set to “YES” this is the path to Kerberos 5 Administration Daemon.

- *kpasswdd\_enable*

  (*bool*) Set to “YES” to start [kpasswdd(8)](/kpasswdd/8.md), the Kerberos 5 Password-Changing Daemon; set to “NO” on a slave server.

- *kpasswdd\_program*

  (*str*) If *kpasswdd\_enable* is set to “YES” this is the path to Kerberos 5 Password-Changing Daemon.

- *kfd\_enable*

  (*bool*) Set to “YES” to start [kfd(8)](/kfd/8.md), the Kerberos 5 ticket forwarding daemon, at the boot time.

- *kfd\_program*

  (*str*) Path to [kfd(8)](/kfd/8.md) (default */usr/libexec/kfd*).

- *rwhod\_enable*

  (*bool*) If set to “YES”, run the [rwhod(8)](/rwhod/8.md) daemon at boot time.

- *rwhod\_flags*

  (*str*) If *rwhod\_enable* is set to “YES”, these are the flags to pass to it.

- *update\_motd*

  (*bool*) If set to “YES”, */var/run/motd* will be updated at boot time to reflect the kernel release being run. If set to “NO”, */var/run/motd* will not be updated.

- *nfs\_client\_enable*

  (*bool*) If set to “YES”, run the NFS client daemons at boot time.

- *nfs\_access\_cache*

  (*int*) If *nfs\_client\_enable* is set to “YES”, this can be set to “0” to disable NFS ACCESS RPC caching, or to the number of seconds for which NFS ACCESS results should be cached. A value of 2-10 seconds will substantially reduce network traffic for many NFS operations.

- *nfs\_server\_enable*

  (*bool*) If set to “YES”, run the NFS server daemons at boot time.

- *nfs\_server\_flags*

  (*str*) If *nfs\_server\_enable* is set to “YES”, these are the flags to pass to the [nfsd(8)](/nfsd/8.md) daemon.

- *nfsv4\_server\_enable*

  (*bool*) If *nfs\_server\_enable* is set to “YES” and *nfsv4\_server\_enable* is set to “YES”, enable the server for NFSv4 as well as NFSv2 and NFSv3.

- *nfsv4\_server\_only*

  (*bool*) If *nfs\_server\_enable* is set to “YES” and *nfsv4\_server\_only* is set to “YES”, enable the NFS server for NFSv4 only.

- *nfs\_server\_maxio*

  (*int*) value to set vfs.nfsd.srvmaxio to, which is the maximum I/O size for the NFS server.

- *tlsclntd\_enable*

  (*bool*) If set to “YES”, run the [rpc.tlsclntd(8)](/rpc.tlsclntd/8.md) daemon, which is needed for NFS-over-TLS NFS mounts.

- *tlsservd\_enable*

  (*bool*) If set to “YES”, run the [rpc.tlsservd(8)](/rpc.tlsservd/8.md) daemon, which is needed for the [nfsd(8)](/nfsd/8.md) to support NFS-over-TLS NFS mounts.

- *nfsuserd\_enable*

  (*bool*) If *nfsuserd\_enable* is set to “YES”, run the nfsuserd daemon, which is needed for NFSv4 in order to map between user/group names vs uid/gid numbers. If *nfsv4\_server\_enable* is set to “YES”, this will be forced enabled.

- *nfsuserd\_flags*

  (*str*) If *nfsuserd\_enable* is set to “YES”, these are the flags to pass to the [nfsuserd(8)](/nfsuserd/8.md) daemon.

- *nfscbd\_enable*

  (*bool*) If *nfscbd\_enable* is set to “YES”, run the nfscbd daemon, which enables callbacks/delegations for the NFSv4 client.

- *nfscbd\_flags*

  (*str*) If *nfscbd\_enable* is set to “YES”, these are the flags to pass to the [nfscbd(8)](/nfscbd/8.md) daemon.

- *mountd\_enable*

  (*bool*) If set to “YES”, and no *nfs\_server\_enable* is set, start [mountd(8)](/mountd/8.md), but not [nfsd(8)](/nfsd/8.md) daemon. It is commonly needed to run CFS without real NFS used.

- *mountd\_flags*

  (*str*) If *mountd\_enable* is set to “YES”, these are the flags to pass to the [mountd(8)](/mountd/8.md) daemon.

- *weak\_mountd\_authentication*

  (*bool*) If set to “YES”, allow services like PCNFSD to make non-privileged mount requests.

- *nfs\_reserved\_port\_only*

  (*bool*) If set to “YES”, provide NFS services only on a secure port.

- *nfs\_bufpackets*

  (*int*) If set to a number, indicates the number of packets worth of socket buffer space to reserve on an NFS client. The kernel default is typically 4. Using a higher number may be useful on gigabit networks to improve performance. The minimum value is 2 and the maximum is 64.

- *rpc\_lockd\_enable*

  (*bool*) If set to “YES” and also an NFS server or client, run [rpc.lockd(8)](/rpc.lockd/8.md) at boot time.

- *rpc\_lockd\_flags*

  (*str*) If *rpc\_lockd\_enable* is set to “YES”, these are the flags to pass to the [rpc.lockd(8)](/rpc.lockd/8.md) daemon.

- *rpc\_statd\_enable*

  (*bool*) If set to “YES” and also an NFS server or client, run [rpc.statd(8)](/rpc.statd/8.md) at boot time.

- *rpc\_statd\_flags*

  (*str*) If *rpc\_statd\_enable* is set to “YES”, these are the flags to pass to the [rpc.statd(8)](/rpc.statd/8.md) daemon.

- *rpcbind\_program*

  (*str*) Path to [rpcbind(8)](/rpcbind/8.md) (default */usr/sbin/rpcbind*).

- *rpcbind\_enable*

  (*bool*) If set to “YES”, run the [rpcbind(8)](/rpcbind/8.md) service at boot time.

- *rpcbind\_flags*

  (*str*) If *rpcbind\_enable* is set to “YES”, these are the flags to pass to the [rpcbind(8)](/rpcbind/8.md) daemon.

- *pppoed\_enable*

  (*bool*) If set to “YES”, run the [pppoed(8)](/pppoed/8.md) daemon at boot time to provide PPP over Ethernet services.

- *pppoed\_*⟨*provider*⟩

  (*str*) [pppoed(8)](/pppoed/8.md) listens to requests to this *provider* and ultimately runs [ppp(8)](/ppp/8.md) with a *system* argument of the same name.

- *pppoed\_flags*

  (*str*) Additional flags to pass to [pppoed(8)](/pppoed/8.md).

- *pppoed\_interface*

  (*str*) The network interface to run [pppoed(8)](/pppoed/8.md) on. This is mandatory when *pppoed\_enable* is set to “YES”.

- *ntpdate\_enable*

  (*bool*) If set to “YES”, run [ntpdate(8)](/ntpdate/8.md) at system startup. This command is intended to synchronize the system clock only *once* from some standard reference.

  Note that the use of the *ntpd\_sync\_on\_start* variable is a preferred alternative to the [ntpdate(8)](/ntpdate/8.md) utility as [ntpdate(8)](/ntpdate/8.md) is to be retired from the NTP distribution.

- *ntpdate\_config*

  (*str*) Configuration file for [ntpdate(8)](/ntpdate/8.md). Default */etc/ntp.conf*.

- *ntpdate\_hosts*

  (*str*) A whitespace-separated list of NTP servers to synchronize with at startup. The default is to use the servers listed in *ntpdate\_config*, if that file exists.

- *ntpdate\_program*

  (*str*) Path to [ntpdate(8)](/ntpdate/8.md) (default */usr/sbin/ntpdate*).

- *ntpdate\_flags*

  (*str*) If *ntpdate\_enable* is set to “YES”, these are the flags to pass to the [ntpdate(8)](/ntpdate/8.md) command (typically a hostname).

- *ntpd\_enable*

  (*bool*) If set to “YES”, run the [ntpd(8)](/ntpd/8.md) command at boot time.

- *ntpd\_program*

  (*str*) Path to [ntpd(8)](/ntpd/8.md) (default */usr/sbin/ntpd*).

- *ntpd\_config*

  (*str*) Path to [ntpd(8)](/ntpd/8.md) configuration file. Default */etc/ntp.conf*.

- *ntpd\_flags*

  (*str*) If *ntpd\_enable* is set to “YES”, these are the flags to pass to the [ntpd(8)](/ntpd/8.md) daemon.

- *ntpd\_sync\_on\_start*

  (*bool*) If set to “YES”, [ntpd(8)](/ntpd/8.md) is run with the **-g** flag, which syncs the system's clock on startup. See [ntpd(8)](/ntpd/8.md) for more information regarding the **-g** option. This is a preferred alternative to using [ntpdate(8)](/ntpdate/8.md) or specifying the *ntpdate\_enable* variable.

- *nis\_client\_enable*

  (*bool*) If set to “YES”, run the [ypbind(8)](/ypbind/8.md) service at system boot time.

- *nis\_client\_flags*

  (*str*) If *nis\_client\_enable* is set to “YES”, these are the flags to pass to the [ypbind(8)](/ypbind/8.md) service.

- *nis\_ypldap\_enable*

  (*bool*) If set to “YES”, run the [ypldap(8)](/ypldap/8.md) daemon at system boot time.

- *nis\_ypldap\_flags*

  (*str*) If *nis.ypldap\_enable* is set to “YES”, these are the flags to pass to the [ypldap(8)](/ypldap/8.md) daemon.

- *nis\_ypset\_enable*

  (*bool*) If set to “YES”, run the [ypset(8)](/ypset/8.md) daemon at system boot time.

- *nis\_ypset\_flags*

  (*str*) If *nis\_ypset\_enable* is set to “YES”, these are the flags to pass to the [ypset(8)](/ypset/8.md) daemon.

- *nis\_server\_enable*

  (*bool*) If set to “YES”, run the [ypserv(8)](/ypserv/8.md) daemon at system boot time.

- *nis\_server\_flags*

  (*str*) If *nis\_server\_enable* is set to “YES”, these are the flags to pass to the [ypserv(8)](/ypserv/8.md) daemon.

- *nis\_ypxfrd\_enable*

  (*bool*) If set to “YES”, run the [rpc.ypxfrd(8)](/rpc.ypxfrd/8.md) daemon at system boot time.

- *nis\_ypxfrd\_flags*

  (*str*) If *nis\_ypxfrd\_enable* is set to “YES”, these are the flags to pass to the [rpc.ypxfrd(8)](/rpc.ypxfrd/8.md) daemon.

- *nis\_yppasswdd\_enable*

  (*bool*) If set to “YES”, run the [rpc.yppasswdd(8)](/rpc.yppasswdd/8.md) daemon at system boot time.

- *nis\_yppasswdd\_flags*

  (*str*) If *nis\_yppasswdd\_enable* is set to “YES”, these are the flags to pass to the [rpc.yppasswdd(8)](/rpc.yppasswdd/8.md) daemon.

- *rpc\_ypupdated\_enable*

  (*bool*) If set to “YES”, run the **rpc.ypupdated** daemon at system boot time.

- *bsnmpd\_enable*

  (*bool*) If set to “YES”, run the [bsnmpd(1)](/bsnmpd/1.md) daemon at system boot time. Be sure to understand the security implications of running an SNMP daemon on your host.

- *bsnmpd\_flags*

  (*str*) If *bsnmpd\_enable* is set to “YES”, these are the flags to pass to the [bsnmpd(1)](/bsnmpd/1.md) daemon.

- *defaultrouter*

  (*str*) If not set to “NO”, create a default route to this host name or IP address (use an IP address if this router is also required to get to the name server!).

- *defaultrouter\_fibN*

  (*str*) If not set to “NO”, create a default route in FIB N to this host name or IP address.

- *ipv6\_defaultrouter*

  (*str*) The IPv6 equivalent of *defaultrouter*.

- *ipv6\_defaultrouter\_fibN*

  (*str*) The IPv6 equivalent of *defaultrouter\_fibN*.

- *static\_arp\_pairs*

  (*str*) Set to the list of static ARP pairs that are to be added at system boot time. For each whitespace separated *element* in the value, a *static\_arp\_*⟨*element*⟩ variable is assumed to exist whose contents will later be passed to a “**arp** **-S**” operation. For example

  ```
  static_arp_pairs="gw"
  static_arp_gw="192.168.1.1 00:01:02:03:04:05"
  ```

- *static\_ndp\_pairs*

  (*str*) Set to the list of static NDP pairs that are to be added at system boot time. For each whitespace separated *element* in the value, a *static\_ndp\_*⟨*element*⟩ variable is assumed to exist whose contents will later be passed to a “**ndp** **-s**” operation. For example

  ```
  static_ndp_pairs="gw"
  static_ndp_gw="2001:db8:3::1 00:01:02:03:04:05"
  ```

- *static\_routes*

  (*str*) Set to the list of static routes that are to be added at system boot time. If not set to “NO” then for each whitespace separated *element* in the value, a *route\_*⟨*element*⟩ variable is assumed to exist whose contents will later be passed to a “**route** **add**” operation. For example:

  ```
  static_routes="ext mcast:gif0 gif0local:gif0"
  route_ext="-net 10.0.0.0/24 -gateway 192.168.0.1"
  route_mcast="-net 224.0.0.0/4 -iface gif0"
  route_gif0local="-host 169.254.1.1 -iface lo0"
  ```

  When an *element* is in the form of name:ifname, the route is specific to the interface ifname.

- *ipv6\_static\_routes*

  (*str*) The IPv6 equivalent of *static\_routes*. If not set to “NO” then for each whitespace separated *element* in the value, a *ipv6\_route\_*⟨*element*⟩ variable is assumed to exist whose contents will later be passed to a “**route** **add** **-inet6**” operation.

- *gateway\_enable*

  (*bool*) If set to “YES”, configure host to act as an IP router, e.g. to forward packets between interfaces.

- *ipv6\_gateway\_enable*

  (*bool*) The IPv6 equivalent of *gateway\_enable*.

- *routed\_enable*

  (*bool*) If set to “YES”, run a routing daemon of some sort, based on the settings of *routed\_program* and *routed\_flags*.

- *route6d\_enable*

  (*bool*) The IPv6 equivalent of *routed\_enable*. If set to “YES”, run a routing daemon of some sort, based on the settings of *route6d\_program* and *route6d\_flags*.

- *routed\_program*

  (*str*) If *routed\_enable* is set to “YES”, this is the name of the routing daemon to use. The default is [routed(8)](/routed/8.md).

- *route6d\_program*

  (*str*) The IPv6 equivalent of *routed\_program*. The default is [route6d(8)](/route6d/8.md).

- *routed\_flags*

  (*str*) If *routed\_enable* is set to “YES”, these are the flags to pass to the routing daemon.

- *route6d\_flags*

  (*str*) The IPv6 equivalent of *routed\_flags*.

- *rtadvd\_enable*

  (*bool*) If set to “YES”, run the [rtadvd(8)](/rtadvd/8.md) daemon at boot time. The [rtadvd(8)](/rtadvd/8.md) utility sends ICMPv6 Router Advertisement messages to the interfaces specified in *rtadvd\_interfaces*. This should only be enabled with great care. You may want to fine-tune [rtadvd.conf(5)](/rtadvd.conf/5.md).

- *rtadvd\_flags*

  (*str*) If *rtadvd\_enable* is set to “YES”, these are the flags to pass to [rtadvd(8)](/rtadvd/8.md).

- *rtadvd\_interfaces*

  (*str*) If *rtadvd\_enable* is set to “YES” this is the list of interfaces to use.

- *arpproxy\_all*

  (*bool*) If set to “YES”, enable global proxy ARP.

- *forward\_sourceroute*

  (*bool*) If set to “YES” and *gateway\_enable* is also set to “YES”, source-routed packets are forwarded.

- *accept\_sourceroute*

  (*bool*) If set to “YES”, the system will accept source-routed packets directed at it.

- *rarpd\_enable*

  (*bool*) If set to “YES”, run the [rarpd(8)](/rarpd/8.md) daemon at system boot time.

- *rarpd\_flags*

  (*str*) If *rarpd\_enable* is set to “YES”, these are the flags to pass to the [rarpd(8)](/rarpd/8.md) daemon.

- *bootparamd\_enable*

  (*bool*) If set to “YES”, run the [bootparamd(8)](/bootparamd/8.md) daemon at system boot time.

- *bootparamd\_flags*

  (*str*) If *bootparamd\_enable* is set to “YES”, these are the flags to pass to the [bootparamd(8)](/bootparamd/8.md) daemon.

- *stf\_interface\_ipv4addr*

  (*str*) If not set to “NO”, this is the local IPv4 address for 6to4 (IPv6 over IPv4 tunneling interface). Specify this entry to enable the 6to4 interface.

- *stf\_interface\_ipv4plen*

  (*int*) Prefix length for 6to4 IPv4 addresses, to limit peer address range. An effective value is 0-31.

- *stf\_interface\_ipv6\_ifid*

  (*str*) IPv6 interface ID for [stf(4)](/stf/4.md). This can be set to “AUTO”.

- *stf\_interface\_ipv6\_slaid*

  (*str*) IPv6 Site Level Aggregator for [stf(4)](/stf/4.md).

- *ipv6\_ipv4mapping*

  (*bool*) If set to “YES” this enables IPv4 mapped IPv6 address communication (like ::ffff:a.b.c.d).

- *rtsold\_enable*

  (*bool*) Set to “YES” to enable the [rtsold(8)](/rtsold/8.md) daemon to send ICMPv6 Router Solicitation messages.

- *rtsold\_flags*

  (*str*) If *rtsold\_enable* is set to “YES”, these are the flags to pass to [rtsold(8)](/rtsold/8.md).

- *rtsol\_flags*

  (*str*) For interfaces configured with the “inet6 accept\_rtadv” keyword, these are the flags to pass to [rtsol(8)](/rtsol/8.md).

  Note that *rtsold\_enable* is mutually exclusive to *rtsol\_flags*; *rtsold\_enable* takes precedence.

- *keybell*

  (*str*) The keyboard bell sound. Set to “normal”, “visual”, “off”, or “NO” if the default behavior is desired. For details, refer to the [kbdcontrol(1)](/kbdcontrol/1.md) manpage.

- *keyboard*

  (*str*) If set to a non-null string, the virtual console's keyboard input is set to this device.

- *keymap*

  (*str*) If set to “NO”, no keymap is installed, otherwise the value is used to install the keymap file found in */usr/share/syscons/keymaps/*⟨*value*⟩*.kbd* (if using [syscons(4)](/syscons/4.md)) or */usr/share/vt/keymaps/*⟨*value*⟩*.kbd* (if using [vt(4)](/vt/4.md)).

- *keyrate*

  (*str*) The keyboard repeat speed. Set to “slow”, “normal”, “fast”, or “NO” if the default behavior is desired.

- *keychange*

  (*str*) If not set to “NO”, attempt to program the function keys with the value. The value should be a single string of the form: “*funkey\_number* *new\_value* \[*funkey\_number* *new\_value* *...*\]”.

- *cursor*

  (*str*) Can be set to the value of “normal”, “blink”, “destructive”, or “NO” to set the cursor behavior explicitly or choose the default behavior.

- *scrnmap*

  (*str*) If set to “NO”, no screen map is installed, otherwise the value is used to install the screen map file in */usr/share/syscons/scrnmaps/*⟨*value*⟩. This parameter is ignored when using [vt(4)](/vt/4.md) as the console driver.

- *font8x16*

  (*str*) If set to “NO”, the default 8x16 font value is used for screen size requests, otherwise the value in */usr/share/syscons/fonts/*⟨*value*⟩ or */usr/share/vt/fonts/*⟨*value*⟩ is used (depending on the console driver being used).

- *font8x14*

  (*str*) If set to “NO”, the default 8x14 font value is used for screen size requests, otherwise the value in */usr/share/syscons/fonts/*⟨*value*⟩ or */usr/share/vt/fonts/*⟨*value*⟩ is used (depending on the console driver being used).

- *font8x8*

  (*str*) If set to “NO”, the default 8x8 font value is used for screen size requests, otherwise the value in */usr/share/syscons/fonts/*⟨*value*⟩ or */usr/share/vt/fonts/*⟨*value*⟩ is used (depending on the console driver being used).

- *blanktime*

  (*int*) If set to “NO”, the default screen blanking interval is used, otherwise it is set to *value* seconds.

- *saver*

  (*str*) If not set to “NO”, this is the actual screen saver to use (blank, snake, daemon, etc).

- *moused\_nondefault\_enable*

  (*str*) If set to “NO”, the mouse device specified on the command line is not automatically treated as enabled by the */etc/rc.d/moused* script. Having this variable set to “YES” allows a [usb(4)](/usb/4.md) mouse, for example, to be enabled as soon as it is plugged in.

- *moused\_enable*

  (*str*) If set to “YES”, the [moused(8)](/moused/8.md) daemon is started for doing cut/paste selection on the console.

- *moused\_type*

  (*str*) This is the protocol type of the mouse connected to this host. This variable must be set if *moused\_enable* is set to “YES”, but defaults to “auto” as the [moused(8)](/moused/8.md) daemon is able to detect the appropriate mouse type automatically in many cases. Set this variable to one from the following list if the automatic detection fails.

  If the mouse is attached to the PS/2 mouse port, choose “auto” or “ps/2”, regardless of the brand and model of the mouse. Likewise, if the mouse is attached to the bus mouse port, choose “auto” or “busmouse”. All other protocols are for serial mice and will not work with the PS/2 and bus mice. If this is a USB mouse, “auto” is the only protocol type which will work.

  - microsoft

    Microsoft mouse (serial)

  - intellimouse

    Microsoft IntelliMouse (serial)

  - mousesystems

    Mouse systems Corp. mouse (serial)

  - mmseries

    MM Series mouse (serial)

  - logitech

    Logitech mouse (serial)

  - busmouse

    A bus mouse

  - mouseman

    Logitech MouseMan and TrackMan (serial)

  - glidepoint

    ALPS GlidePoint (serial)

  - thinkingmouse

    Kensington ThinkingMouse (serial)

  - ps/2

    PS/2 mouse

  - mmhittab

    MM HitTablet (serial)

  - x10mouseremote

    X10 MouseRemote (serial)

  - versapad

    Interlink VersaPad (serial)

    Even if the mouse is not in the above list, it may be compatible with one in the list. Refer to the manual page for [moused(8)](/moused/8.md) for compatibility information.

    It should also be noted that while this is enabled, any other client of the mouse (such as an X server) should access the mouse through the virtual mouse device, */dev/sysmouse*, and configure it as a “sysmouse” type mouse, since all mouse data is converted to this single canonical format when using [moused(8)](/moused/8.md). If the client program does not support the “sysmouse” type, specify the “mousesystems” type. It is the second preferred type.

- *moused\_port*

  (*str*) If *moused\_enable* is set to “YES”, this is the actual port the mouse is on. It might be */dev/cuau0* for a COM1 serial mouse, or */dev/psm0* for a PS/2 mouse, for example.

- *moused\_flags*

  (*str*) If *moused\_flags* is set, its value is used as an additional set of flags to pass to the [moused(8)](/moused/8.md) daemon.

- *moused\_**XXX**\_flags*

  When *moused\_nondefault\_enable* is enabled, and a [moused(8)](/moused/8.md) daemon is started for a non-default port, the *moused\_**XXX**\_flags* set of options has precedence over and replaces the default *moused\_flags* (where *XXX* is the name of the non-default port, i.e., *ums0*). By setting *moused\_**XXX**\_flags* it is possible to set up a different set of default flags for each [moused(8)](/moused/8.md) instance. For example, you can use “-3” for the default *moused\_flags* to make your laptop's touchpad more comfortable to use, but an empty set of options for *moused\_ums0\_flags* when your [usb(4)](/usb/4.md) mouse has three or more buttons.

- *mousechar\_start*

  (*int*) If set to “NO”, the default mouse cursor character range 0xd0-0xd3 is used, otherwise the range start is set to *value* character, see [vidcontrol(1)](/vidcontrol/1.md). Use if the default range is occupied in the language code table.

- *allscreens\_flags*

  (*str*) If set, [vidcontrol(1)](/vidcontrol/1.md) is run with these options for each of the virtual terminals (*/dev/ttyv\**). For example, “**-m** **on**” will enable the mouse pointer on all virtual terminals if *moused\_enable* is set to “YES”.

- *allscreens\_kbdflags*

  (*str*) If set, [kbdcontrol(1)](/kbdcontrol/1.md) is run with these options for each of the virtual terminals (*/dev/ttyv\**). For example, “**-h** 200” will set the [syscons(4)](/syscons/4.md) or [vt(4)](/vt/4.md) scrollback (history) buffer to 200 lines.

- *cron\_enable*

  (*bool*) If set to “YES”, run the [cron(8)](/cron/8.md) daemon at system boot time.

- *cron\_program*

  (*str*) Path to [cron(8)](/cron/8.md) (default */usr/sbin/cron*).

- *cron\_flags*

  (*str*) If *cron\_enable* is set to “YES”, these are the flags to pass to [cron(8)](/cron/8.md).

- *cron\_dst*

  (*bool*) If set to “YES”, enable the special handling of transitions to and from the Daylight Saving Time in [cron(8)](/cron/8.md) (equivalent to using the flag **-s**).

- *lpd\_program*

  (*str*) Path to [lpd(8)](/lpd/8.md) (default */usr/sbin/lpd*).

- *lpd\_enable*

  (*bool*) If set to “YES”, run the [lpd(8)](/lpd/8.md) daemon at system boot time.

- *lpd\_flags*

  (*str*) If *lpd\_enable* is set to “YES”, these are the flags to pass to the [lpd(8)](/lpd/8.md) daemon.

- *chkprintcap\_enable*

  (*bool*) If set to “YES”, run the [chkprintcap(8)](/chkprintcap/8.md) command before starting the [lpd(8)](/lpd/8.md) daemon.

- *chkprintcap\_flags*

  (*str*) If *lpd\_enable* and *chkprintcap\_enable* are set to “YES”, these are the flags to pass to the [chkprintcap(8)](/chkprintcap/8.md) program. The default is “-d”, which causes missing directories to be created.

- *dumpdev*

  (*str*) Indicates the device (usually a swap partition) to which a crash dump should be written in the event of a system crash. If the value of this variable is “AUTO”, the first suitable swap device listed in */etc/fstab* will be used as dump device. Otherwise, the value of this variable is passed as the argument to [dumpon(8)](/dumpon/8.md) and [savecore(8)](/savecore/8.md). To disable crash dumps, set this variable to “NO”.

- *dumpon\_flags*

  (*str*) Flags to pass to [dumpon(8)](/dumpon/8.md) when configuring *dumpdev* as the system dump device.

- *dumpdir*

  (*str*) When the system reboots after a crash and a crash dump is found on the device specified by the *dumpdev* variable, [savecore(8)](/savecore/8.md) will save that crash dump and a copy of the kernel to the directory specified by the *dumpdir* variable. The default value is */var/crash*. Set to “NO” to not run [savecore(8)](/savecore/8.md) at boot time when *dumpdir* is set.

- *savecore\_enable*

  (*bool*) If set to “NO”, disable automatic extraction of the crash dump from the *dumpdev*.

- *savecore\_flags*

  (*str*) If crash dumps are enabled, these are the flags to pass to the [savecore(8)](/savecore/8.md) utility.

- *quota\_enable*

  (*bool*) Set to “YES” to turn on user and group disk quotas on system startup via the [quotaon(8)](/quotaon/8.md) command for all file systems marked as having quotas enabled in */etc/fstab*. The kernel must be built with **options QUOTA** for disk quotas to function.

- *check\_quotas*

  (*bool*) Set to “YES” to enable user and group disk quota checking via the [quotacheck(8)](/quotacheck/8.md) command.

- *quotacheck\_flags*

  (*str*) If *quota\_enable* is set to “YES”, and *check\_quotas* is set to “YES”, these are the flags to pass to the [quotacheck(8)](/quotacheck/8.md) utility. The default is “-a”, which checks quotas for all file systems with quotas enabled in */etc/fstab*.

- *quotaon\_flags*

  (*str*) If *quota\_enable* is set to “YES”, these are the flags to pass to the [quotaon(8)](/quotaon/8.md) utility. The default is “-a”, which enables quotas for all file systems with quotas enabled in */etc/fstab*.

- *quotaoff\_flags*

  (*str*) If *quota\_enable* is set to “YES”, these are the flags to pass to the [quotaoff(8)](/quotaoff/8.md) utility when shutting down the quota system. The default is “-a”, which disables quotas for all file systems with quotas enabled in */etc/fstab*.

- *accounting\_enable*

  (*bool*) Set to “YES” to enable system accounting through the [accton(8)](/accton/8.md) facility.

- *firstboot\_sentinel*

  (*str*) This variable specifies the full path to a “first boot” sentinel file. If a file exists with this path, *rc.d* scripts with the “firstboot” keyword will be run on startup and the sentinel file will be deleted after the boot process completes. The sentinel file must be located on a writable file system which is mounted no later than *early\_late\_divider* to function properly. The default is */firstboot*.

- *linux\_enable*

  (*bool*) Set to “YES” to enable Linux/ELF binary emulation at system initial boot time.

- *sysvipc\_enable*

  (*bool*) If set to “YES”, load System V IPC primitives at boot time.

- *clear\_tmp\_enable*

  (*bool*) Set to “YES” to have */tmp* cleaned at startup.

- *clear\_tmp\_X*

  (*bool*) Set to “NO” to disable removing of X11 lock files, and the removal and (secure) recreation of the various socket directories for X11 related programs.

- *ldconfig\_paths*

  (*str*) Set to the list of shared library paths to use with [ldconfig(8)](/ldconfig/8.md). NOTE: */lib* and */usr/lib* will always be added first, so they need not appear in this list.

- *ldconfig32\_paths*

  (*str*) Set to the list of 32-bit compatibility shared library paths to use with [ldconfig(8)](/ldconfig/8.md).

- *ldconfig\_insecure*

  (*bool*) The [ldconfig(8)](/ldconfig/8.md) utility normally refuses to use directories which are writable by anyone except root. Set this variable to “YES” to disable that security check during system startup.

- *ldconfig\_local\_dirs*

  (*str*) Set to the list of local [ldconfig(8)](/ldconfig/8.md) directories. The names of all files in the directories listed will be passed as arguments to [ldconfig(8)](/ldconfig/8.md).

- *ldconfig\_local32\_dirs*

  (*str*) Set to the list of local 32-bit compatibility [ldconfig(8)](/ldconfig/8.md) directories. The names of all files in the directories listed will be passed as arguments to “**ldconfig** **-32**”.

- *kern\_securelevel\_enable*

  (*bool*) Set to “YES” to set the kernel security level at system startup.

- *kern\_securelevel*

  (*int*) The kernel security level to set at startup. The allowed range of *value* ranges from -1 (the compile time default) to 3 (the most secure). See [security(7)](/security/7.md) for the list of possible security levels and their effect on system operation.

- *sshd\_program*

  (*str*) Path to the SSH server program (*/usr/sbin/sshd* is the default).

- *sshd\_enable*

  (*bool*) Set to “YES” to start [sshd(8)](/sshd/8.md) at system boot time. Note, the *sshd\_oomprotect* variable is set to “YES” by default in */etc/defaults/rc.conf*.

- *sshd\_flags*

  (*str*) If *sshd\_enable* is set to “YES”, these are the flags to pass to the [sshd(8)](/sshd/8.md) daemon.

- *watchdogd\_enable*

  (*bool*) If set to “YES”, start the [watchdogd(8)](/watchdogd/8.md) daemon at boot time. This requires that the kernel have been compiled with a [watchdog(4)](/watchdog/4.md) compatible device.

- *watchdogd\_flags*

  (*str*) If *watchdogd\_enable* is set to “YES”, these are the flags passed to the [watchdogd(8)](/watchdogd/8.md) daemon.

- *watchdogd\_timeout*

  (*int*) If *watchdogd\_enable* is set to “YES”, this is a timeout that will be used by the [watchdogd(8)](/watchdogd/8.md) daemon. If this option is set, it overrides **-t** in *watchdogd\_flags*.

- *watchdogd\_shutdown\_timeout*

  (*int*) If *watchdogd\_enable* is set to “YES”, this is a timeout that will be set by the [watchdogd(8)](/watchdogd/8.md) daemon when it exits during the system shutdown. This timeout will not be set when returning to the single-user mode or when the watchdogd service is stopped individually using the [service(8)](/service/8.md) command or the rc.d script. Note that the timeout will be applied if [watchdogd(8)](/watchdogd/8.md) is stopped outside of [rc(8)](/rc/8.md) framework. If this option is set, it overrides **-x** in *watchdogd\_flags*.

- *devfs\_rulesets*

  (*str*) List of files containing sets of rules for [devfs(8)](/devfs/8.md).

- *devfs\_system\_ruleset*

  (*str*) Rule name(s) to apply to the system */dev* itself.

- *devfs\_set\_rulesets*

  (*str*) Pairs of already-mounted *dev* directories and rulesets that should be applied to them. For example: /mount/dev=ruleset\_name

- *devfs\_load\_rulesets*

  (*bool*) If set, always load the default rulesets listed in *devfs\_rulesets*.

- *performance\_cx\_lowest*

  (*str*) CPU idle state to use while on AC power. The string “LOW” indicates that [acpi(4)](/acpi/4.md) should use the lowest power state available while “HIGH” indicates that the lowest latency state (less power savings) should be used.

- *performance\_cpu\_freq*

  (*str*) CPU clock frequency to use while on AC power. The string “LOW” indicates that [cpufreq(4)](/cpufreq/4.md) should use the lowest frequency available while “HIGH” indicates that the highest frequency (less power savings) should be used.

- *economy\_cx\_lowest*

  (*str*) CPU idle state to use when off AC power. The string “LOW” indicates that [acpi(4)](/acpi/4.md) should use the lowest power state available while “HIGH” indicates that the lowest latency state (less power savings) should be used.

- *economy\_cpu\_freq*

  (*str*) CPU clock frequency to use when off AC power. The string “LOW” indicates that [cpufreq(4)](/cpufreq/4.md) should use the lowest frequency available while “HIGH” indicates that the highest frequency (less power savings) should be used.

- *jail\_enable*

  (*bool*) If set to “NO”, any configured jails will not be started.

- *jail\_conf*

  (*str*) The configuration filename used by [jail(8)](/jail/8.md) utility. The default value is */etc/jail.conf*. */etc/jail.*⟨*jname*⟩*.conf* and */etc/jail.conf.d/*⟨*jname*⟩*.conf* will also be used if ⟨*jname*⟩ is set in *jail\_list*.

- *jail\_parallel\_start*

  (*bool*) If set to “YES”, all configured jails will be started in the background (in parallel).

- *jail\_flags*

  (*str*) Unset by default. When set, use as default value for *jail\_*⟨*jname*⟩*\_flags* for every jail in *jail\_list*.

- *jail\_list*

  (*str*) A space-delimited list of jail names. When left empty, all of the [jail(8)](/jail/8.md) instances defined in the configuration file are started. The names specified in this list control the jail startup order. [jail(8)](/jail/8.md) instances missing from *jail\_list* must be started manually. Note that a jail's *depend* parameter in the configuration file may override this list.

- *jail\_reverse\_stop*

  (*bool*) When set to “YES”, all configured jails in *jail\_list* are stopped in reverse order.

- *jail\_*\* variables

  Note that older releases supported per-jail configuration via **rc.conf** variables. For example, hostname of a jail named vjail was able to be set by jail\_vjail\_hostname. These per-jail configuration variables are now obsolete in favor of [jail(8)](/jail/8.md) configuration file. For backward compatibility, when per-jail configuration variables are defined, [jail(8)](/jail/8.md) configuration files are created as */var/run/jail*.⟨*jname*⟩*.conf* and used.

  The following per-jail parameters are handled by *rc.d/jail* script out of their corresponding **rc.conf** variables. In addition to them, parameters in *jail\_*⟨*jname*⟩*\_parameters* will be added to the configuration file. They must be a semi-colon (‘;’) delimited list of “key=value”. For more details, see [jail(8)](/jail/8.md) manual page.

  - path

    set from *jail\_*⟨*jname*⟩*\_rootdir*

  - host.hostname

    set from *jail\_*⟨*jname*⟩*\_hostname*

  - exec.consolelog

    set from *jail\_*⟨*jname*⟩*\_consolelog*. The default value is */var/log/jail\_*⟨*jname*⟩*\_console.log*.

  - interface

    set from *jail\_*⟨*jname*⟩*\_interface*.

  - vnet.interface

    set from *jail\_*⟨*jname*⟩*\_vnet\_interface*. This implies vnet parameter will be enabled and cannot be specified with *jail\_*⟨*jname*⟩*\_interface*, *jail\_*⟨*jname*⟩*\_ip* and/or *jail\_*⟨*jname*⟩*\_ip\_multi*⟨*n*⟩ at the same time.

  - fstab

    set from *jail\_*⟨*jname*⟩*\_fstab*

  - mount

    set from *jail\_*⟨*jname*⟩*\_procfs\_enable*.

  - exec.fib

    set from *jail\_*⟨*jname*⟩*\_fib*

  - exec.start

    set from *jail\_*⟨*jname*⟩*\_exec\_start*. The parameter name was command in some older releases.

  - exec.prestart

    set from *jail\_*⟨*jname*⟩*\_exec\_prestart*

  - exec.poststart

    set from *jail\_*⟨*jname*⟩*\_exec\_poststart*

  - exec.stop

    set from *jail\_*⟨*jname*⟩*\_exec\_stop*

  - exec.prestop

    set from *jail\_*⟨*jname*⟩*\_exec\_prestop*

  - exec.poststop

    set from *jail\_*⟨*jname*⟩*\_exec\_poststop*

  - ip4.addr

    set if *jail\_*⟨*jname*⟩*\_ip* or *jail\_*⟨*jname*⟩*\_ip\_multi*⟨*n*⟩ contain IPv4 addresses

  - ip6.addr

    set if *jail\_*⟨*jname*⟩*\_ip* or *jail\_*⟨*jname*⟩*\_ip\_multi*⟨*n*⟩ contain IPv6 addresses

  - allow.mount

    set from *jail\_*⟨*jname*⟩*\_mount\_enable*

  - mount.devfs

    set from *jail\_*⟨*jname*⟩*\_devfs\_enable*

  - devfs\_ruleset

    set from *jail\_*⟨*jname*⟩*\_devfs\_ruleset*. This must be an integer, not a string.

  - mount.fdescfs

    set from *jail\_*⟨*jname*⟩*\_fdescfs\_enable*

  - allow.set\_hostname

    set from *jail\_*⟨*jname*⟩*\_set\_hostname\_allow*

  - allow.rawsocket

    set from *jail\_*⟨*jname*⟩*\_socket\_unixiproute\_only*

  - allow.sysvipc

    set from *jail\_*⟨*jname*⟩*\_sysvipc\_allow*

- *harvest\_mask*

  (*int*) Set to a bit-mask representing the entropy sources you wish to harvest. Refer to [random(4)](/random/4.md) for more information.

- *entropy\_dir*

  (*str*) Set to “NO” to disable caching entropy via [cron(8)](/cron/8.md). Otherwise set to the directory in which the entropy files are stored. To be useful, there must be a system cron job that regularly writes and rotates files here. All files found will be used at boot time. The default is */var/db/entropy*.

- *entropy\_file*

  (*str*) Set to “NO” to disable caching entropy through reboots. Otherwise set to the name of a file used to store cached entropy. This file should be located on a file system that is readable before all the volumes specified in [fstab(5)](/fstab/5.md) are mounted. By default, */entropy* is used, but if */var/db/entropy-file* is found it will also be used. This will be of some use to [bsdinstall(8)](/bsdinstall/8.md).

- *entropy\_boot\_file*

  (*str*) Set to “NO” to disable very early caching entropy through reboots. Otherwise set to the filename used to read very early reboot cached entropy. This file should be located where [loader(8)](/loader/8.md) can read it. See also [loader.conf(5)](/loader.conf/5.md). The default location is */boot/entropy*.

- *entropy\_save\_sz*

  (*int*) Size of the entropy cache files saved by **save-entropy** periodically.

- *entropy\_save\_num*

  (*int*) Number of entropy cache files to save by **save-entropy** periodically.

- *ipsec\_enable*

  (*bool*) Set to “YES” to run [setkey(8)](/setkey/8.md) on *ipsec\_file* at boot time.

- *ipsec\_file*

  (*str*) Configuration file for [setkey(8)](/setkey/8.md).

- *dmesg\_enable*

  (*bool*) Set to “YES” to save [dmesg(8)](/dmesg/8.md) to */var/run/dmesg.boot* on boot.

- *rcshutdown\_timeout*

  (*int*) If set, start a watchdog timer in the background which will terminate *rc.shutdown* if [shutdown(8)](/shutdown/8.md) has not completed within the specified time (in seconds). Notice that in addition to this soft timeout, [init(8)](/init/8.md) also applies a hard timeout for the execution of *rc.shutdown*. This is configured via [sysctl(8)](/sysctl/8.md) variable *kern.init\_shutdown\_timeout* and defaults to 120 seconds. Setting the value of *rcshutdown\_timeout* to more than 120 seconds will have no effect until the [sysctl(8)](/sysctl/8.md) variable *kern.init\_shutdown\_timeout* is also increased.

- *virecover\_enable*

  (*bool*) Set to “NO” to prevent the system from trying to recover prematurely terminated [vi(1)](/vi/1.md) sessions.

- *ugidfw\_enable*

  (*bool*) Set to “YES” to load the [mac\_bsdextended(4)](/mac_bsdextended/4.md) module upon system initialization and load a default ruleset file.

- *bsdextended\_script*

  (*str*) The default [mac\_bsdextended(4)](/mac_bsdextended/4.md) ruleset file to load. The default value of this variable is */etc/rc.bsdextended*.

- *newsyslog\_enable*

  (*bool*) If set to “YES”, run [newsyslog(8)](/newsyslog/8.md) command at startup.

- *newsyslog\_flags*

  (*str*) If *newsyslog\_enable* is set to “YES”, these are the flags to pass to the [newsyslog(8)](/newsyslog/8.md) program. The default is “-CN”, which causes log files flagged with a **C** to be created.

- *mdconfig\_md*⟨*X*⟩

  (*str*) Arguments to [mdconfig(8)](/mdconfig/8.md) for [md(4)](/md/4.md) device *X*. At minimum a **-t** *type* must be specified and either a **-s** *size* for malloc or swap backed [md(4)](/md/4.md) devices or a **-f** *file* for vnode backed [md(4)](/md/4.md) devices. Note that *mdconfig\_md*⟨*X*⟩ variables are evaluated until one variable is unset or null.

- *mdconfig\_md*⟨*X*⟩*\_newfs*

  (*str*) Optional arguments passed to [newfs(8)](/newfs/8.md) to initialize [md(4)](/md/4.md) device *X*.

- *mdconfig\_md*⟨*X*⟩*\_owner*

  (*str*) An ownership specification passed to [chown(8)](/chown/8.md) after the specified [md(4)](/md/4.md) device *X* has been mounted. Both the [md(4)](/md/4.md) device and the mount point will be changed.

- *mdconfig\_md*⟨*X*⟩*\_perms*

  (*str*) A mode string passed to [chmod(1)](/chmod/1.md) after the specified [md(4)](/md/4.md) device *X* has been mounted. Both the [md(4)](/md/4.md) device and the mount point will be changed.

- *mdconfig\_md*⟨*X*⟩*\_files*

  (*str*) Files to be copied to the mount point of the [md(4)](/md/4.md) device *X* after it has been mounted.

- *mdconfig\_md*⟨*X*⟩*\_cmd*

  (*str*) Command to execute after the specified [md(4)](/md/4.md) device *X* has been mounted. Note that the command is passed to **eval** and that both *\_dev* and *\_mp* variables can be used to reference respectively the [md(4)](/md/4.md) device and the mount point. Assuming that the [md(4)](/md/4.md) device is md0, one could set the following:

  ```
  mdconfig_md0_cmd="tar xfzC /var/file.tgz \${_mp}"
  ```

- *autobridge\_interfaces*

  (*str*) Set to the list of bridge interfaces that will have newly arriving interfaces checked against to be automatically added. If not set to “NO” then for each whitespace separated *element* in the value, a *autobridge\_*⟨*element*⟩ variable is assumed to exist which has a whitespace separated list of interface names to match, these names can use wildcards. For example:

  ```
  autobridge_interfaces="bridge0"
  autobridge_bridge0="tap* dc0 vlan[345]"
  ```

- *backlight\_enable*

  (*bool*) If set to “YES”, enable saving and restoring backlight levels at shutdown and boot time.

- *mixer\_enable*

  (*bool*) If set to “YES”, enable support for sound mixer.

- *hcsecd\_enable*

  (*bool*) If set to “YES”, enable Bluetooth security daemon.

- *hcsecd\_config*

  (*str*) Configuration file for [hcsecd(8)](/hcsecd/8.md). Default */etc/bluetooth/hcsecd.conf*.

- *sdpd\_enable*

  (*bool*) If set to “YES”, enable Bluetooth Service Discovery Protocol daemon.

- *sdpd\_control*

  (*str*) Path to [sdpd(8)](/sdpd/8.md) control socket. Default */var/run/sdp*.

- *sdpd\_groupname*

  (*str*) Sets [sdpd(8)](/sdpd/8.md) group to run as after it initializes. Default “nobody”.

- *sdpd\_username*

  (*str*) Sets [sdpd(8)](/sdpd/8.md) user to run as after it initializes. Default “nobody”.

- *bthidd\_enable*

  (*bool*) If set to “YES”, enable Bluetooth Human Interface Device daemon.

- *bthidd\_config*

  (*str*) Configuration file for [bthidd(8)](/bthidd/8.md). Default */etc/bluetooth/bthidd.conf*.

- *bthidd\_hids*

  (*str*) Path to a file, where [bthidd(8)](/bthidd/8.md) will store information about known HID devices. Default */var/db/bthidd.hids*.

- *rfcomm\_pppd\_server\_enable*

  (*bool*) If set to “YES”, enable Bluetooth RFCOMM PPP wrapper daemon.

- *rfcomm\_pppd\_server\_profile*

  (*str*) The name of the profile to use from */etc/ppp/ppp.conf*. Multiple profiles can be specified here. Also used to specify per-profile overrides. When the profile name contains any of the characters “.-/+” they are translated to “\_” for the proposes of the override variable names.

- *rfcomm\_pppd\_server\_*⟨*profile*⟩\_bdaddr

  (*str*) Overrides local address to listen on. By default [rfcomm\_pppd(8)](/rfcomm_pppd/8.md) will listen on “ANY” address. The address can be specified as BD\_ADDR or name.

- *rfcomm\_pppd\_server\_*⟨*profile*⟩\_channel

  (*str*) Overrides local RFCOMM channel to listen on. By default [rfcomm\_pppd(8)](/rfcomm_pppd/8.md) will listen on RFCOMM channel 1. Must set properly if multiple profiles used in the same time.

- *rfcomm\_pppd\_server\_*⟨*profile*⟩\_register\_sp

  (*bool*) Tells [rfcomm\_pppd(8)](/rfcomm_pppd/8.md) if it should register Serial Port service on the specified RFCOMM channel. Default “NO”.

- *rfcomm\_pppd\_server\_*⟨*profile*⟩\_register\_dun

  (*bool*) Tells [rfcomm\_pppd(8)](/rfcomm_pppd/8.md) if it should register Dial-Up Networking service on the specified RFCOMM channel. Default “NO”.

- *ubthidhci\_enable*

  (*bool*) If set to “YES”, change the USB Bluetooth controller from HID mode to HCI mode. You also need to specify the location of USB Bluetooth controller with the *ubthidhci\_busnum* and *ubthidhci\_addr* variables.

- *ubthidhci\_busnum*

  Bus number where the USB Bluetooth controller is located. Check the output of [usbconfig(8)](/usbconfig/8.md) on your system to find this information.

- *ubthidhci\_addr*

  Bus address of the USB Bluetooth controller. Check the output of [usbconfig(8)](/usbconfig/8.md) on your system to find this information.

- *utx\_enable*

  (*bool*) Set to “YES” to enable user accounting through the [utx(8)](/utx/8.md) facility.

- *netwait\_enable*

  (*bool*) If set to “YES”, delays the start of network-reliant services until *netwait\_if* is up, duplicate address discovery (DAD) has completed, and ICMP packets to a destination defined in *netwait\_ip* are flowing. Link state is examined first, followed by DAD, then “pinging” an IP address to verify network usability. If no destination can be reached or timeouts are exceeded, network services are started anyway with no guarantee that the network is usable.

- *netwait\_ip*

  (*str*) Empty by default. This variable contains a space-delimited list of IP addresses to [ping(8)](/ping/8.md). DNS hostnames should not be used as resolution is not guaranteed to be functional at this point. If multiple IP addresses are specified, each will be tried until one is successful or the list is exhausted.

- *netwait\_timeout*

  (*int*) Indicates the total number of seconds to perform a “ping” against each IP address in *netwait\_ip*, at a rate of one ping per second. If any of the pings are successful, full network connectivity is considered reliable. The default is 60.

- *netwait\_if*

  (*str*) Empty by default. Defines the name of the network interface on which watch for link. [ifconfig(8)](/ifconfig/8.md) is used to monitor the interface, looking for “status: no carrier”. Once gone, the link is considered up. This can be a [vlan(4)](/vlan/4.md) interface if desired.

- *netwait\_if\_timeout*

  (*int*) Defines the total number of seconds to wait for link to become usable, polled at a 1-second interval. The default is 30.

- *netwait\_dad*

  (*str*) Set to “NO” by default. Set to “YES” to enable waiting for DAD to complete.

- *netwait\_dad\_timeout*

  (*int*) Unset by default. Indicates the maximum number of seconds to wait for DAD to complete. If zero or unset, the timeout will be one more than the value of the *net.inet6.ip6.dad\_count* sysctl variable.

- *rctl\_enable*

  (*bool*) If set to “YES”, load [rctl(8)](/rctl/8.md) rules from the defined ruleset. The kernel must be built with **options RACCT** and **options RCTL**.

- *rctl\_rules*

  (*str*) Set to */etc/rctl.conf* by default. This variables contains the [rctl.conf(5)](/rctl.conf/5.md) ruleset to load for [rctl(8)](/rctl/8.md).

- *iovctl\_files*

  (*str*) A space-separated list of configuration files used by [iovctl(8)](/iovctl/8.md). The default value is an empty string.

- *autofs\_enable*

  (*bool*) If set to “YES”, start the [automount(8)](/automount/8.md) utility and the [automountd(8)](/automountd/8.md) and [autounmountd(8)](/autounmountd/8.md) daemons at boot time.

- *automount\_flags*

  (*str*) If *autofs\_enable* is set to “YES”, these are the flags to pass to the [automount(8)](/automount/8.md) program. By default no flags are passed.

- *automountd\_flags*

  (*str*) If *autofs\_enable* is set to “YES”, these are the flags to pass to the [automountd(8)](/automountd/8.md) daemon. By default no flags are passed.

- *autounmountd\_flags*

  (*str*) If *autofs\_enable* is set to “YES”, these are the flags to pass to the [autounmountd(8)](/autounmountd/8.md) daemon. By default no flags are passed.

- *ctld\_enable*

  (*bool*) If set to “YES”, start the [ctld(8)](/ctld/8.md) daemon at boot time.

- *iscsid\_enable*

  (*bool*) If set to “YES”, start the [iscsid(8)](/iscsid/8.md) daemon at boot time.

- *iscsictl\_enable*

  (*bool*) If set to “YES”, start the [iscsictl(8)](/iscsictl/8.md) utility at boot time.

- *iscsictl\_flags*

  (*str*) If *iscsictl\_enable* is set to “YES”, these are the flags to pass to the [iscsictl(8)](/iscsictl/8.md) program. The default is “-Aa”, which configures sessions based on the */etc/iscsi.conf* configuration file.

- *cfumass\_enable*

  (*bool*) If set to “YES”, create and export an USB LUN using [cfumass(4)](/cfumass/4.md) at boot time.

- *cfumass\_dir*

  (*str*) The directory where the files exported by USB LUN are located. The default directory is */var/cfumass*.

- *service\_delete\_empty*

  (*bool*) If set to “YES”, ‘service delete’ removes empty “rc.conf.d” files.

- *zfs\_bootonce\_activate*

  (*bool*) If set to “YES”, and a boot environment marked bootonce is successfully booted, it will be made permanently active.

- *zfskeys\_enable*

  (*bool*) If set to “YES”, enable auto-loading of encryption keys for encrypted ZFS datasets. For every dataset the script will first load the appropriate encryption key and then attempt to unlock the dataset.

  The script operates only on datasets which are encrypted with ZFS native encryption and have a ZFS “keylocation” dataset property beginning with “file://”.

- *zfskeys\_datasets*

  (*str*) A whitespace-separated list of ZFS datasets to unlock. The list is empty by default, which means that the script will attempt to unlock all datasets.

- *zfskeys\_timeout*

  (*int*) Define the total number of seconds to wait for the zfskeys script to unlock an encrypted dataset. The default is 10.

- *sendmail\_enable*

  (*str*) If set to “YES”, run the [sendmail(8)](/sendmail/8.md) daemon at system boot time. If set to “NO”, do not run a [sendmail(8)](/sendmail/8.md) daemon to listen for incoming network mail. This does not preclude a [sendmail(8)](/sendmail/8.md) daemon listening on the SMTP port of the loopback interface. The “NONE” option sets each *sendmail\_enable*, *sendmail\_submit\_enable*, *sendmail\_outbound\_enable*, *sendmail\_msp\_queue\_enable* to “NO”.

- *sendmail\_cert\_create*

  (*str*) If *sendmail\_enable* is set to “YES”, create a signed certificate */etc/mail/certs/host.cert* representing */etc/mail/certs/host.key* by the CA certificate in */etc/mail/certs/cacert.pem*. This will enable connecting hosts to negotiate STARTTLS allowing incoming email to be encrypted in transit. [sendmail(8)](/sendmail/8.md) needs to be configured to use these generated files. The default configuration in */etc/mail/freebsd.mc* has the required options in it.

- *sendmail\_cert\_cn*

  (*str*) If *sendmail\_enable* is set to “YES” and *sendmail\_cert\_create* is set to “YES”, this is the Common Name (CN) of the certificate that will be created. If *sendmail\_cert\_cn* is not set, the system's hostname will be used. If there is no hostname set, “amnesiac” will be used.

- *sendmail\_flags*

  (*str*) If *sendmail\_enable* is set to “YES”, these are the flags to pass to the [sendmail(8)](/sendmail/8.md) daemon.

- *sendmail\_submit\_enable*

  (*bool*) If set to “YES” and *sendmail\_enable* is set to “NO”, run [sendmail(8)](/sendmail/8.md) using *sendmail\_submit\_flags* instead of *sendmail\_flags*. This is intended to allow local mail submission via a localhost-only listening SMTP service required for running [sendmail(8)](/sendmail/8.md) as a non-set-user-ID binary. Note that this does not work inside [jail(2)](/jail/2.md) systems, as jails do not allow binding to just the localhost interface.

- *sendmail\_submit\_flags*

  (*str*) If *sendmail\_enable* is set to “NO” and *sendmail\_submit\_enable* is set to “YES”, these are the flags to pass to the [sendmail(8)](/sendmail/8.md) daemon.

- *sendmail\_outbound\_enable*

  (*bool*) If set to “YES” and both *sendmail\_enable* and *sendmail\_submit\_enable* are set to “NO”, run [sendmail(8)](/sendmail/8.md) using *sendmail\_outbound\_flags* instead of *sendmail\_flags*. This is intended to allow local mail queue management for systems that do not offer a listening SMTP service.

- *sendmail\_outbound\_flags*

  (*str*) If both *sendmail\_enable* and *sendmail\_submit\_enable* are set to “NO” and *sendmail\_outbound\_enable* is set to “YES”, these are the flags to pass to the [sendmail(8)](/sendmail/8.md) daemon.

- *sendmail\_msp\_queue\_enable*

  (*bool*) If set to “YES”, start a client (MSP) queue runner [sendmail(8)](/sendmail/8.md) daemon at system boot time. As of sendmail 8.12, a separate queue is used for command line submissions. The client queue runner ensures that nothing is left behind in the submission queue.

- *sendmail\_msp\_queue\_flags*

  (*str*) If *sendmail\_msp\_queue\_enable* is set to daemon. “YES”, these are the flags to pass to the [sendmail(8)](/sendmail/8.md)

- *precious\_machine*

  If set to “YES”, some destructive actions require removal of the action-specific safe-belts before being allowed. For instance, the file */var/run/noshutdown* is created to prevent [shutdown(8)](/shutdown/8.md) targeted at the wrong machine.

- *virtual\_oss\_enable*

  (*bool*) If set to “YES”, run one [virtual\_oss(8)](/virtual_oss/8.md) instance for each configuration defined in *virtual\_oss\_configs*.

- *virtual\_oss\_configs*

  (*str*) Space-separated list of [virtual\_oss(8)](/virtual_oss/8.md) configurations. For example:

  ```
  virtual_oss_configs="foo bar"
  ```

  Configurations need to be defined in *virtual\_oss\_*⟨*config\_name*⟩. By default, there is a *dsp* configuration which replaces the */dev/dsp* device created by [sound(4)](/sound/4.md) with a [virtual\_oss(8)](/virtual_oss/8.md) one. It can be redefined by setting the *virtual\_oss\_dsp* variable.

- *virtual\_oss\_*⟨*config\_name*⟩

  (*str*) [virtual\_oss(8)](/virtual_oss/8.md) argument list for configuration ⟨*config\_name*⟩.

- *virtual\_oss\_default\_control\_device*

  (*str*) The [virtual\_oss(8)](/virtual_oss/8.md) control device's name corresponding to the default configuration, *virtual\_oss\_dsp*. This is set by default to *vdsp.ctl*. When *virtual\_oss\_dsp* is set, it is strongly encouraged to set this variable as well, and use it as the **-t** option's argument in *virtual\_oss\_dsp*, because it is used by other programs and scripts, such as */etc/devd/snd.conf*.

## SERVICE JAILS

The service jails part of the rc system automatically puts a service into a jail. This jail inherits the filesystem and various other parts of the parent (if you allow child-jails in your jails, service jails can be used in jails) depending on the content of the ⟨*name*⟩*\_svcj\_options* variable. Typically this variable is set inside rc scripts, but it can be overridden in the rc config. Valid options for ⟨*name*⟩*\_svcj\_options* are:

- mlock

  Allows to lock memory pages into the physical memory.

- netv4

  Allows IPv4 network access and the ability to bind to reserved ports. If ⟨*name*⟩*\_svcj\_ipaddrs* is set, only the IPv4 addresses listed there will be visible to the jail, otherwise all assigned IPv4 addresses will be visible. This can not be combined with *netv6*.

- netv6

  Allows IPv6 network access and the ability to bind to reserved ports. If ⟨*name*⟩*\_svcj\_ipaddrs* is set, only the IPv6 addresses listed there will be visible to the jail, otherwise all assigned IPv6 addresses will be visible. This can not be combined with *netv4*.

- net\_basic

  Equivalent to enabling both *netv6* and *netv4*.

- net\_raw

  Allow to open raw sockets. This option can be combined with *netv4*, *netv6*, *net\_basic*.

- net\_all

  Allows IPv6 and IPv4 network access as for *netv4* and *netv6*, allows to open raw sockets, and allows to open sockets of protocol stacks that have not had jail functionality added to them.

- nfsd

  Allows to run nfsd and affiliated daemons.

- routing

  Allows to modify the system routing table.

- setaudit

  Allows to set the audit properties of the service, which ⟨*name*⟩*\_audit\_user* needs.

- settime

  Allows to set and slew the system time.

- sysvipc

  Inherits the SysV semaphores, SysV shared memory and SysV messages from the host or the parent jail.

- sysvipcnew

  Creates a new namespace for SysV semaphores, SysV shared memory and SysV messages for this particular service jail.

- vmm

  Allows access to [vmm(4)](/vmm/4.md). This option is only available when [vmm(4)](/vmm/4.md) is enabled in the kernel.

All non-network options can be combined with all other options. From the SysV options only one option can be specified.

A negative ⟨*name*⟩*\_nice* has no effect on a service in a service jail. Raising the priority of a process is not permitted inside a jail, and [nice(1)](/nice/1.md) starts the service at the priority of its login class instead of failing.

If the ⟨*name*⟩*\_svcj* variable is set to “YES”, this particular service is started in a service jail named *svcj-**name*.

The *svcj\_all\_enable* variable allows to enable service jails for all services of the system at once. Services which have ⟨*name*⟩*\_svcj* set to “NO” are excluded. Some services may set ⟨*name*⟩*\_svcj* to “NO” in the script to either prevent service jails for this service at all, or may set it to “NO” if it is not set in the rc config, to exclude it from *svcj\_all\_enable* but allow to explicitly enable it. The sshd service for example would not see other jails, if it would run as a service jail. This may or may not be what is needed, and as such it is excluded from *svcj\_all\_enable* but can be enabled via setting *sshd\_svcj* to “YES”.

## FILES

- */etc/defaults/rc.conf*

  - */etc/defaults/vendor.conf*

  - */etc/rc.conf*

  - */etc/rc.conf.local*

  - */etc/rc.conf.d/*

  ## SEE ALSO

[chmod(1)](/chmod/1.md), [cpuset(1)](/cpuset/1.md), [gdb(1)](/gdb/1.md) (*ports/devel/gdb*), [kbdcontrol(1)](/kbdcontrol/1.md), [limits(1)](/limits/1.md), [protect(1)](/protect/1.md), [sh(1)](/sh/1.md), [umask(1)](/umask/1.md), [uuidgen(1)](/uuidgen/1.md), [vi(1)](/vi/1.md), [vidcontrol(1)](/vidcontrol/1.md), [bridge(4)](/bridge/4.md), [dummynet(4)](/dummynet/4.md), [ip(4)](/ip/4.md), [ipf(4)](/ipf/4.md), [ipfw(4)](/ipfw/4.md), [ipnat(4)](/ipnat/4.md), [kld(4)](/kld/4.md), [pf(4)](/pf/4.md), [pflog(4)](/pflog/4.md), [pfsync(4)](/pfsync/4.md), [tcp(4)](/tcp/4.md), [udp(4)](/udp/4.md), [exports(5)](/exports/5.md), [fstab(5)](/fstab/5.md), [ipf(5)](/ipf/5.md), [ipnat(5)](/ipnat/5.md), [jail.conf(5)](/jail.conf/5.md), [loader.conf(5)](/loader.conf/5.md), [login.conf(5)](/login.conf/5.md), [motd(5)](/motd/5.md), [newsyslog.conf(5)](/newsyslog.conf/5.md), [pf.conf(5)](/pf.conf/5.md), [firewall(7)](/firewall/7.md), [growfs(7)](/growfs/7.md), [growfs\_postboot(7)](/growfs_postboot/7.md), [security(7)](/security/7.md), [tuning(7)](/tuning/7.md), [accton(8)](/accton/8.md), [bsdinstall(8)](/bsdinstall/8.md), [bthidd(8)](/bthidd/8.md), [chkprintcap(8)](/chkprintcap/8.md), [chown(8)](/chown/8.md), [cron(8)](/cron/8.md), [devfs(8)](/devfs/8.md), [dhclient(8)](/dhclient/8.md), [geli(8)](/geli/8.md), [hcsecd(8)](/hcsecd/8.md), [ifconfig(8)](/ifconfig/8.md), [inetd(8)](/inetd/8.md), [iovctl(8)](/iovctl/8.md), [ipf(8)](/ipf/8.md), [ipfw(8)](/ipfw/8.md), [ipnat(8)](/ipnat/8.md), [jail(8)](/jail/8.md), [kldxref(8)](/kldxref/8.md), [loader(8)](/loader/8.md), [lpd(8)](/lpd/8.md), [makewhatis(8)](/makewhatis/8.md), [mdconfig(8)](/mdconfig/8.md), [mdmfs(8)](/mdmfs/8.md), [mixer(8)](/mixer/8.md), [mountd(8)](/mountd/8.md), [moused(8)](/moused/8.md), [newfs(8)](/newfs/8.md), [newsyslog(8)](/newsyslog/8.md), [nfsd(8)](/nfsd/8.md), [ntpd(8)](/ntpd/8.md), [ntpdate(8)](/ntpdate/8.md), [pfctl(8)](/pfctl/8.md), [pflogd(8)](/pflogd/8.md), [ping(8)](/ping/8.md), [powerd(8)](/powerd/8.md), [quotacheck(8)](/quotacheck/8.md), [quotaon(8)](/quotaon/8.md), [rc(8)](/rc/8.md), [rc.subr(8)](/rc.subr/8.md), [rcorder(8)](/rcorder/8.md), [rfcomm\_pppd(8)](/rfcomm_pppd/8.md), [route(8)](/route/8.md), [route6d(8)](/route6d/8.md), [routed(8)](/routed/8.md), [rpc.lockd(8)](/rpc.lockd/8.md), [rpc.statd(8)](/rpc.statd/8.md), [rpc.tlsclntd(8)](/rpc.tlsclntd/8.md), [rpc.tlsservd(8)](/rpc.tlsservd/8.md), [rpcbind(8)](/rpcbind/8.md), [rwhod(8)](/rwhod/8.md), [savecore(8)](/savecore/8.md), [sdpd(8)](/sdpd/8.md), [sendmail(8)](/sendmail/8.md), [service(8)](/service/8.md), [sshd(8)](/sshd/8.md), [swapon(8)](/swapon/8.md), [sysctl(8)](/sysctl/8.md), [syslogd(8)](/syslogd/8.md), [sysrc(8)](/sysrc/8.md), [unbound(8)](/unbound/8.md), [usbconfig(8)](/usbconfig/8.md), [utx(8)](/utx/8.md), [virtual\_oss(8)](/virtual_oss/8.md), [wlandebug(8)](/wlandebug/8.md), [yp(8)](/yp/8.md), [ypbind(8)](/ypbind/8.md), [ypserv(8)](/ypserv/8.md), [ypset(8)](/ypset/8.md)

## HISTORY

The **rc.conf** file appeared in FreeBSD 2.2.2.

## AUTHORS

Jordan K. Hubbard.
