Cluster I/O Protocols (CIP) Configuration and Management Manual (H06.16+, J06.05+)

Associated CLIMs:
Name Index
C1002582 0
Application Programming Differences Between NonStop TCP/IPv6 and
CIP
If your application makes sophisticated use of the NonStop TCP/IP, Parallel Library TCP/IP or
TCP/IPv6 programming API, it may be affected by differences in the CIP API. Review this section
to determine if your application might be affected. If the behavioral differences in the API do not
actually result in real problems for your application, you can use the suppress-all-errors feature to
allow your application to continue running in the case of minor differences in the CIP environment.
See Suppressing Compatibility Errors.
This section describes application features and behaviors that need to be changed for CIP. Topics
described are:
“Suppressing Compatibility Errors
“Bind to INADDR_ANY and a Specific Address on the Same Interface
“Changing Destination of a Connected UDP Socket”
“Multicast Bind and Set or Join on Separate Interfaces
“Multicast Loopback”
“Receiving Broadcasts on Specific Addresses
“Error after UDP Send to Unreachable Port” (page 189)
“Conversion of Limited Broadcast to Subnet-Directed Broadcast” (page 190)
“Round-Robin Socket Support Considerations
“Socket IOCTL Differences
“Socket Options
“Binding to a Recently Used Address and Port” (page 190)
Suppressing Compatibility Errors
CIP does not support certain features supported by previous NonStop TCP/IP implementations. If
you run an application in CIP that contains unsupported features, compatibility errors result. To
allow applications not expecting these errors to run without modification, CIP supports a DEFINE
to suppress errors caused by incompatibility:
ADD DEFINE =CIP^COMPAT^ERROR, FILE SUPPRESS
If the DEFINE is set with a file name of “SUPPRESS” when an application starts, socket calls that
try to invoke a behavior allowed in a previous implementation but not in CIP return as if successful,
even though the behavior did not occur as expected. If the DEFINE is not set or if the file name is
not “SUPPRESS”, attempts to use behaviors that CIP does not support cause socket calls to return
the appropriate error.
Bind to INADDR_ANY and a Specific Address on the Same Interface
Conventional TCP/IP and NonStop TCP/IPv6 consider a bind to INADDR_ANY on a TCP or SCTP
socket to exclude IP addresses that are bound to a specific address in another socket, so it is
allowed to have both a socket bound to INADDR_ANY and one bound to a specific address on
the same TCP or UDP port. CIP considers a bind to INADDR_ANY to include all IP addresses. If
another socket is bound to a specific address on the same interface, an INADDR_ANY bind receives
an error.
In some cases, this incompatibility can be overcome by using one CLIM for applications using
specific binds and another for INADDR_ANY binds, each in a different Provider. The only use of
188 IP CIP Migration, Compatibility and Operational Differences