Go to main content

man pages section 8: System Administration Commands

Exit Print View

Updated: Wednesday, July 27, 2022



in.ndpd - daemon for IPv6 autoconfiguration


/usr/lib/inet/in.ndpd [-adt] [-f config_file]


in.ndpd provides both the host and router autoconfiguration components of Neighbor Discovery for IPv6 and Stateless and Stateful Address Autoconfiguration for IPv6. In particular, in.ndpd implements:

  • router discovery;

  • prefix discovery;

  • parameter discovery;

  • invocation of stateful address autoconfiguration;

  • stateless address autoconfiguration; and

  • privacy extensions for stateless address autoconfiguration.

Other aspects of Neighbor Discovery are implemented by ip6(4P), including:

  • address resolution;

  • neighbor unreachability detection; and

  • redirect.

The duplicate address detection function is implemented by the system kernel.

in.ndpd is managed by the service management facility (SMF), by means of the service identifier:


If the /etc/inet/ndpd.conf file does not exist or does not set the variable AdvSendAdvertisements to true for a network interface, then in.ndpd will make the node a host for that interface, that is, sending router solicitation messages and then using router advertisement messages it receives to autoconfigure the node. Note that in.ndpd only autoconfigures the addresses of global or site-local scope from the prefix advertisement.

If AdvSendAdvertisements is set to true for an interface, then in.ndpd will perform router functions on that interface, that is, sending router advertisement messages to autoconfigure the attached hosts, but not use any advertisements it receives for autoconfiguration. However, when sending advertisements, in.ndpd will use the advertisements it sends itself to autoconfigure its prefixes.

Stateless autoconfiguration requires no manual configuration of hosts, minimal (if any) configuration of routers, and no additional servers. The stateless mechanism enables a host to generate its own addresses and uses local information as well as non-local information that is advertised by routers to generate the addresses. in.ndpd will plumb logical interfaces for each of these addresses.

Stateful autoconfiguration involves the dhcpagent(8) daemon and the use of the DHCPv6 protocol. The dhcpagent daemon is responsible for plumbing the logical interfaces for the acquired addresses, maintaining the leases, and handling duplicate addresses. in.ndpd starts the dhcpagent daemon automatically and signals when DHCPv6 should be started. in.ndpd also detects when dhcpagent configures the logical interfaces, and sets the appropriate prefix length on each according to received Routing Advertisement messages. in.ndpd will not stop dhcpagent; dhcpagent will exit after a period of time with no leases to manage.

Temporary addresses that are autoconfigured for an interface can also be implemented. A temporary address token is enabled for one or more interfaces on a host. However, unlike standard, autoconfigured IPv6 addresses, a temporary address consists of the site prefix and a randomly generated 64 bit number. This random number becomes the interface ID segment of the IPv6 address. A link-local address is not generated with the temporary address as the interface ID.

If the kernel detects a duplicate temporary address, in.ndpd will automatically choose another.

Routers advertise all prefixes that have been assigned on the link. IPv6 hosts use Neighbor Discovery to obtain a subnet prefix from a local router. Hosts automatically create IPv6 addresses by combining the subnet prefix with an interface IDs that is generated from an interface's MAC address. In the absence of routers, a host can generate only link-local addresses. Link-local addresses can only be used for communication with nodes on the same link.


Supported options and equivalent SMF service properties are listed below. SMF service properties are set by using the svccfg command, for example:

# svccfg -s ndp:default setprop key=value
# svcadm refresh

Turn off stateless and stateful address auto configuration. When set, the daemon does not autoconfigure any addresses and does not renumber any addresses. This option does the same thing as the following lines in ndpd.conf(5):

ifdefault StatefulAddrConf off
ifdefault StatelessAddrConf off

Use of this option is equivalent to setting the stateless_addr_conf property to false.


Turn on large amounts of debugging output on stdout. When set, the program runs in the foreground and stays attached to the controlling terminal. Use of this option is equivalent to setting the debug property to true.

–f  config_file

Use config_file for configuration information instead of the default /etc/inet/ndpd.conf. Use of this option is equivalent to setting the config_file property to the configuration file to be used.


Turn on tracing (printing) of all sent and received packets tostdout. When set, the program runs in the foreground and stays attached to the controlling terminal. As such, this option cannot be run under the SMF.



Configuration file. This file is not necessary on a host, but it is required on a router to enable in.ndpd to advertise autoconfiguration information to the hosts.


See attributes(7) for descriptions of the following attributes:


See Also

icmp6(4P), ip6(4P), ndpd.conf(5), attributes(7), smf(7), dhcpagent(8), ipadm(8), svcadm(8)

Narten, T., Nordmark, E., Simpson, W.RFC 2461, Neighbor Discovery for IP Version 6 (IPv6). The Internet Society. December 1998.

Thomson, S., Narten, T. RFC 2462, IPv6 Stateless Address Autoconfiguration. The Internet Society. December 1998.

Narten, T., and Draves, R. RFC 3041, Privacy Extensions for Stateless Address Autoconfiguration in IPv6. The Internet Society. January 2001.


Receipt of a SIGHUP signal will make in.ndpd restart and reread /etc/inet/ndpd.conf.


The in.ndpd daemon service is managed by the service management facility, smf(7), under the service identifier:


Administrative actions on this service, such as enabling, disabling, or requesting restart, can be performed by using svcadm(8) command.