BPXYSOCK — Map SOCKADDR structure and constants

BPXYSOCK maps the SOCKADDR structure for socket, accept, bind, sendto, recvfrom, getsockname, and getpeername.

The SOCK_LEN field is required for AF_UNIX, but is optional for AF_INET and AF_INET6. Specifically for AF_INET6, SOCK_LEN can either be defined as zero or SOCK#LEN+SOCK_SIN6#LEN.

                                                      
            BPXYSOCK   ,                                                        
*                                                                               
***********************************************************************         
** BPXYSOCK: z/OS UNIX Socket Address Structure                         *       
** Used By: Sockets PFS                                               *         
***********************************************************************         
*                                                                               
SOCKADDR             DSECT ,
         AGO   .C411
.B411    ANOP  ,
SOCKADDR             DS    0F
.C411    ANOP  ,
SOCKBEGIN            DS    0F
*
SOCK_LEN             DS    X          Address Length - Length of      **
                                      either SOCK_SIN (for AF_INET    **
                                      sockets) or of the name supplied**
                                      in SOCK_SUN_NAME (for AF_UNIX   **
                                      sockets)
SOCK_FAMILY          DS    X          Address Family
SOCK_DATA            DS    0C         Protocol specific area
*
SOCK#LEN             EQU   *-SOCKADDR Constant - Fixed length of SOCK
*
***********************************************************************
*                                                                     *
*   AF_Inet Socket Address Structure                                  *
*                                                                     *
***********************************************************************
*
                     ORG  SOCK_DATA   Start of AF_Inet unique area
SOCK_SIN             DS   0C
SOCK_SIN_PORT        DS   H           Port number used by the appl
SOCK_SIN_ADDR        DS   CL4         INET address (netid)
                     DS   CL8         Reserved area not used
*
SOCK_SIN#LEN         EQU  *-SOCK_SIN  Constant - Fixed length of
*                                     AF_Inet unique area
*
*
***********************************************************************
*                                                                     *
*   AF_UNIX Socket Address Structure                                  *
*                                                                     *
***********************************************************************
*
                     ORG  SOCK_DATA   Start of AF_Unix unique area
SOCK_SUN             DS   0C
SOCK_SUN_NAME        DS   CL108       Path name of the socket  @P0C
*                                     Length 108 matchs RS/6000@P0A
*
SOCK_SUN#LEN         EQU  *-SOCK_SUN  Constant - Fixed length of
*                                     AF_Unix unique area
*
***********************************************************************
*                                                                     *
*   AF_Inet6 Socket Address Structure                                 *
*                                                                     *
***********************************************************************
*
                     ORG  SOCK_DATA   Start of AF_Inet6 area       @PBA
SOCK_SIN6            DS   0C                                       @PBA
SOCK_SIN6_PORT       DS   H           Port number used by the appl @PBA
SOCK_SIN6_FLOWINFO   DS   CL4         FLOW INFORMATION             @PBA
SOCK_SIN6_ADDR       DS   CL16        INET address (netid)         @PBA
SOCK_SIN6_SCOPE_ID   DS   CL4         SCOPE ID                     @PBA
*                                                                  @PBA
SOCK_SIN6#LEN        EQU  *-SOCK_SIN6 Length of AF_INET6 area      @PBA
*
***********************************************************************
*                                                                     *
*   Equates for Address Families                                      *
*                                                                     *
***********************************************************************
*
AF_UNSPEC            EQU  0           Unspecified
AF_UNIX              EQU  1           Unix Domain
AF_INET              EQU  2           Internetwork: UDP TCP
AF_IMPLINK           EQU  3           Arpanet imp addresses
AF_PUP               EQU  4           pup protocols: BSP
AF_CHAOS             EQU  5           mit CHAOS protocols
AF_NS                EQU  6           XEROX NS protocols
AF_NBS               EQU  7           nbs protocols
AF_ECMA              EQU  8           European computer man.
AF_DATAKIT           EQU  9           datakit protocols
AF_CCITT             EQU  10          CCITT protocols: X.25
AF_SNA               EQU  11          IBM SNA
AF_DECNET            EQU  12          DECNet
AF_DLI               EQU  13          Direct data link interface
AF_LAT               EQU  14          LAT
AF_HYLINK            EQU  15          NSC hyperchannel
AF_APPLETALK         EQU  16          Apple Talk
AF_IUCV              EQU  17          IBM IUCV
AF_ESCON             EQU  18          ESCON UDP                  @D4A
AF_INET6             EQU  19          IPv6                       @P8A
AF_ROUTE             EQU  20          Routing Sockets            @P8A
AF_MAX               EQU  21                                     @P8C
*
*********************************************************************
*   Equates for protocol                                         @P2A
*********************************************************************
*
IPPROTO_IP           EQU   0          DEFAULT PROTOCOL
IPPROTO_TCP          EQU   6          TCP
IPPROTO_UDP          EQU  17          USER DATAGRAM
IPPROTO_IPV6         EQU  41          IPv6                        @PBA
IPPROTO_ICMPV6       EQU  58          IPv6 ICMP                   @D9A
*
IPPROTO_HOPOPTS      EQU   0                                     @DAA
IPPROTO_ROUTING      EQU  43                                     @DAA
IPPROTO_FRAGMENT     EQU  44                                     @DAA
IPPROTO_ESP          EQU  50                                     @DAA
IPPROTO_AH           EQU  51                                     @DAA
IPPROTO_NONE         EQU  59                                     @DAA
IPPROTO_DSTOPTS      EQU  60                                     @DAA
*
***********************************************************************
*                                                                     *
*   Equates for setpeer options                                       *
*                                                                     *
***********************************************************************
*
SOCK#SO_SET          DC   X'00000200'
SOCK#SO_SET_EQU      EQU  X'00000200'                       @04A
SOCK#SO_UNSET        DC   X'00000400'
SOCK#SO_UNSET_EQU    EQU  X'00000400'                       @04A
*
***********************************************************************
*                                                                     *
*   Equates for socket types                                          *
*                                                                     *
***********************************************************************
*
SOCK#_STREAM         EQU  1
SOCK#_DGRAM          EQU  2
SOCK#_RAW            EQU  3
SOCK#_RDM            EQU  4
SOCK#_SEQPACKET      EQU  5
*
***********************************************************************
*                                                                     *
*   Equates for Dimension   (socket/socketpair syscall)               *
*                                                                     *
***********************************************************************
*
SOCK#DIM_SOCKET      EQU  1
SOCK#DIM_SOCKETPAIR  EQU  2
SOCK#DIM_SOCKETWAFFINITY     EQU  3                              @02A
SOCK#DIM_SOCKETPAIRWAFFINITY EQU  4                              @02A
*
***********************************************************************
*                                                                     *
*   Equates for getname option                                        *
*                                                                     *
***********************************************************************
*
SOCK#GNMOPTGETPEERNAME EQU  1
SOCK#GNMOPTGETSOCKNAME EQU  2
*
***********************************************************************
*                                                                     *
*   Equates for sockopt                                               *
*                                                                     *
***********************************************************************
*
SOCK#OPTOPTGETSOCKOPT    EQU  1
SOCK#OPTOPTSETSOCKOPT    EQU  2
SOCK#OPTOPTSETIBMSOCKOPT EQU  3                                   @D5A
*
***********************************************************************
*                                                                     *
*   Equates for Shutdown options                                      *
*                                                                     *
***********************************************************************
*
SOCK#SHUTDOWNREAD      EQU  0
SOCK#SHUTDOWNWRITE     EQU  1
SOCK#SHUTDOWNBOTH      EQU  2
*
*
***********************************************************************
*                                                                     *
*   Equate for Level Number for socket options                        *
*                                                                     *
***********************************************************************
*
SOCK#SOL_SOCKET      DC   X'0000FFFF'
SOCK#SOL_SOCKET_EQU  EQU  X'0000FFFF'                       @04A
*
*
***********************************************************************
*                                                                     *
*   Equate for InAddrAny for bind requests                            *
*                                                                     *
***********************************************************************
*
INADDR_ANY           DC   X'00000000'
INADDR_ANY_EQU       EQU  X'00000000'                       @04A
*
INADDR_LOOPBACK      DC   X'7F000001'                             @PBA
INADDR_LOOPBACK_EQU  EQU  X'7F000001'                       @04A
IN6ADDR_ANY          DC   X'00000000000000000000000000000000'     @PBA
IN6ADDR_LOOPBACK     DC   X'00000000000000000000000000000001'     @PBA
IN6ADDR_MAPPEDV4     DC   X'00000000000000000000FFFF'             @D9A
IN6ADDR_COMPATV4     DC   X'000000000000000000000000'             @D9A
*
***********************************************************************
*                                                                     *
*   Equates for Socket options                                        *
*                                                                     *
***********************************************************************
*
SOCK#SO_DEBUG        DC   X'00000001'
SOCK#SO_ACCEPTCONN   DC   X'00000002'
SOCK#SO_REUSEADDR    DC   X'00000004'
SOCK#SO_KEEPALIVE    DC   X'00000008'
SOCK#SO_DONTROUTE    DC   X'00000010'
SOCK#SO_BROADCAST    DC   X'00000020'
SOCK#SO_USELOOPBACK  DC   X'00000040'
SOCK#SO_LINGER       DC   X'00000080'
SOCK#SO_OOBINLINE    DC   X'00000100'
SOCK#SO_REUSEPORT   EQU   X'00000200'     To match socket.h       @DHA
SOCK#SO_REUSEPORT2  EQU   X'00000007'     As implemented in TCPIP @DHA
*
SOCK#SO_SNDBUF       DC   X'00001001'
SOCK#SO_RCVBUF       DC   X'00001002'
SOCK#SO_SNDLOWAT     DC   X'00001003'
SOCK#SO_RCVLOWAT     DC   X'00001004'
SOCK#SO_SNDTIMEO     DC   X'00001005'
SOCK#SO_RCVTIMEO     DC   X'00001006'
SOCK#SO_ERROR        DC   X'00001007'
SOCK#SO_TYPE         DC   X'00001008'
*
* Non-standard sockopts
*
SO_PROPAGATEID       DC   X'00004000'                           @D7A
SO_CLUSTERCONNTYPE   DC   X'00004001'                           @P8A
SO_SECINFO           DC   X'00004002'                              @D9A
SO_RECVUSERNAME      EQU  X'00004003'                           @DHA
*                                                           @04A
*  EQUated Versions                                         @04A
*                                                           @04A
SOCK#SO_DEBUG_EQU       EQU  X'00000001'                    @04A
SOCK#SO_ACCEPTCONN_EQU  EQU  X'00000002'                    @04A
SOCK#SO_REUSEADDR_EQU   EQU  X'00000004'                    @04A
SOCK#SO_KEEPALIVE_EQU   EQU  X'00000008'                    @04A
SOCK#SO_DONTROUTE_EQU   EQU  X'00000010'                    @04A
SOCK#SO_BROADCAST_EQU   EQU  X'00000020'                    @04A
SOCK#SO_USELOOPBACK_EQU EQU  X'00000040'                    @04A
SOCK#SO_LINGER_EQU      EQU  X'00000080'                    @04A
SOCK#SO_OOBINLINE_EQU   EQU  X'00000100'                    @04A
SOCK#SO_SNDBUF_EQU      EQU  X'00001001'                    @04A
SOCK#SO_RCVBUF_EQU      EQU  X'00001002'                    @04A
SOCK#SO_SNDLOWAT_EQU    EQU  X'00001003'                    @04A
SOCK#SO_RCVLOWAT_EQU    EQU  X'00001004'                    @04A
SOCK#SO_SNDTIMEO_EQU    EQU  X'00001005'                    @04A
SOCK#SO_RCVTIMEO_EQU    EQU  X'00001006'                    @04A
SOCK#SO_ERROR_EQU       EQU  X'00001007'                    @04A
SOCK#SO_TYPE_EQU        EQU  X'00001008'                    @04A
SO_PROPAGATEID_EQU      EQU  X'00004000'                    @04A
SO_CLUSTERCONNTYPE_EQU  EQU  X'00004001'                    @04A
SO_SECINFO_EQU          EQU  X'00004002'                    @04A
*
* SO_CLUSTERCONNTYPE Output Values
*
SO_CLUSTERCONNTYPE_NOCONN        EQU  0                         @P8A
SO_CLUSTERCONNTYPE_NONE          EQU  1                         @P8A
SO_CLUSTERCONNTYPE_SAME_CLUSTER  EQU  2                         @P8A
SO_CLUSTERCONNTYPE_SAME_IMAGE    EQU  4                         @P8A
SO_CLUSTERCONNTYPE_INTERNAL      EQU  8                         @P8A
*
*
* IPPROTO_IP Options
*
IP_TOS                    EQU 2                             @P9C@D6A
IP_MULTICAST_TTL          EQU 3                                 @D6A
IP_MULTICAST_LOOP         EQU 4                                 @D6A
IP_ADD_MEMBERSHIP         EQU 5                                 @D6A
IP_DROP_MEMBERSHIP        EQU 6                                 @D6A
IP_MULTICAST_IF           EQU 7                             @P9C@D6A
IP_DEFAULT_MULTICAST_TTL  EQU 1                                 @D6A
IP_DEFAULT_MULTICAST_LOOP EQU 1                                 @D6A
IP_MAX_MEMBERSHIPS        EQU 20                                @D6A
IP_BLOCK_SOURCE           EQU 10                                @DEA
IP_UNBLOCK_SOURCE         EQU 11                                @DEA
IP_ADD_SOURCE_MEMBERSHIP  EQU 12                                @DEA
IP_DROP_SOURCE_MEMBERSHIP EQU 13                                @DEA
***********************************************************************
*    Multicast Source Filter Structures from RFC 3678                 *
****************************************************************** @DEA
         AIF   ('&DSECT' EQ 'NO').B425                             @DEA
SOCKADDR_STORAGE_STRUCT DSECT ,                                    @DEA
         AGO   .C425                                               @DEA
.B425    ANOP  ,                                                   @DEA
SOCKADDR_STORAGE_STRUCT DS 0D                                      @DEA
.C425    ANOP  ,                                                   @DEA
SOCKADDR_STORAGE DS CL128                                          @DEA
*
* setibmsockopt options
*
SOCK#SO_BULKMODE           DC X'00008000'                      @D5A
SOCK#SO_IGNOREINCOMINGPUSH DC X'00000001'                        @D5A
SOCK#SO_NONBLOCKLOCAL      DC X'00008001'                        @P7A
SOCK#SO_IGNORESOURCEVIPA   DC X'00000002'                        @P7A
*                       Toggles the use of non-VIPA addresses.  When
*                       enabled, non-VIPA addresses will be used for
*                       outbound IP packets.
SOCK#SO_OPTMSS             DC X'00008003'                        @P7A
*                Toggles the use of optimal TCP segment size.
*                When enabled, the TCP segment size may be optimally
*                increased on outbound data transfers.  This may
*                reduce the amount of TCP outbound and inbound
*                acknowledgement packet processing; therefore,
*                minimizing CPU consumption.                     @P7A
SOCK#SO_OPTACK             DC X'00008004'   Optimize Acks        @P7A
SOCK#SO_EIOIFNEWTP         DC X'00000005'   Notify of new tp     @PAA
SOCK#SO_ACCEPTECONNABORTED DC X'00000006'   Notify of conn abtd  @PEA
SOCK#SO_EXCLWRT            DC X'00000007'   Write Serialization  @03A
*                          Control Stream Write Serialization    @03A
*                    SetIbmSockOpt option to toggle system supplied
*                    serialization on TCP stream socket writes.
*                    NOTE: This function has been disabled and its @DIC
*                          use is thus discouraged.  This function @DIC
*                          may be withdrawn in a future release.   @DIC
*  EQUated Versions                                         @04A
SOCK#SO_BULKMODE_EQU           EQU X'00008000'              @04A
SOCK#SO_IGNOREINCOMINGPUSH_EQU EQU X'00000001'              @04A
SOCK#SO_NONBLOCKLOCAL_EQU      EQU X'00008001'              @04A
SOCK#SO_IGNORESOURCEVIPA_EQU   EQU X'00000002'              @04A
SOCK#SO_OPTMSS_EQU             EQU X'00008003'              @04A
SOCK#SO_OPTACK_EQU             EQU X'00008004'              @04A
SOCK#SO_EIOIFNEWTP_EQU         EQU X'00000005'              @04A
SOCK#SO_ACCEPTECONNABORTED_EQU EQU X'00000006'              @04A
SOCK#SO_EXCLWRT_EQU            EQU X'00000007'              @04A
*
***********************************************************************
*                                                                     *
*   Equates for So_   option values                                   *
*                                                                     *
***********************************************************************
SOCK#SO_SETOPTIONON       DC  X'00000001'                        @PAA
SOCK#SO_SETOPTIONON_EQU   EQU X'00000001'                        @04A
SOCK#SO_SETOPTIONOFF      DC  X'00000000'                        @PAA
SOCK#SO_SETOPTIONOFF_EQU  EQU X'00000000'                        @04A
***********************************************************************
*                                                                     *
*   Equates for IPPROTO_TCP options                                   *
*                                                                     *
***********************************************************************
SOCK#TCP_NODELAY          DC  X'00000001'                        @P4A
SOCK#TCP_NODELAY_EQU      EQU X'00000001'                        @04A
SOCK#TCP_KEEPALIVE        DC  X'00000008'                        @P9A
SOCK#TCP_KEEPALIVE_EQU    EQU X'00000008'                        @04A
*
***********************************************************************
*                                                                     *
*   Equates for Socket Port Constant                                  *
*                                                                     *
***********************************************************************
*
SOCK#LASTRESERVEPORT   EQU  1023                                 @D2A
*
*
         AIF   ('&DSECT' EQ 'NO').B412                           @01A
IP_MREQ         DSECT ,                                     @P9M@D6A
         AGO   .C412                                             @01A
.B412    ANOP  ,                                                 @01A
IP_MREQ          DS 0F                                           @01A
.C412    ANOP  ,                                                 @01A
IMR_MULTIADDR    DS CL4            IP MULTICAST ADDR OF GROUP   @D6A
IMR_INTERFACE    DS CL4            LOCAL IP ADDR OF INTERFACE   @D6A
*
***********************************************************************
*                                                                     *
* IP_MREQ_SOURCE STRUCTURE                                            *
*                                                                     *
****************************************************************** @DEA
         AIF   ('&DSECT' EQ 'NO').B422                         @DEA
IP_MREQ_SOURCE DSECT ,                                             @DEA
         AGO   .C422                                               @DEA
.B422    ANOP  ,                                                   @DEA
IP_MREQ_SOURCE DS 0F                                               @DEA
.C422    ANOP   ,                                                  @DEA
IMRS_MULTIADDR  DS CL4              IP MULTICAST ADDR              @DEA
IMRS_SOURCEADDR DS CL4              IP SOURCE ADDR                 @DEA
IMRS_INTERFACE  DS CL4              LOCAL IP ADDR OF INTERFACE     @DEA
*                                                                  @DEA
***********************************************************************
*                                                                     *
* GROUP_REQ STRUCTURE                                                 *
*                                                                     *
****************************************************************** @DEA
         AIF   ('&DSECT' EQ 'NO').B423                         @DEA 
GROUP_REQ DSECT ,                                                  @DEA
         AGO   .C423                                               @DEA 
.B423    ANOP  ,                                                   @DEA 
GROUP_REQ DS   0F                                                  @DEA 
.C423    ANOP  ,                                                   @DEA 
GR_INTERFACE DS CL4                 INTERFACE INDEX                @DEA 
         DS    CL4                  PADDING                        @DEA 
GR_GROUP DS    CL(L'SOCKADDR_STORAGE) GROUP ADDRESS                @DEA 
         ORG   GR_GROUP                                            @DEA 
GR_MULTISOCKADDR4 DS CL(SOCK#LEN+SOCK_SIN#LEN)                     @DEA 
         ORG   GR_GROUP                                            @DEA 
GR_MULTISOCKADDR6 DS CL(SOCK#LEN+SOCK_SIN6#LEN)                    @DEA 
*                                                                  @DEA 
***********************************************************************
*                                                                     *
* GROUP_SOURCE_REQ STRUCTURE                                          *
*                                                                     *
****************************************************************** @DEA
         AIF   ('&DSECT' EQ 'NO').B424                             @DEA 
GROUP_SOURCE_REQ DSECT ,                                           @DEA 
         AGO   .C424                                               @DEA 
.B424    ANOP  ,                                                   @DEA 
GROUP_SOURCE_REQ DS 0D                                             @DEA 
.C424    ANOP  ,                                                   @DEA 
GSR_INTERFACE DS CL4                INTERFACE INDEX                @DEA 
         DS    CL4                  PADDING                        @DEA 
GSR_GROUP DS   CL(L'SOCKADDR_STORAGE) GROUP ADDRESS                @DEA 
         ORG   GSR_GROUP                                           @DEA 
GSR_GROUPADDR4 DS CL(SOCK#LEN+SOCK_SIN#LEN)                        @DEA 
         ORG   GSR_GROUP                                           @DEA 
GSR_GROUPADDR6 DS CL(SOCK#LEN+SOCK_SIN6#LEN)                       @DEA 
GSR_SOURCE DS  CL(L'SOCKADDR_STORAGE) SOURCE ADDRESS               @DEA 
         ORG   GSR_SOURCE                                          @DEA 
GSR_SOURCEADDR4 DS CL(SOCK#LEN+SOCK_SIN#LEN)                       @DEA 
         ORG   GSR_SOURCE                                          @DEA 
GSR_SOURCEADDR6 DS CL(SOCK#LEN+SOCK_SIN6#LEN)                      @DEA 
*                                                                  @DEA 
***********************************************************************
*                                                                     *
*   Structure for So_Linger                                           *
*                                                                 @D3A*
***********************************************************************
*
         AIF   ('&DSECT' EQ 'NO').B413                           @01A 
SOCK_LINGER_STRUCT DSECT ,                                         @P9A
         AGO   .C413                                             @01A 
.B413    ANOP  ,                                                 @01A 
SOCK_LINGER_STRUCT   DS   0F                                     @01A 
.C413    ANOP  ,                                                 @01A 
SOCK_L_ONOFF         DS    F          On/Off indicator         @P9M@D3A 
SOCK_L_LINGER        DS    F          Length of time to linger @P9M@D3C 
*********************************************************************** 
*                                                                     * 
*   Equates for IPPROTO_IPV6 Options                             @D9A * 
*                                                                     * 
***********************************************************************
SOCK#IPV6_UNICAST_HOPS    EQU 3                                  @D9A
SOCK#IPV6_MULTICAST_LOOP  EQU 4
SOCK#IPV6_JOIN_GROUP      EQU 5
SOCK#IPV6_LEAVE_GROUP     EQU 6
SOCK#IPV6_MULTICAST_IF    EQU 7
SOCK#IPV6_MULTICAST_HOPS  EQU 9
SOCK#IPV6_V6ONLY          EQU 10
SOCK#IPV6_HOPLIMIT        EQU 11            ANC DATA ONLY
SOCK#IPV6_PATHMTU         EQU 12
SOCK#IPV6_PKTINFO         EQU 13
SOCK#IPV6_RECVHOPLIMIT    EQU 14
SOCK#IPV6_RECVPKTINFO     EQU 15
SOCK#IPV6_RECVPATHMTU     EQU 16
SOCK#IPV6_REACHCONF       EQU 17
SOCK#IPV6_USE_MIN_MTU     EQU 18
SOCK#IPV6_CHECKSUM        EQU 19
 
SOCK#IPV6_NEXTHOP          EQU 20
SOCK#IPV6_RTHDR            EQU 21
SOCK#IPV6_HOPOPTS          EQU 22
SOCK#IPV6_DSTOPTS          EQU 23
SOCK#IPV6_RTHDRDSTOPTS     EQU 24
SOCK#IPV6_RECVRTHDR        EQU 25
SOCK#IPV6_RECVHOPOPTS      EQU 26
*SOCK#IPV6_RECVRTHDRDSOPTS EQU 27                                @DCD
SOCK#IPV6_RECVDSTOPTS      EQU 28
SOCK#IPV6_DONTFRAG         EQU 29                                @DCA
SOCK#IPV6_TCLASS           EQU 30                                @DCA
SOCK#IPV6_RECVTCLASS       EQU 31                                @DCA
SOCK#IPV6_ADDR_PREFERENCES EQU 32                                @DJA
 
SOCK#IPV6_RTHDR_TYPE_0     EQU 0        IPv6 Routing hdr type 0  @D9A
***********************************************************************
*   Protocol Independent Options                                 @DEA *
***********************************************************************
SOCK#MCAST_JOIN_GROUP         EQU 40                             @DEA
SOCK#MCAST_LEAVE_GROUP        EQU 41                             @DEA
SOCK#MCAST_JOIN_SOURCE_GROUP  EQU 42                             @DEA
SOCK#MCAST_LEAVE_SOURCE_GROUP EQU 43                             @DEA
SOCK#MCAST_BLOCK_SOURCE       EQU 44                             @DEA
SOCK#MCAST_UNBLOCK_SOURCE     EQU 45                             @DEA
***********************************************************************
*                                                                     *
*   Equates for IPPROTO_ICMPV6 options                           @D9A *
*                                                                     *
***********************************************************************
SOCK#ICMP6_FILTER          EQU 1
 
***********************************************************************
*                                                                     *
*   Structure for Packet Source/Destination Information          @D9A *
*                                                                     *
***********************************************************************
*
IN6_PKTINFO        DSECT ,
         AGO   .C414
.B414    ANOP  ,
IN6_PKTINFO          DS   0F
.C414    ANOP  ,
IPI6_ADDR            DS    CL16       IPv6 Addr
IPI6_IFINDEX         DS    F          Interface Index
 
***********************************************************************
*                                                                     *
*   Structure for Multicast Mreq                                 @D9A *
*                                                                     *
***********************************************************************
*
         AIF   ('&DSECT' EQ 'NO').B415 
IPV6_MREQ          DSECT , 
         AGO   .C415 
.B415    ANOP  , 
IPV6_MREQ            DS   0F 
.C415    ANOP  , 
IPV6MR_MULTIADDR     DS    CL16       IPv6 Addr 
IPV6MR_INTERFACE     DS    F          Interface index   
*********************************************************************** 
*                                                                     * 
*   Structure for CInet Interface Index                          @D9A * 
*                                                                     * 
*********************************************************************** 
* 
         AIF   ('&DSECT' EQ 'NO').B416 
IFINDEX            DSECT ,
         AGO   .C416 
.B416    ANOP  , 
IFINDEX              DS   0F 
.C416    ANOP  , 
IFI_TDX              DS    H          Cinet Td Index 
IFI_INDEX            DS    H          Stacks  Interface Index   

*********************************************************************** 
*                                                                     * 
*   Structure for Icmp6 Filtering                                @D9A * 
*                                                                     * 
*********************************************************************** 
*
         AIF   ('&DSECT' EQ 'NO').B417 
ICMP6_FILTER       DSECT ,
         AGO   .C417 
.B417    ANOP  , 
ICMP6_FILTER         DS    0F                                    @DBC 
.C417    ANOP  , ICMP6_FILT           DS    8F         8*32 = 256 bits 
* 
* 
ICMP6_DST_UNREACH       EQU   1                                  @DBA 
ICMP6_PACKET_TOO_BIG    EQU   2                                  @DBA 
ICMP6_TIME_EXCEEDED     EQU   3                                  @DBA 
ICMP6_PARAM_PROB        EQU   4                                  @DBA 
ICMP6_INFOMSG_MASK      EQU 128                                  @DBA 
ICMP6_ECHO_REQUEST      EQU 128                                  @DBA 
ICMP6_ECHO_REPLY        EQU 129                                  @DBA 
MLD_LISTENER_QUERY      EQU 130                                  @DBA 
MLD_LISTENER_REPORT     EQU 131                                  @DBA 
MLD_LISTENER_REDUCTION  EQU 132                                  @DBA 
ND_ROUTER_SOLICIT       EQU 133                                  @DBA 
ND_ROUTER_ADVERT        EQU 134                                  @DBA 
ND_NEIGHBOR_SOLICIT     EQU 135                                  @DBA 
ND_NEIGHBOR_ADVERT      EQU 136                                  @DBA 
ND_REDIRECT             EQU 137                                  @DBA 
*
***********************************************************************
*                                                                     *
*   Routing header                                               @DCA *
*                                                                     *
***********************************************************************
*
         AIF   ('&DSECT' EQ 'NO').B418 
IP6_RTHDR          DSECT ,
         AGO   .C418 
.B418    ANOP  , 
IP6_RTHDR            DS   0F 
.C418    ANOP  , 
IP6R_NXT             DS   BL1         Next header 
IP6R_LEN             DS   BL1         Length in units of 8 octets 
IP6R_TYPE            DS   BL1         Routing type 
IP6R_SEGLEFT         DS   BL1         Segments left 
*
***********************************************************************
*                                                                     *
*   Type 0 Routing header                                        @DCA *
*                                                                     *
***********************************************************************
*
         AIF   ('&DSECT' EQ 'NO').B419 
IP6_RTHDR0         DSECT ,
         AGO   .C419 
.B419    ANOP  , 
IP6_RTHDR0           DS   0F 
.C419    ANOP  , 
IP6R0_NXT            DS   BL1         Next header 
IP6R0_LEN            DS   BL1         Length in units of 8 octets 
IP6R0_TYPE           DS   BL1         Always zero 
IP6R0_SEGLEFT        DS   BL1         Segments left 
IP6R0_RESERVED       DS   FL4         Reserved field 
IP6R0_ADDR           DS   0CL16       Upto 127 in6_addr          @DDA
*
***********************************************************************
*                                                                     *
*   Hop-by-Hop options header                                    @DCA *
*                                                                     *
***********************************************************************
*
         AIF   ('&DSECT' EQ 'NO').B41A 
IP6_HBH            DSECT ,
         AGO   .C41A 
.B41A    ANOP  , 
IP6_HBH              DS   0F 
.C41A    ANOP  , 
IP6H_NXT             DS   BL1         Next header 
IP6H_LEN             DS   BL1         Length in units of 8 octets 
IP6H_OPTIONS         DS   0C          Options                    @DDA
*
***********************************************************************
*                                                                     *
*   Destination options header                                   @DCA *
*                                                                     *
***********************************************************************
*
         AIF   ('&DSECT' EQ 'NO').B41B 
IP6_DEST           DSECT ,
         AGO   .C41B 
.B41B    ANOP  , 
IP6_DEST             DS   0F 
.C41B    ANOP  , IP6D_NXT             DS   BL1         Next header 
IP6D_LEN             DS   BL1         Length in units of 8 octets 
IP6D_OPTIONS         DS   0C          Options                    @DDA
*
***********************************************************************
*                                                                     *
*   MTU Information                                              @DCA *
*                                                                     *
***********************************************************************
*
         AIF   ('&DSECT' EQ 'NO').B41C 
IP6_MTUINFO        DSECT , 
         AGO   .C41C 
.B41C    ANOP  , 
IP6_MTUINFO          DS   0F 
.C41C    ANOP  , 
IP6M_ADDR            DS   CL28        Dst address including zone ID 
IP6M_MTU             DS   F           Path MTU in host byte order
*
***********************************************************************
*                                                                     *
*   IPv6 Options Header                                          @DCA *
*                                                                     *
***********************************************************************
*
         AIF   ('&DSECT' EQ 'NO').B41D 
IP6_OPT            DSECT ,          AGO   .C41D 
.B41D    ANOP  , 
IP6_OPT              DS   0F 
.C41D    ANOP  , 
IP6O_TYPE            DS   BL1 
IP6O_LEN             DS   BL1 
*
IP6OPT_TYPE                EQU x'C0'                             @DCA
IP6OPT_TYPE_SKIP           EQU x'00'                             @DCA
IP6OPT_TYPE_DISCARD        EQU x'40'                             @DCA
IP6OPT_TYPE_FORCEICMP      EQU x'80'                             @DCA
IP6OPT_TYPE_ICMP           EQU x'C0'                             @DCA
IP6OPT_MUTABLE             EQU x'20'                             @DCA
*
IP6OPT_PAD1                EQU x'00'                             @DCA
IP6OPT_PADN                EQU x'01'                             @DCA
*
IP6OPT_JUMBO               EQU x'C2'                             @DCA
IP6OPT_NSAP_ADDR           EQU x'C3'                             @DCA
IP6OPT_TUNNEL_LIMIT        EQU x'04'                             @DCA
IP6OPT_ROUTER_ALERT        EQU x'05'                             @DCA
*
***********************************************************************
*                                                                     *
*   Jumbo Payload Option                                         @DCA *
*                                                                     *
***********************************************************************
*
         AIF   ('&DSECT' EQ 'NO').B41E 
IP6_OPT_JUMBO      DSECT , 
         AGO   .C41E 
.B41E    ANOP  , 
IP6_OPT_JUMBO        DS   0F 
.C41E    ANOP  , 
IP6OJ_TYPE           DS   BL1 
IP6OJ_LEN            DS   BL1 
IP6OJ_JUMBO_LEN      DS  4BL1 * 
IP6OPT_JUMBO_LEN           EQU 6 
*
***********************************************************************
*                                                                     *
*   NSAP Address Option                                          @DCA *
*                                                                     *
***********************************************************************
*
         AIF   ('&DSECT' EQ 'NO').B41F 
IP6_OPT_NSAP       DSECT , 
         AGO   .C41F 
.B41F    ANOP  , 
IP6_OPT_NSAP         DS   0F 
.C41F    ANOP  , 
IP6ON_TYPE           DS   BL1 
IP6ON_LEN            DS   BL1 
IP6ON_SRC_NSAP_LEN   DS   BL1 
IP6ON_DST_NSAP_LEN   DS   BL1 
IP6ON_SRC_NSAP       DS   0C 
IP6ON_DST_NSAP       DS   0C
*
***********************************************************************
*                                                                     *
*   Tunnel Limit Option                                          @DCA *
*                                                                     *
***********************************************************************
*
         AIF   ('&DSECT' EQ 'NO').B420 
IP6_OPT_TUNNEL     DSECT , 
         AGO   .C420 
.B420    ANOP  , 
IP6_OPT_TUNNEL       DS   0F 
.C420    ANOP  , 
IP6OT_TYPE           DS   BL1 
IP6OT_LEN            DS   BL1 
IP6OT_ENCAP_LIMIT    DS   BL1 
*
***********************************************************************
*                                                                     *
*   Router alert values (in network byte order)                  @DCA *
*                                                                     *
***********************************************************************
*
IP6_ALERT_MLD             EQU  0
IP6_ALERT_RSVP            EQU  1
IP6_ALERT_AN              EQU  2
*
***********************************************************************
*
*  Source address selection preferences                          @DJA
*
*    Used with setsockopt/getsockopt(Sock#IPV6_ADDR_PREFERENCES)
*      and BPX1PCT(PC#IsSrcAddr) for inet6_is_srcaddr() function
*
***********************************************************************
*
IPV6_PREFER_SRC_HOME    EQU x'00000001'  Prefer home address
IPV6_PREFER_SRC_COA     EQU x'00000002'  Prefer care of address
IPV6_PREFER_SRC_TMP     EQU x'00000004'  Prefer temporary address
IPV6_PREFER_SRC_PUBLIC  EQU x'00000008'  Prefer public address
IPV6_PREFER_SRC_CGA     EQU x'00000010'  Prefer Cryptographically
*                                        generated address
IPV6_PREFER_SRC_NONCGA  EQU x'00000020'  Prefer non-cryptographically
*                                        generated address
***********************************************************************
*
*  BPX1PCT(PC#IsSrcAddr) Argument for inet6_is_srcaddr()         @DJA
*
*     inet6_is_srcaddr(IsSrcAddrIpAddr, IsSrcAddrFlags)
*     is implemented with BPX1PCT(' ',PC#IsSrcAddr,ISSRCADDR#LEN,
*                                     ISSRCADDR, Rv, Rc, Rsn)
*     where the ISSRCADDR argument is defined as follows:
*
***********************************************************************
         AIF   ('&DSECT' EQ 'NO').B426 
ISSRCADDR         DSECT , 
         AGO   .C426 
.B426    ANOP  , 
ISSRCADDR         DS  0F 
.C426    ANOP  , 
ISSRCADDRVER      DS XL1           Version. 1 
ISSRCADDRVER1     EQU 1            Version value
                  DS XL3           Reserved. Must be 0 
ISSRCADDRIPADDR   DS CL(SOCK#LEN+SOCK_SIN6#LEN)  sockaddr_in6 
ISSRCADDRFLAGS    DS F             Flags. See IPV6_PREFER_SRC_* 
                  DS 6F            Reserved. Must be 0 
* 
ISSRCADDR#LEN     EQU *-ISSRCADDR  Length of ISSRCADDR area 
* 
** BPXYSOCK End