IPv6 concerns for Transport Independent Remote Procedure Call
Network Services Library exports Remote Procedure Call (RPC) routines that are both Transport Independent (TI) RPC routines as well as Transport Specific (TS) RPC routines.
The TI-RPC routines support IPv6, but the TS-RPC routines do not support IPv6. Transport selection in TI-RPC routines is handled by consulting entries in the network configuration database file. This database file contains entries for all of the transports for IPv6 as well as IPv4. The selection of transport entry for IPv6 or IPv4 depends on the order in which the entries are listed in database file. Entries corresponding to IPv6 are placed at the beginning of the list so that IPv6 entries can be tried first. If the IPv6 transport selection fails, then transports for IPv4 are automatically selected. This is applicable only for simplified and top level TI-RPC interface routines.
TI-RPC routines are classified into different levels. These levels provide different degrees of control over network parameters in the order of increasing control and complexity. For more details on TI-RPC classification.
Use the following considerations to run TI-RPC applications for IPv6 in each of the following categories:
Simplified interface routines:
These routines will internally register RPC service for IPv4 and IPv6 (if machine-code supported). For example, nettype = "tcp", will register RPC service for both network ids 'tcp' and 'tcp6' which belong to the TCP transport class.
Top level routines:
These routines allow the application to specify the type of transport. TI-RPC routines under this category also accept transport type as nettype, which is a simple character array. Without specifying, these API's will register RPC service for both IPv4 and IPv6 (if machine-code supported). For example, nettype = "udp", will register RPC service for both the udp network ID and the udp6 networkID, which belong to the UDP transport class.
Intermediate level routines:
struct netconfig nconf = getnetconfigent("tcp6");
In this example,
"tcp6" is a network ID for TCP transport on IPv6.Expert level routines:
These TI-RPC routines allow transport selection. The routines are similar to the intermediate level routines, with an additional control that is provided by using the name-to-address translation APIs. These APIs also require that the netconfig structure is specifically populated using Netselect routines for IPv4 and IPv6.
Bottom level and other routines:
These routines allow the various applications to work in coordination with the simplified, top level, intermediate level, and expert level APIs.