Nonstandard servers and clients

Nonstandard servers and clients (those that do not come with the z/OS® CS product) also use TCPIP.DATA to decide which resolver configuration data sets to allocate. Depending on the socket API used, they might or might not use the TCPIPJOBNAME parameter to select a stack.

If you run sockets programs from other products or vendors, you may want to know which sockets API was used to develop the program, and which techniques, if any, the program uses to specify the name of the TCP/IP system address space. As long as application programs that use a TCP/IP socket library do not specify anything specific on calls setibmopt(), Initialize, or INITAPI, the TCPIPJOBNAME from a TCPIP.DATA data set will be used for finding a TCP/IP system address space name.

Table 1 depicts the differences that prevail in stack selection depending on the TCP/IP socket API under which you are running the socket program.
Table 1. How your own socket programs select a stack
C sockets Callable and Macro Pascal sockets REXX sockets
SETIBMOPT or TCPIPJOBNAME from TCPIP.DATA TCPNAME on INITAPI or TCPIPJOBNAME from TCPIP.DATA TCPIPJOBNAME from TCPIP.DATA Service on Initialize or TCPIPJOBNAME from TCPIP.DATA
Callable and Macro programs might have a configuration option to specify the TCP/IP system address space name, or might interrogate the available stacks with the getibmopt() call.

A Callable or Macro program does not have to call INITAPI. If INITAPI is not called, an implicit INITAPI is performed with the value taken from TCPIPJOBNAME in a TCPIP.DATA data set. If INITAPI is called with the TCPNAME parameter specified as a space, the TCP/IP system address space name results in the TCPIPJOBNAME keyword value.

In a z/OS UNIX INET (single stack) environment, the socket application program is always associated with the single TCP/IP stack. In the z/OS UNIX Common INET (CINET) environment, your application will be associated with multiple TCP/IP stacks unless the application specifically associates with a particular stack using the z/OS UNIX socket call setibmopt(). For other ways of requesting stack affinity in a CINET environment, see z/OS UNIX System Services Planning.