z/OS Communications Server: IP Programmer's Guide and Reference
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


Additional SENDMSG considerations

z/OS Communications Server: IP Programmer's Guide and Reference
SC27-3659-02

The sendmsg() enhancements to allow for QoS classification data will be available only through the Language Environment® C/C++ sendmsg() API and the UNIX System Services BPX2SMS service. The sendmsg() API supported across the TCP/IP provided socket API libraries (C, Macro, Callable, CICS®, and so on) do not currently support the passing of ancillary data. Some additional considerations for these sendmsg() enhancements follow:
  • UNIX System Services Assembler Callable Services Environment
    • Applications should ensure that the BPX2SMS (sendmsg) service is invoked. An older version of sendmsg(), named BPX1SMS, also exists but does not support the application classification enhancements described in this topic.
    • Include the EZAQOSDA macro from the SEZANMAC library for the definitions needed for the application classification ancillary data.
    • Include the BPXYSOCK and BPXYMSGH macros from SYS1.MACLIB.
  • IBM® C/C++ applications using the z/OS® Language Environment:
    • Applications need to include the following header files:
      • socket.h, in.h
      • ezaqosdc.h (from SEZANMAC)
  • AF_INET6 considerations

    The sendmsg() enhancements for QoS classification data are supported for AF_INET6 sockets. However, they are supported only for AF_INET6 sockets when the connection's traffic flows over an IPv4 network (such as, the remote partner's IP address is an IPv4-mapped IPv6 address). This feature is not supported for AF_INET6 sockets when the connection's traffic flows over an IPv6 network (such as, the remote partner's IP address is an IPv6 address); the sendmsg() enhancements will be ignored if used on an IPv6 connection.

    In order to exploit these enhancements for an AF_INET6 socket, the application should be coded as indicated in this topic, but should substitute IPPROTO_IPV6 for IPPROTO_IP in the cmsghdr's cmsg_level field.

Note: The Language Environment C/C++ library supports 2 versions of the sendmsg() API. The key difference is in the definition of the msghdr structure. In order to use the correct version of sendmsg() the application needs to ensure that the macro symbolic _OE_SOCKETS is not specified. _OE_SOCKETS causes the older version of msghdr and sendmsg() to be used. The older version does not support passing of application classification data.

Applications providing classification data should document the content and format of this data so that network administrators can use this information when defining DS policies.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014