System Administration Guide: IP Services

IPv6 Daemons

This section describes the following IPv6 daemons:

in.ndpd Daemon

This daemon implements router discovery and auto-address configuration for IPv6. The following table shows the supported options.

Table 16–2 in.ndpd Daemon Options




Turns on debugging for all events 


Turns on specific debugging 


File to read configuration from (instead of default file) 


Prints related information for each interface 


Does not loop back router advertisements 


Ignores received packets 


Verbose mode (reports various types of diagnostic messages) 


Turns on packet tracing 

Parameters control the actions in.ndpd. Those parameters are set in the /etc/inet/ndpd.conf configuration file and the /var/inet/ndpd_state.interface startup file (if the parameters exist).

When the /etc/inet/ndpd.conf file exists, the file is parsed and used to configure a node as a router. The following table lists the valid keywords that might appear in this file. When a host is booted, routers might not be immediately available, or advertised packets by the router might be dropped and might not reach the host. The /var/inet/ndpd_state.interface file is a state file. This file is updated periodically by each node. When the node fails and is restarted, the node can configure its interfaces in the absence of routers. This file contains the interface address, the time that the file is updated, and how long the file is valid. This file also contains other parameters that are “learned” from previous router advertisements.

Note –

You do not need to alter the contents of the state files. The in.ndpd daemon automatically maintains the state files.

Table 16–3 /etc/inet/ndpd.conf Keywords




Specifies router behavior for all interfaces. Use the following syntax to set router parameters and corresponding values: 

ifdefault [variable value]


Specifies the default behavior for prefix advertisements. Use the following syntax to set router parameters and corresponding values: 

prefixdefault [variable value]


Sets per-interface parameters. Use the following syntax: 

if interface [variable value]


Advertises per-interface prefix information. Use the following syntax: 

prefix prefix/length interface [variable value]

Note –

The ifdefault/prefixdefault entries must precede the if and prefix entries in the configuration file.

See the in.ndpd(1M) man page and see also the ndpd.conf(4) man page for a list of configuration variables and allowable values.

Example—/etc/inet/ndpd.conf File

The following example provides a template of commented lines and also shows an example of how the keywords and configuration variables are used.

# ifdefault      [variable value]*
# prefixdefault [variable value]*
# if ifname   [variable value]*
# prefix prefix/length ifname
#  Per interface configuration variables
# Per Prefix:  AdvPrefixList configuration variables

ifdefault AdvReachableTime 30000 AdvRetransTimer 2000
prefixdefault AdvValidLifetime 240m AdvPreferredLifetime 120m

if qe0 AdvSendAdvertisements 1
prefix 2:0:0:56::/64 qe0
prefix fec0:0:0:56::/64 qe0

if qe1 AdvSendAdvertisements 1
prefix 2:0:0:55::/64 qe1
prefix fec0:0:0:56::/64 qe1

if qe2 AdvSendAdvertisements 1
prefix 2:0:0:54::/64 qe2
prefix fec0:0:0:54::/64 qe2

in.ripngd Daemon

The in.ripngd daemon implements the RIP next-generation routing protocol for IPv6 routers. RIP next generation defines the IPv6 equivalent of RIP. RIP is a widely used IPv4 routing protocol that is based on the Bellman-Ford distance vector algorithm. The following table shows the supported options.

Table 16–4 in.ripngd Daemon Options



-p n

n specifies the alternate port number that is used to send/receive RIPNG packets.


Suppresses routing information. 


Forces routing information whether the daemon is acting as a router. 


Suppresses use of poison reverse. 


If in.ripngd does not act as a router, the daemon enters only a default route for each router.

inetd Internet Services Daemon

An IPv6–enabled server is a server that can handle IPv4 or IPv6 addresses. The server uses the same protocol that the corresponding client uses. The /etc/inet/inetd.conf file contains the list of servers that inetd(1M) invokes when this daemon receives an Internet request over a socket. Each socket-based Internet server entry is composed of a single line that uses the following syntax:

service_name socket_type proto flags user server_pathname args

See the inetd.conf(4) man page for a description of the possible values for each field. In the Solaris operating environment, to specify a service as IPv6-enabled in the /etc/inet/inetd.conf file, you must specify the proto field as tcp6 or udp6. If the service is IPv4-only, the proto field must be specified as tcp or udp. By specifying a proto value of tcp6 or udp6 for a service, inetd passes the specific daemon an AF_INET6 socket.

The following entry in the inetd.conf file depicts a udp server (myserver) that can communicate with both IPv4 and IPv6 client applications.

Example 16–3 Server Communicating With Both IPv4 and IPv6 Client Applications

myserver   dgram   udp6	wait	root	/usr/sbin/myserver	myserver

An IPv6–enabled server can inherit an AF_INET (IPv4 only) or an AF_INET6 (IPv6 and IPv4) socket from inetd. The proto value for the service is specified as either tcp6 (udp6) or tcp (udp). For these types of servers, you can also specify two inetd.conf entries. You can specify proto as tcp. You can also specify proto as tcp6.

Note –

Because AF_INET6 sockets work with either the IPv4 or IPv6 protocols, specifying a proto value of tcp6 (udp6) is sufficient.

See Programming Interfaces Guide for details on writing various types of IPv6–enabled servers.

All servers that are provided with Solaris software require only one inetd entry that specifies proto as tcp6 or udp6. However, the remote shell server (shell) and the remote execution server (exec) must have an entry for both the tcp and tcp6 proto values. The following example shows the inetd entries for rlogin, telnet, shell, and exec.

Example 16–4 inetd.conf Entries for Servers Provided With Solaris Software

login stream	tcp6 nowait root  /usr/sbin/in.rlogind  in.rlogind
telnet stream	tcp6 nowait root /usr/sbin/in.telnetd in.telnetd
shell	stream	tcp	nowait	root	/usr/sbin/in.rshd	in.rshd
shell	stream	tcp6	nowait	root	/usr/sbin/in.rshd	in.rshd
exec	stream	tcp	nowait	root	/usr/sbin/in.rexecd	in.rexecd
exec	stream	tcp6	nowait	root	/usr/sbin/in.rexecd	in.rexecd

TCP Wrappers are a public domain utility that is used to monitor and to filter incoming requests for various network services, such as telnet. If you specify TCP Wrappers as the server_pathname for any of these services, you must ensure that TCP Wrappers are IPv6 capable. Otherwise, you must specify proto as tcp or udp for those services that are being used with TCP Wrappers.

In addition, if you replace a Solaris utility with another implementation, you must verify if the implementation of that service supports IPv6. If the implementation does not support IPv6, then you must specify the proto value as either tcp or udp.

Note –

If you specify proto as tcp or udp only, the service uses only IPv4. You need to specify proto as tcp6 or udp6 to enable either IPv4 or IPv6 connections. If the service does not support IPv6, then do not specify tcp6 or udp6.

See IPv6 extensions to the Socket API in Programming Interfaces Guide for more details on writing IPv6 enabled servers that use sockets.