DSNL512I csect-name TCP/IP socket FAILED WITH RETURN CODE=return-code AND REASON CODE=reason-code

Explanation

A TCP/IP socket call used to establish communication between Db2 and TCP/IP failed.

csect-name
The name of the control section that issued the message.
socket
The name of the TCP/IP socket call that failed.
return-code
The return code reported by TCP/IP, as a decimal number. This code is issued by z/OS® UNIX System Services or z/OS Communications Server.
reason-code
The reason code reported by TCP/IP, as a hexadecimal number. This code is issued by z/OS UNIX System Services or z/OS Communications Server.

System action

Db2 will periodically retry the socket call to establish TCP/IP communication.

Operator response

Notify the system programmer.

System programmer response

The response is based on the TCP/IP socket call that failed.

socket=GETHOSTNAME
socket=GETNAMEINFO(ip-address)
socket=GETADDRINFO(host-name)
The GetHostName, GetNameInfo, or GetAddrInfo call has failed.

During DDF initialization, Db2 first determines its hostname using a GetHostName socket call. Db2 must then determine its IP address. If an IP address is specified in the BSDS using the DSNJU003 utility, or on the PORT statement in the TCP/IP profile, then Db2 uses this IP address. Otherwise, Db2 executes a GetAddrInfo(host-name) socket call, using the host-name that was returned on the prior GetHostName socket call, which returns the first IP address listed in the name server or local host table.

Important: The hostname or IP address returned could depend on the selected TCP/IP stack, in the event that there are multiple TCP/IP stacks. Db2 requires z/OS UNIX System Services sockets, and it is z/OS UNIX System Services that determines the TCP/IP stack to use. z/OS UNIX System Services provides a way for users to select a specific TCP/IP stack by using the BPXTCAFF utility.

Db2 then issues a GetNameInfo socket call to determine the domain name associated with the derived IP address.

The z/OS Resolver handles the GetNameInfo socket call because Db2 uses the z/OS UNIX System Services Asynchronous Sockets interface. This resolver uses the resolver configuration information available to DDF. Until this information for the selected TCP/IP is correctly specified for DDF, the z/OS Resolver will be unable to determine the domain name for DDF. You can find the search order for the resolver configuration files for a z/OS application, such as DDF, in the IP Configuration manual for the appropriate level of the z/OS Communications Server for your z/OS operating system.

socket=GETHOSTNAME
Db2 DDF initialization invoked a TCP/IP GetHostName socket call in order to determine the hostname associated to TCP/IP, and hence the host name associated with the Db2 subsystem. However, the call failed and Db2 is not able to determine the hostname. Db2 retries the socket call periodically.
socket=GETNAMEINFO(ip-address)
Db2 invoked a TCP/IP GetNameInfo socket call to determine the domain name for the specified IP address. However, the call failed and Db2 is not able to determine the domain name. Db2 retries the socket call periodically.
socket=GETADDRINFO(host-name)
Db2 invoked a TCP/IP GetAddrInfo socket call to determine the IP address associated with the specified hostname. However, the call failed and Db2 is not able to determine the IP address. Db2 retries the socket call periodically.

If you want a BSDS-specified IP address, correct the BSDS. This requires you to stop and restart Db2. Otherwise, verify that the provided hostname is correct and take the appropriate action:

  • If the hostname is incorrect, correct the hostname in the appropriate resolver configuration file, refresh TCP/IP, and then stop and start DDF so that the new hostname is refreshed for DDF initialization.
  • If the hostname is correct, then TCP/IP is unable to resolve the hostname to an IP address. You must make changes in order to allow for proper hostname to IP address resolution. If the changes have been made to the name server or local host table, refresh the resolver.
socket=POLL
The online ZPARM was changed using the SET SYSPARM command, changing the MAXDBAT from a positive value to zero. In this case, the message is informational, indicating that Db2 terminated its TCP/IP listening capability for SQL related work because Db2 can no longer accept SQL related connections from remote partners when MAXDBAT is set to zero.
socket=SHUTDOWN_REG (USS_UNAVAILABLE)
The z/OS UNIX System Services environment is not available. DDF start processing continues and this message is periodically repeated until the Unix System Services environment becomes available or DDF is stopped. You can use the z/OS "F OMVS, RESTART" command to start the z/OS UNIX System Services environment.
socket=SETRLIMIT
When reason code=1148033C, DDF needs to be defined as a superuser. For instructions on how to enable DDF as a superuser, see Enabling Db2 to access TCP/IP services in z/OS UNIX System Services.
socket=TCPKEEPALIVE
Db2 issues this socket call as a result of the TCP/IP KeepAlive value specified in the Db2 parameters module (usually DSNZPARM). You may specify this value by the TCP/IP KEEPALIVE value in the DSNTIP5 installation panel. Another way to specify the value is through the TCPKPALV value in the DSN6FAC macro, used to build the Db2 parameters module.

In this situation, processing continues, and Db2 does not retry the socket call. Verify that the TCP/IP stack being used by Db2 contains the required companion support for this function. If not, modify the Db2 parameter module to prevent Db2 from attempting to override the TCP/IP stack value.

socket=BSDS_ERROR (ADDRESS_ON_PORT_STMT)
An IP address is specified in both the BSDS and the PORT statement of the TCP/ IP profile. An address should be specified in only one place. That is, Db2 detected that IP addresses have been specified in the BSDS (through the IPV4, GRPIPV4, IPV6, and GRPIPV6 keywords of the DSNJU003 Change Log Inventory utility) and also in the TCP/IP profile on the PORT statement for the port value to be used by this subsystem. Only one of the specifications can now have IP addresses. The Db2 TCP/IP environment will not initialize, and the error is periodically repeated until the error is corrected.

One of the IP address specifications must be removed from the BSDS or from the TCP/IP profile. However, the BSDS specification should be retained because the recommendation is to use BSDS specifications to define the IP addresses that are to be associated to Db2, and, because removing the BSDS specifications would require Db2 to be stopped. In this case, to allow the initialization of the Db2 TCP/IP environment to continue. The TCP/IP profile PORT statement can be changed to remove the IP addresses and then the changed specifications can be dynamically brought on-line, which favors the BSDS specifications.

socket=BSDS_ERROR (IPv6_REQUIRES_DUALMODE_STACK)
A member or subsystem, or possibly a group, IPv6 address is specified in the BSDS without TCP/IP dual mode stack enabled. Db2 ignores all IPv6 addresses defined in the BSDS and DDF start-processing continues normally.

You should either enable a dual mode stack or delete all of the BSDS-defined IPv6 addresses and use only IPv4 addresses.

socket=BINDSPECIFIC NOT SUPPORT WITH SECURE PORT
A secure port was specified in the BSDS but an IP address is simultaneously defined on the PORT statement in the TCP/IP profile (PROFILE.TCPIP).

DDF supports secure ports only when it is listening on the INADDR_ANY.

socket=DVIPA ACTIVATION(ip-address)
The specified IP address cannot be activated as a VIPARANGE DVIPA. Db2 does not know whether the specified IP address was intended to be used as a DVIPA. If it was intended to be used as a DVIPA, correct the error and recycle DDF to activate it. However, if the IP address was not intended to be used as a DVIPA, ignore this message.
socket=EZBNMIF4_DROPCON
Db2 invoked the TCP/IP EZBNMIF4 (EZBNMIFR) service to drop a connection. The call failed but Db2 processing continues. Db2 periodically issues the message until the error is corrected. Refer to Using the EZBNMIFR requests for an explanation of the return and reason code values.

The most common cause for the failure is a return code value of 111 (EACCES) and a reason code value of 77E800DC (JRSAFNotAuthorized). This return and reason code indicates that TCP/IP determined that RACF® security profiles were not defined to permit Db2 to use the service. The user ID that is associated with the ssnmDIST started task requires CONTROL access to the MVS.VARY.TCPIP.DROP command for the OPERCMDS class. Refer to Enabling Db2 to access TCP/IP services in z/OS UNIX System Services for more information.

socket=ACCEPT(ip-address..0)
When return-code=3448 and reason-code=768F0442, TCP/IP DVIPA services are no longer available. TCP/IP deleted the IP address, and that IP address is no longer usable. The TCP/IP listener is disabled.

The Db2 TCP/IP listener attempts to restart every 30 seconds. When TCP/IP DVIPA services are restored, the TCP/IP listener restarts and issues message DSNL519I or DSNl523I to indicate that TCP/IP DVIPA services are restored.

socket=BIND(ip-address..0)
When return-code=1116 and reason-code=744C7230, the IP address that is defined in the BSDS is not valid or not usable. The Db2 TCP/IP listener is not available, but DDF startup completes.

To correct this error, follow these steps:

  1. Stop Db2.
  2. Run the change log inventory utility (DSNJU003) DDF statement to set a valid and usable IP address in the BSDS.
  3. Restart Db2.

When return-code=1116 and reason-code=744C7231, there are no available ports in the TCP ephemeral port range that can be used by Db2 to determine the availability of DVIPA services.

The Db2 TCP/IP listener continues its setup but Db2 cannot determine the availability of DVIPA services.

To correct this error, increase the range of TCP ephemeral ports on the TCPCONFIG EPHEMERALPORTS definition in the TCP/IP profile configuration. Refer to TCPCONFIG statement for more information on the TCPCONFIG TCP/IP profile configuration statement.

When return-code=111 and reason-code=744C735A, Db2 does not have authority to access an unreserved TCP protocol port that can be used by Db2 to determine the availability of DVIPA services.

The Db2 TCP/IP listener continues its setup but Db2 cannot determine the availability of DVIPA services.

To correct this error, create a PORT UNRSV TCP definition that allows Db2 to access unreserved ports in the TCP/IP profile configuration. Refer to PORT statement for more information on the PORT statement.

When return-code=111 and reason-code=744C735B, Db2 does not have permission from the System authorization facility (SAF) to access an unreserved TCP protocol port that can be used by Db2 to determine the availability of DVIPA services.

The Db2 TCP/IP listener continues its setup but Db2 cannot determine the availability of DVIPA services.

To correct this error, grant to the Db2 user ID READ permission to RACF resource EZB.PORTACCESS.sysname.tcpname.safname. The parts of the resource name are:

  • EZB.PORTACCESS is constant
  • sysname is the value of the MVS &SYSNAME. system symbol.
  • tcpname is the name of the procedure used to start the TCP stack.
  • safname is the value of the SAF keyword in the PORT UNRSV TCP command.

Refer to PORT statement for more information on the PORT UNRSV TCP statement.

socket=LISTEN(ip-address..0)

When return-code=111 and reason-code=744C735A, Db2 does not have authority to access an unreserved TCP protocol port that can be used by Db2 to determine the availability of DVIPA services.

The Db2 TCP/IP listener continues its setup but Db2 cannot determine the availability of DVIPA services.

To correct this error, create a PORT UNRSV TCP definition that allows Db2 to access unreserved ports in the TCP/IP profile configuration. Refer to PORT statement for more information on the PORT statement.

When return-code=111 and reason-code=744C735B, Db2 does not have permission from the System authorization facility (SAF) to access an unreserved TCP protocol port that can be used by Db2 to determine the availability of DVIPA services.

The Db2 TCP/IP listener continues its setup but Db2 cannot determine the availability of DVIPA services.

To correct this error, grant to the Db2 user ID READ permission to RACF resource EZB.PORTACCESS.sysname.tcpname.safname. The parts of the resource name are:

  • EZB.PORTACCESS is constant
  • sysname is the value of the MVS &SYSNAME. system symbol.
  • tcpname is the name of the procedure used to start the TCP stack.
  • safname is the value of the SAF keyword in the PORT UNRSV TCP command.

Refer to PORT statement for more information on the PORT UNRSV TCP statement.

User response

Notify the system programmer.

Problem determination

Determine the meaning of the return and reason codes issued by z/OS UNIX System Services or z/OS Communications Server.

If socket=BINDSPECIFIC NOT SUPPORT WITH SECURE PORT, check whether the PTF for APAR PI92982 was applied. If not, apply that PTF.