/********************************************************************/
/* */
/* MODULE NAME: CBLOCK - SOKET COMMON VARIABLES */
/* */
/* Copyright: Licensed Materials - Property of IBM */
/* */
/* "Restricted Materials of IBM" */
/* */
/* 5694-A01 */
/* */
/* Copyright IBM Corp. 1994, 2010 */
/* */
/* US Government Users Restricted Rights - */
/* Use, duplication or disclosure restricted by */
/* GSA ADP Schedule Contract with IBM Corp. */
/* */
/* Part Type: Enterprise PL/1 for z/OS */
/* */
/* Status: CSV1R12 */
/* */
/********************************************************************/
/********************************************************************/
/* */
/* SOKET COMMON VARIABLES */
/* */
/********************************************************************/
DCL ABS BUILTIN;
DCL ADDR BUILTIN;
DCL ACCEPT CHAR(16) INIT('ACCEPT');
DCL ACCPSOCK FIXED BIN(15); /* temporary ACCEPT socket */
DCL AF_INET FIXED BIN(31) INIT(2); /* internet domain */
DCL AF_INET6 FIXED BIN(31) INIT(19); /* internet v6 domain */
DCL AF_IUCV FIXED BIN(31) INIT(17); /* iucv domain */
/* Mapping of GAI_HINTS/GAI_ADDRINFO FLAGS */
DCL ai_PASSIVE BIT(32) INIT('00000001'BX);
/* flag: getaddrinfo hints */
DCL ai_CANONNAMEOK BIT(32) INIT('00000002'BX);
/* flag: getaddrinfo hints */
DCL ai_NUMERICHOST BIT(32) INIT('00000004'BX);
/* flag: getaddrinfo hints */
DCL ai_NUMERICSERV BIT(32) INIT('00000008'BX);
/* flag: getaddrinfo hints */
DCL ai_V4MAPPED BIT(32) INIT('00000010'BX);
/* flag: getaddrinfo hints */
DCL ai_ALL BIT(32) INIT('00000020'BX);
/* flag: getaddrinfo hints */
DCL ai_ADDRCONFIG BIT(32) INIT('00000040'BX);
/* flag: getaddrinfo hints */
DCL ai_EXTFLAGS BIT(32) INIT('00000080'BX);
/* flag: getaddrinfo hints */
DCL ai_ALLFLAGMASK BIT(32) INIT('FFFFFF00'BX);
DCL ALIAS CHAR(255); /* alternate NAME */
DCL APITYPE FIXED BIN(15) INIT(2); /* default API type */
DCL BACKLOG FIXED BIN(31); /* max length of pending queue*/
DCL BADNAME CHAR(20); /* temporary name */
DCL BIND CHAR(16) INIT('BIND');
DCL BIND2ADDRSEL CHAR(16) INIT('BIND2ADDRSEL');
DCL BIT BUILTIN;
DCL BITZERO BIT(1); /* bit zero value */
DCL BLANK255 CHAR(255) INIT(' '); /* */
DCL BLANK CHAR(100) INIT(' '); /* */
DCL BUF CHAR(80) INIT(' '); /* macro READ/WRITE buffer */
DCL BUFF CHAR(15) INIT(' '); /* short buffer */
DCL BUFFER CHAR(32767) INIT(' '); /* BUFFER */
DCL BUFIN CHAR(32767) INIT(' '); /* Read buffer */
DCL BUFOUT CHAR(32767) INIT(' '); /* WRITE buffer */
DCL NCHBUFF CHAR(3200) INIT(' '); /* BUFFER */
DCL CANONNAME_LEN FIXED BIN(31);/* getaddrinfo canonical name length*/
DCL 1 CLIENT, /* socket addr of connection peer */
2 DOMAIN FIXED BIN(31) INIT(2), /* domain of client (AF_INET) */
2 NAME CHAR(8) INIT(' '), /* addr identifier for client */
2 TASK CHAR(8) INIT(' '), /* task identifier for client */
2 RESERVED CHAR(20) INIT(' '); /* reserved */
DCL CLOSE CHAR(16) INIT('CLOSE');
DCL COMMAND FIXED BIN(31) INIT(3); /* Query FNDELAY flag */
DCL CONNECT CHAR(16) INIT('CONNECT');
DCL COUNT FIXED BIN(31) INIT(100); /* elements in GRP_IOCTL_TABLE*/
DCL DATA_SOCK FIXED BIN(15); /* temporary datagram socket */
DCL DEF FIXED BIN(31) INIT(0); /* default protocol */
DCL DONE_SENDING CHAR(1); /* ready flag */
DCL DRIVER FILE OUTPUT UNBUF ENV(FB RECSIZE(100)) RECORD;
DCL ERETMSK CHAR(4); /* indicate exception events */
DCL ERR FIXED BIN(31); /* error number variable */
DCL ERRNO FIXED BIN(31) INIT(0); /* error number */
DCL ESNDMSK CHAR(4); /* check for pending */
/* exception events */
DCL EXIT LABEL; /* common exit point */
DCL EZACIC05 ENTRY OPTIONS(ASM,INTER) EXT; /* translate ascii>ebcdic*/
DCL EZACIC09 ENTRY OPTIONS(ASM,INTER) EXT; /* format getaddrinfo res*/
DCL EZASOKET ENTRY OPTIONS(ASM,INTER) EXT; /* socket call */
DCL FCNTL CHAR(16) INIT('FCNTL');
DCL FIONBIO BIT(32) INIT('8004A77E'BX); /* flag: nonblocking */
DCL FIONREAD BIT(32) INIT('4004A77F'BX);/* flag:#readable bytes */
DCL FLAGS FIXED BIN(31) INIT(0); /* default: no flags */
/* 1 = OOB, SEND OUT-OF-BAND*/
/* 4 = DON'T ROUTE */
DCL FREEADDRINFO CHAR(16) INIT('FREEADDRINFO');
DCL GAI_NODE CHAR(255) INIT(' '); /* getaddrinfo node */
DCL GAI_NODELEN FIXED BIN(31) INIT(255);/* getaddrinfo node length */
DCL GAI_SERVICE CHAR(32) INIT(' '); /* getaddrinfo service */
DCL GAI_SERVLEN FIXED BIN(31) INIT(32); /* getaddrinfo service */
/* length */
DCL 1 GAI_HINTS, /* getaddrinfo hints addrinfo */
2 FLAGS FIXED BIN(31) INIT(0), /* hints flags, see defns */
/* starting at ai_PASSIVE */
2 AF FIXED BIN(31) INIT(0), /* hints family */
2 SOCTYPE FIXED BIN(31) INIT(0), /* hints socket type */
2 PROTO FIXED BIN(31) INIT(0), /* hints protocol */
2 NAMELEN FIXED BIN(31) INIT(0),
2 * CHAR(4),
2 * CHAR(4),
2 CANONNAME FIXED BIN(31) INIT(0),
2 * CHAR(4),
2 NAME FIXED BIN(31) INIT(0),
2 * CHAR(4),
2 NEXT FIXED BIN(31) INIT(0),
2 EFLAGS FIXED BIN(31) INIT(0); /* see definitions after */
/* IPV6_ADDR_PREFERENCES */
DCL 1 GAI_ADDRINFO BASED(RES), /* getaddrinfo RES addrinfo */
2 FLAGS FIXED BIN(31), /* see ai_PASSIVE & following defns*/
2 AF FIXED BIN(31),
2 SOCTYPE FIXED BIN(31),
2 PROTO FIXED BIN(31),
2 NAMELEN FIXED BIN(31), /* RES socket address struct length*/
2 * CHAR(4),
2 * CHAR(4),
2 CANONNAME POINTER, /* RES canonical name */
2 * CHAR(4),
2 NAME POINTER, /* RES socket address structure */
2 * CHAR(4),
2 NEXT POINTER, /* RES next addrinfo, zero if none.*/
2 EFLAGS FIXED BIN(31); /* see definitions that follow the */
/* IPV6_ADDR_PREFERENCES definition*/
DCL 1 GAI_NAME_ID BASED(GAI_ADDRINFO.NAME),
2 LEN BIT(8),
2 FAMILY BIT(8),
2 PORT BIT(16),
2 ADDRESS BIT(32),
2 RESERVED1 CHAR(8);
DCL 1 GAI_NAME6_ID BASED(GAI_ADDRINFO.NAME),
2 LEN BIT(8),
2 FAMILY BIT(8),
2 PORT BIT(16),
2 FLOWINFO FIXED BIN(31),
2 ADDRESS CHAR(16),
2 SCOPEID FIXED BIN(31);
DCL GETADDRINFO CHAR(16) INIT('GETADDRINFO');
DCL GETCLIENTID CHAR(16) INIT('GETCLIENTID');
DCL GETHOSTBYADDR CHAR(16) INIT('GETHOSTBYADDR');
DCL GETHOSTBYNAME CHAR(16) INIT('GETHOSTBYNAME');
DCL GETHOSTNAME CHAR(16) INIT('GETHOSTNAME');
DCL GETHOSTID CHAR(16) INIT('GETHOSTID');
DCL GETIBMOPT CHAR(16) INIT('GETIBMOPT');
DCL GETNAMEINFO CHAR(16) INIT('GETNAMEINFO');
DCL GETPEERNAME CHAR(16) INIT('GETPEERNAME');
DCL GETSOCKNAME CHAR(16) INIT('GETSOCKNAME');
DCL GETSOCKOPT CHAR(16) INIT('GETSOCKOPT');
DCL GIVESOCKET CHAR(16) INIT('GIVESOCKET');
DCL GLOBAL CHAR(16) INIT('GLOBAL');
DCL GNI_FLAGS FIXED BIN(31); /* getnameinfo flags */
DCL GNI_HOST CHAR(255); /* getnameinfo host */
DCL GNI_HOSTLEN FIXED BIN(31); /* getnameinfo host length */
DCL GNI_SERVICE CHAR(32); /* getnameinfo service */
DCL GNI_SERVLEN FIXED BIN(31); /* getnameinfo service length */
DCL 1 GROUP_FILTER4 BASED, /* Group_Filter for IPv4 */
2 GF4_HEADER, /* Header portion */
3 GF4_INTERFACE FIXED BIN(31), /* Interface index */
3 * CHAR(4), /* Padding */
3 GF4_GROUP, /* Group Multi Address */
4 GF4_SOCK_LEN BIT(8), /* Socket len */
4 GF4_SOCK_FAMILY BIT(8), /* Socket family */
4 GF4_SOCK_SIN_PORT BIT(16), /* Socket port */
4 GF4_SOCK_SIN_ADDR BIT(32), /* Socket address */
4 GF4_RESERVED1 CHAR(8), /* Unused */
4 * CHAR(112), /* */
3 GF4_FMODE FIXED BIN(31), /* Filter mode */
3 GF4_NUMSRC FIXED BIN(31), /* Num of sources */
2 GF4_SLIST CHAR(0); /* Source list */
DCL 1 GF4_SRCENTRY BASED, /* Source Entry */
2 GF4_SRCADDR, /* Source IP address */
3 GF4_SOCK_LEN BIT(8), /* Socket len */
3 GF4_SOCK_FAMILY BIT(8), /* Socket family */
3 GF4_SOCK_SIN_PORT BIT(16), /* Socket port */
3 GF4_SOCK_SIN_ADDR BIT(32), /* Socket address */
3 GF4_RESERVED1 CHAR(8), /* Unused */
3 * CHAR(112); /* */
DCL 1 GROUP_FILTER6 BASED, /* Group_Filter for IPv6 */
2 GF6_HEADER, /* Header portion */
3 GF6_INTERFACE FIXED BIN(31), /* Interface index */
3 * CHAR(4), /* Padding */
3 GF6_GROUP, /* Group Multi Address */
4 GF6_SOCK_LEN BIT(8), /* Socket len */
4 GF6_SOCK_FAMILY BIT(8), /* Socket family */
4 GF6_SOCK_SIN6_PORT BIT(16), /* Socket port */
4 GF6_SOCK_SIN6_FLOWINFO FIXED BIN(31), /* flow info */
4 GF6_SOCK_SIN6_ADDRESS CHAR(16), /* Socket address */
4 GF6_SOCK_SIN6_SCOPEID FIXED BIN(31), /* Socket scopeid */
4 * CHAR(100), /* */
3 GF6_FMODE FIXED BIN(31), /* Filter mode */
3 GF6_NUMSRC FIXED BIN(31), /* Num of sources */
2 GF6_SLIST CHAR(0); /* Source list */
DCL 1 GF6_SRCENTRY BASED, /* Source Entry */
2 GF6_SRCADDR, /* Source IP address */
3 GF6_SOCK_LEN BIT(8), /* Socket len */
3 GF6_SOCK_FAMILY BIT(8), /* Socket family */
3 GF6_SOCK_SIN6_PORT BIT(16), /* Socket port */
3 GF6_SOCK_SIN6_FLOWINFO FIXED BIN(31), /* flow info */
3 GF6_SOCK_SIN6_ADDRESS CHAR(16), /* Socket address */
3 GF6_SOCK_SIN6_SCOPEID FIXED BIN(31), /* Socket scopeid */
3 * CHAR(100); /* */
DCL 1 GROUP_REQ4 BASED, /* Group_Req for IPv4 */
2 GR4_INTERFACE FIXED BIN(31), /* Interface index */
2 * CHAR(4), /* Padding */
2 GR4_SOCK_LEN BIT(8), /* Socket len */
2 GR4_SOCK_FAMILY BIT(8), /* Socket family */
2 GR4_SOCK_SIN_PORT BIT(16), /* Socket port */
2 GR4_SOCK_SIN_ADDR BIT(32), /* Socket address */
2 GR4_RESERVED1 CHAR(8), /* Unused */
2 * CHAR(112); /* */
DCL 1 GROUP_REQ6 BASED, /* Group_Req for IPv6 */
2 GR6_INTERFACE FIXED BIN(31), /* Interface index */
2 * CHAR(4), /* Padding */
2 GR6_SOCK_LEN BIT(8), /* Socket len */
2 GR6_SOCK_FAMILY BIT(8), /* Socket family */
2 GR6_SOCK_SIN6_PORT BIT(16), /* Socket port */
2 GR6_SOCK_SIN6_FLOWINFO FIXED BIN(31), /* flow info */
2 GR6_SOCK_SIN6_ADDRESS CHAR(16), /* Socket address */
2 GR6_SOCK_SIN6_SCOPEID FIXED BIN(31), /* Socket scopeid */
2 * CHAR(100); /* */
DCL 1 GROUP_SOURCE_REQ4 BASED, /* Group_Source_Req for IPv4 */
2 GSR4_INTERFACE FIXED BIN(31), /* Interface index */
2 * CHAR(4), /* Padding */
2 GSR4_GROUP, /* Multicast group addr */
3 GSR4_SOCK_LEN BIT(8), /* Socket len */
3 GSR4_SOCK_FAMILY BIT(8), /* Socket family */
3 GSR4_SOCK_SIN_PORT BIT(16), /* Socket port */
3 GSR4_SOCK_SIN_ADDR BIT(32), /* Socket address */
3 GSR4_RESERVED1 CHAR(8), /* Unused */
3 * CHAR(112), /* */
2 GSR4_SOURCE, /* Source IP address */
3 GSR4_SOCK_LEN BIT(8), /* Socket len */
3 GSR4_SOCK_FAMILY BIT(8), /* Socket family */
3 GSR4_SOCK_SIN_PORT BIT(16), /* Socket port */
3 GSR4_SOCK_SIN_ADDR BIT(32), /* Socket address */
3 GSR4_RESERVED1 CHAR(8), /* Unused */
3 * CHAR(112); /* */
DCL 1 GROUP_SOURCE_REQ6 BASED, /* Group_Source_Req for IPv6 */
2 GSR6_INTERFACE FIXED BIN(31), /* Interface index */
2 * CHAR(4), /* Padding */
2 GSR6_GROUP, /* Multicast group addr */
3 GSR6_SOCK_LEN BIT(8), /* Socket len */
3 GSR6_SOCK_FAMILY BIT(8), /* Socket family */
3 GSR6_SOCK_SIN6_PORT BIT(16), /* Socket port */
3 GSR6_SOCK_SIN6_FLOWINFO FIXED BIN(31), /* flow info */
3 GSR6_SOCK_SIN6_ADDRESS CHAR(16), /* Socket address */
3 GSR6_SOCK_SIN6_SCOPEID FIXED BIN(31), /* Socket scopeid */
3 * CHAR(100), /* */
2 GSR6_SOURCE, /* Source IP address */
3 GSR6_SOCK_LEN BIT(8), /* Socket len */
3 GSR6_SOCK_FAMILY BIT(8), /* Socket family */
3 GSR6_SOCK_SIN6_PORT BIT(16), /* Socket port */
3 GSR6_SOCK_SIN6_FLOWINFO FIXED BIN(31), /* flow info */
3 GSR6_SOCK_SIN6_ADDRESS CHAR(16), /* Socket address */
3 GSR6_SOCK_SIN6_SCOPEID FIXED BIN(31), /* Socket scopeid */
3 * CHAR(100); /* */
DCL HINTS POINTER; /*getaddrinfo hints addrinfo pointer*/
DCL 1 HOMEIF, /* Home Interface Structure */
2 ADDRESS CHAR(16); /* Home Interface Address */
DCL HOSTADDR BIT(32); /* host internet address */
DCL HOSTNAME CHAR(24); /* host name from GETHOSTNAME */
DCL HOSTNAME_LEN FIXED BIN(31) INIT(24);
/* host name length GETHOSTNAME */
DCL HOW FIXED BIN(31) INIT(2); /* how shutdown is to be done */
Dcl 1 HOSTENT Based, /* Host entry */
3 H_NAME POINTER, /* Official name of host */
3 H_ALIASES POINTER, /* Alias list address */
3 H_ADDRTYPE BIT(32), /* Host address type */
3 H_LENGTH FIXED BIN(31), /* Length of address */
3 H_ADDR_LIST POINTER; /* List of addresses from */
/* name server */
DCL I FIXED BIN(15); /* loop index */
DCL ICMP FIXED BIN(31) INIT(2); /* prototype icmp ??? */
DCL 1 ID, /* */
2 TCPNAME CHAR(8) INIT('TCPIP'), /* remote address space */
2 ADSNAME CHAR(8) INIT('USER9'); /* local address space */
DCL IDENT POINTER; /* TCP/IP Addr Space */
DCL IFCONF CHAR(255); /* configuration structure */
DCL 1 IF_NAMEINDEX,
2 IF_NIHEADER,
3 IF_NITOTALIF FIXED BIN(31), /*Total Active Interfaces on Sys. */
3 IF_NIENTRIES FIXED BIN(31), /* Number of entries returned */
2 IF_NITABLE(10) CHAR(24);
DCL 1 IF_NAMEINDEXENTRY,
2 IF_NIINDEX FIXED BIN(31), /* Interface Index */
2 IF_NINAME CHAR(16), /* Interface Name, blank padded */
2 IF_NIEXT,
3 IF_NINAMETERM CHAR(1), /* Null for C for Name len=16 */
3 IF_RESERVED CHAR(3); /* Reserved */
DCL 1 IFREQ, /* Interface Structure */
2 IFR_NAME CHAR(16), /* Interface Name, blank padded */
2 IFR_IFR UNION,
3 IFR_ADDR, /* Interface IP Address */
4 IFR_ADDR_LEN BIT(8), /* Socket Len */
4 IFR_ADDR_FAMILY BIT(8), /* Socket Family */
4 IFR_ADDR_PORT BIT(16), /* Socket Port */
4 IFR_ADDR_ADDR BIT(32), /* Socket Address */
4 IFR_ADDR_RSVD CHAR(8), /* Socket Reserved */
3 IFR_DSTADDR, /* Interface Dest IP Addr */
4 IFR_DSTADDR_LEN BIT(8), /* Socket Len */
4 IFR_DSTADDR_FAMILY BIT(8), /* Socket Family */
4 IFR_DSTADDR_PORT BIT(16), /* Socket Port */
4 IFR_DSTADDR_ADDR BIT(32), /* Socket Address */
4 IFR_DSTADDR_RSVD CHAR(8), /* Socket Reserved */
3 IFR_BROADADDR, /* Interface Broadcast IP Addr*/
4 IFR_BROADADDR_LEN BIT(8), /* Socket Len */
4 IFR_BROADADDR_FAMILY BIT(8), /* Socket Family */
4 IFR_BROADADDR_PORT BIT(16), /* Socket Port */
4 IFR_BROADADDR_ADDR BIT(32), /* Socket Address */
4 IFR_BROADADDR_RSVD CHAR(8), /* Socket Reserved */
3 IFR_FLAGS BIT(16), /* Interface Flags */
3 IFR_METRIC FIXED BIN(31), /* Interface Metric */
3 IFR_DATA FIXED BIN(31), /* Interface Data */
3 IFR_MTU FIXED BIN(31); /* Interface MTU */
/* The following constants are for use with the IFR_FLAGS field */
/* in structure IFREQ. */
DCL IFF_UP BIT(16) INIT('0001'BX); /* interface is UP */
DCL IFF_BROADCAST BIT(16) INIT('0002'BX); /* broadcast addr valid */
DCL IFF_DEBUG BIT(16) INIT('0004'BX); /* turn on debugging */
DCL IFF_LOOPBACK BIT(16) INIT('0008'BX); /* software loopback */
DCL IFF_POINTOPOINT BIT(16) INIT('0010'BX); /* point-to-point link */
DCL IFF_NOTRAILERS BIT(16) INIT('0020'BX); /* avoid use trailers */
DCL IFF_RUNNING BIT(16) INIT('0040'BX); /* resources allocated */
DCL IFF_NOARP BIT(16) INIT('0080'BX); /* no ARP */
DCL IFF_PROMISC BIT(16) INIT('0100'BX); /* receive all packets */
DCL IFF_ALLMULTI BIT(16) INIT('0200'BX); /* multicast packets */
DCL IFF_MULTICAST BIT(16) INIT('0400'BX); /* multicast capable */
DCL IFF_POINTOMULTIPT BIT(16) INIT('0800'BX);/* pt-to-multipt */
DCL IFF_BRIDGE BIT(16) INIT('1000'BX); /* support token ring */
DCL IFF_SNAP BIT(16) INIT('2000'BX); /* support extended SAP */
DCL IFF_VIRTUAL BIT(16) INIT('4000'BX); /* virtual interface */
DCL IFF_SAMEHOST BIT(16) INIT('8000'BX); /* Samehost */
DCL INDEX BUILTIN;
DCL IOCTL CHAR(16) INIT('IOCTL');
DCL IOCTL_CMD FIXED BIN(31); /* ioctl command */
DCL IOCTL_REQARG POINTER ; /* send pointer to data area*/
DCL IOCTL_RETARG POINTER ; /* return pointer to data area*/
DCL IOCTL_REQ00 FIXED BIN(31); /* command request argument */
DCL IOCTL_REQ04 FIXED BIN(31); /* command request argument */
DCL IOCTL_REQ08 FIXED BIN(31); /* command request argument */
DCL IOCTL_REQ32 CHAR(32) INIT(' '); /* command request argument */
DCL IOCTL_RET00 FIXED BIN(31); /* command return argument */
DCL IOCTL_RET04 FIXED BIN(31); /* command return argument */
DCL INET6_IS_SRCADDR CHAR(16) INIT('INET6_IS_SRCADDR');
DCL INITAPI CHAR(16) INIT('INITAPI'); /* */
DCL IP FIXED BIN(31) INIT(1); /* prototype ip ??? */
DCL 1 IP_MREQ,
2 IMR_MULTIADDR BIT(32), /* IP multicast addr of group */
2 IMR_INTERFACE BIT(32); /* local IP addr of interface */
DCL 1 IPV6_MREQ,
2 IPV6MR_MULTIADDR CHAR(16),
2 IPV6MR_INTERFACE FIXED BIN(31);
DCL 1 IP_MREQ_SOURCE BASED, /* Multi source API structure */
2 IMRS_MULTIADDR BIT(32), /* IP multicast addr of grp */
2 IMRS_SOURCEADDR BIT(32), /* IP source addr */
2 IMRS_INTERFACE BIT(32); /* local IP addr of intf */
DCL 1 IP_MSFILTER BASED, /* IP_MsFilter */
2 IMSF_HEADER, /* Header portion */
3 IMSF_MULTIADDR BIT(32), /* Multicast address */
3 IMSF_INTERFACE BIT(32), /* Interface address */
3 IMSF_FMODE FIXED BIN(31), /* Filter mode */
3 IMSF_NUMSRC FIXED BIN(31), /* Num of sources */
2 IMSF_SLIST CHAR(0); /* Source list */
DCL 1 IMSF_SRCENTRY BASED, /* Source Entry */
2 IMSF_SRCADDR BIT(32); /* Source IP address */
DCL IP_MULTICAST_TTL BIT(32) INIT('00100003'BX);
/* getsockopt/setsockopt OPTNAME */
DCL IP_MULTICAST_LOOP BIT(32) INIT('00100004'BX);
/* getsockopt/setsockopt OPTNAME */
DCL IP_MULTICAST_IF BIT(32) INIT('00100007'BX);
/* getsockopt/setsockopt OPTNAME */
DCL IP_ADD_MEMBERSHIP BIT(32) INIT('00100005'BX);
/* getsockopt/setsockopt OPTNAME */
DCL IP_DROP_MEMBERSHIP BIT(32) INIT('00100006'BX);
/* getsockopt/setsockopt OPTNAME */
DCL IP_BLOCK_SOURCE BIT(32) INIT('0010000A'BX);
/* getsockopt/setsockopt OPTNAME */
DCL IP_UNBLOCK_SOURCE BIT(32) INIT('0010000B'BX);
/* getsockopt/setsockopt OPTNAME */
DCL IP_ADD_SOURCE_MEMBERSHIP BIT(32) INIT('0010000C'BX);
/* getsockopt/setsockopt OPTNAME */
DCL IP_DROP_SOURCE_MEMBERSHIP BIT(32) INIT('0010000D'BX);
DCL IPRES POINTER; /* EZACIC09 RES addrinfo ptr */
DCL IPV6_ADDR_PREFERENCES BIT(32) INIT('00010020'BX);
/* getsockopt/setsockopt OPTNAME */
/********************************************************************/
/* Mapping of GAI_HINTS/GAI_ADDRINFO EFLAGS flags and */
/* IPV6_ADDR_PREFERENCES getsockopt, setsockopt OPTVAL flags, and */
/* inet6_is_srcaddr flags */
/********************************************************************/
/* Prefer home IPv6 address over care-of IPv6 address */
DCL IPV6_PREFER_SRC_HOME BIT(32) INIT('00000001'BX);
/* Prefer care-of IPv6 address over home IPv6 address */
DCL IPV6_PREFER_SRC_COA BIT(32) INIT('00000002'BX);
/* Prefer temporary IPv6 address over public IPv6 address */
DCL IPV6_PREFER_SRC_TMP BIT(32) INIT('00000004'BX);
/* Prefer public IPv6 address over temporary IPv6 address */
DCL IPV6_PREFER_SRC_PUBLIC BIT(32) INIT('00000008'BX);
/* Prefer cryptographic address over non-cryptographic address */
DCL IPV6_PREFER_SRC_CGA BIT(32) INIT('00000010'BX);
/* Prefer non-cryptographic address over cryptographic address */
DCL IPV6_PREFER_SRC_NONCGA BIT(32) INIT('00000020'BX);
/* Invalid EFLAGS or IPV6_ADDR_PREFERENCES OPTVAL flags */
DCL IPV6_PREFERENCES_FLAGS_MASKINVALID BIT(32) INIT('FFFFFFC0'BX);
/********************************************************************/
DCL IPV6_JOIN_GROUP BIT(32) INIT('00010005'BX);
/* getsockopt/setsockopt OPTNAME */
DCL IPV6_LEAVE_GROUP BIT(32) INIT('00010006'BX);
/* getsockopt/setsockopt OPTNAME */
DCL IPV6_LOOPBACK CHAR(3) INIT('::1');
DCL IPV6_MULTICAST_HOPS BIT(32) INIT('00010009'BX);
/* getsockopt/setsockopt OPTNAME */
DCL IPV6_MULTICAST_IF BIT(32) INIT('00010007'BX);
/* getsockopt/setsockopt OPTNAME */
DCL IPV6_MULTICAST_LOOP BIT(32) INIT('00010004'BX);
/* getsockopt/setsockopt OPTNAME */
DCL IPV6_UNICAST_HOPS BIT(32) INIT('00010003'BX);
/* getsockopt/setsockopt OPTNAME */
DCL IPV6_V6ONLY BIT(32) INIT('0001000A'BX);
DCL J FIXED BIN(15); /* loop index */
DCL K FIXED BIN(15); /* loop index */
DCL LENGTH BUILTIN;
DCL LABL CHAR(9);
DCL LISTEN CHAR(16) INIT('LISTEN');
DCL MAXSNO FIXED BIN(31) INIT(0); /* max descriptor assigned */
DCL 1 MAXSOC_INPUT FIXED BIN(31) INIT(0);
DCL 1 MAXSOC_FWD,
2 MAXSOC_IGNORE FIXED BIN(15) INIT(0),
2 MAXSOC FIXED BIN(15) INIT(255); /* largest sock # checked */
DCL MCAST_JOIN_GROUP BIT(32) INIT('00100028'BX);
/* getsockopt/setsockopt OPTNAME */
DCL MCAST_LEAVE_GROUP BIT(32) INIT('00100029'BX);
/* getsockopt/setsockopt OPTNAME */
DCL MCAST_JOIN_SOURCE_GROUP BIT(32) INIT('0010002A'BX);
/* getsockopt/setsockopt OPTNAME */
DCL MCAST_LEAVE_SOURCE_GROUP BIT(32) INIT('0010002B'BX);
/* getsockopt/setsockopt OPTNAME */
DCL MCAST_BLOCK_SOURCE BIT(32) INIT('0010002C'BX);
/* getsockopt/setsockopt OPTNAME */
DCL MCAST_UNBLOCK_SOURCE BIT(32) INIT('0010002D'BX);
/* getsockopt/setsockopt OPTNAME */
DCL MCAST_EXCLUDE BIT(32) INIT('00000001'BX);
DCl MCAST_INCLUDE BIT(32) INIT('00000000'BX);
DCl MCAST_NUMSRC_MAX BIT(32)INIT('00000040'BX);
DCL MESSAGE CHAR(50) INIT('I love my 1 @ Rottweiler!'); /* message */
DCL MSG CHAR(100) INIT(' '); /* message text */
DCL 1 NAME_ID, /* socket addr of connection peer */
2 FAMILY FIXED BIN(15) INIT(2), /*addr'g family TCP/IP def */
2 PORT BIT(16), /* system assigned port # */
2 ADDRESS BIT(32), /* 32-bit internet */
2 RESERVED CHAR(8); /* reserved */
DCL 1 NAME6_ID, /* socket addr of connection peer */
2 FAMILY FIXED BIN(15) INIT(19), /* NAMELN IGNORED & FAMILY */
2 PORT BIT(16), /* port # */
2 FLOWINFO FIXED BIN(31), /* Flow info */
2 ADDRESS CHAR(16), /* IPv6 internet address */
2 SCOPEID FIXED BIN(31); /* Scope ID */
DCL NAMEL CHAR(255) VARYING; /* name field, long */
DCL NAMES CHAR(24); /* name field, short */
DCL NAMELEN FIXED BIN(31); /* length of name/alias field */
DCL NBYTE FIXED BIN(31); /* Number of bytes in buffer */
DCL 1 NETCONFHDR, /* Network Configuration Hdr */
2 NCHEYECATCHER CHAR(4) INIT('6NCH'), /* Eye Catcher '6NCH' */
2 NCHIOCTL BIT(32) INIT('C014F608'BX),
/* The IOCTL being processed */
/* with this instance of the */
/* NetConfHdr. (RAS item) */
2 NCHBUFFERLENGTH FIXED BIN(31) INIT(3200), /* Buffer Length */
2 NCHBUFFERPTR POINTER, /* Buffer Pointer */
2 NCHNUMENTRYRET FIXED BIN(31); /* Number of HomeIF returned via */
/* SIOCGHOMEIF6 or the number of*/
/* GRT6RtEntry's returned via */
/* SIOCGRT6TABLE. */
DCL NI_NOFQDN FIXED BIN(31) INIT(1);
/* flag: getnameinfo */
DCL NI_NUMERICHOST FIXED BIN(31) INIT(2);
/* flag: getnameinfo */
DCL NI_NAMEREQD FIXED BIN(31) INIT(4);
/* flag: getnameinfo */
DCL NI_NUMERICSERV FIXED BIN(31) INIT(8);
/* flag: getnameinfo */
DCL NI_DGRAM FIXED BIN(31) INIT(16);
/* flag: getnameinfo */
DCL NI_NUMERICSCOPE FIXED BIN(31) INIT(32);
/* flag: getnameinfo */
DCL NOTE(3) CHAR(25) INIT('Now is the time for 198 g',
'ood people to come to the',
' aid of their parties!');
DCL NS FIXED BIN(15); /* socket descriptor, new */
DCL NTOP CHAR(16) INIT('NTOP'); /* Numeric to Presentation */
DCL NULL BUILTIN;
DCL 1 NUMERIC_ADDR CHAR(16); /* NTOP/PTON Numeric address */
DCL OPNAMELEN FIXED BIN(31); /* Socket address structure length */
DCL OPCANON CHAR(256); /* Canonical name */
DCL OPNAME POINTER; /* Socket address structure */
DCL OPNEXT POINTER; /* Next result address info in chain */
DCL OPTL FIXED BIN(31); /* length of OPTVAL string */
DCL OPTLEN FIXED BIN(31); /* length of OPTVAL string */
DCL OPTN CHAR(15); /* OPTNAME value (macro) */
DCL OPTNAME FIXED BIN(31); /* OPTNAME value (call) */
DCL OPTVAL CHAR(255); /* GETSOCKOPT option data */
DCL OPTVALD FIXED BIN(31); /* SETSOCKOPT option data */
DCL 1 OPT_STRUC, /* structure for option */
2 ON_OFF FIXED BIN(31) INIT(1), /* enable option */
2 TIME FIXED BIN(31) INIT(5); /* time-out in seconds */
DCL 1 OPT_STRUCT, /* structure for option */
2 ON FIXED BIN(31), /* used for getsockopt */
2 TIMEOUT FIXED BIN(31); /* time-out in seconds */
DCL PLITEST BUILTIN; /* debug tool */
DCL PRESENTABLE_ADDR CHAR(45); /* NTOP/PTON presentable address */
DCL PRESENTABLE_ADDR_LEN FIXED BIN(15);
/* NTOP/PTON presentable address length*/
DCL PROTO FIXED BIN(31) INIT(0); /* prototype default */
DCL PTON CHAR(16) INIT('PTON'); /* Presentation to numeric */
DCL READ CHAR(16) INIT('READ');
DCL READV CHAR(16) INIT('READV');
DCL RECV CHAR(16) INIT('RECV');
DCL RECVFROM CHAR(16) INIT('RECVFROM');
DCL RECVMSG CHAR(16) INIT('RECVMSG');
DCL REUSE FIXED BIN(31) INIT('4'); /* toggle, reuse local addr */
DCL REQARG FIXED BIN(31); /* command request argument */
DCL RES POINTER; /* getaddrinfo RES addrinfo ptr */
DCL RETC FIXED BIN(31); /* return code variable */
DCL RETARG CHAR(255); /* return argument data area */
DCL RETCODE FIXED BIN(31) INIT(0); /* return code */
DCL RETLEN FIXED BIN(31); /* return area data length */
DCL RRETMSK CHAR(4); /* indicate READ EVENTS */
DCL RSNDMSK CHAR(4); /* check for pending read events */
DCL RTENTRY CHAR(50) INIT('dummy table'); /* router entry */
DCL SAVEFAM FIXED BIN(15); /* temporary family name */
DCL SELECB CHAR(4) INIT('1');
DCL SELECT CHAR(16) INIT('SELECT');
DCL SELECTEX CHAR(16) INIT('SELECTEX');
DCL SEND CHAR(16) INIT('SEND');
DCL SENDMSG CHAR(16) INIT('SENDMSG');
DCL SENDTO CHAR(16) INIT('SENDTO');
DCL SETADEYE1 CHAR(8) INIT('SETAPPLD');
DCL SETADVER FIXED BIN(15) INIT(1);
DCL SETADCONTLEN FIXED BIN(15) INIT(48);
DCL SETADBUFLEN FIXED BIN(15) INIT(40);
DCL 1 SETAPPLDATA,
2 SETAD_EYE1 CHAR(8),
2 SETAD_VER FIXED BIN(15),
2 SETAD_LEN FIXED BIN(15),
2 * CHAR(4),
2 SETAD_PTR64 ,
3 SETAD_PTRHW CHAR(4),
3 SETAD_PTR POINTER;
DCL SETADEYE2 CHAR(8) INIT('APPLDATA');
DCL 1 SETADCONTAINER,
2 SETAD_EYE2 CHAR(8),
2 SETAD_BUFFER CHAR(40);
DCL SETSOCKOPT CHAR(16) INIT('SETSOCKOPT');
DCL SHUTDOWN CHAR(16) INIT('SHUTDOWN');
DCL SIOCADDRT BIT(32) INIT('8030A70A'BX); /* flag: add routing entry*/
DCL SIOCATMARK BIT(32) INIT('4004A707'BX); /* flag: out-of-band data*/
DCL SIOCDELRT BIT(32) INIT('8030A70B'BX); /* flag: delete routing */
DCL SIOCGIFADDR BIT(32) INIT('C020A70D'BX); /*flag: network int addr*/
DCL SIOCGHOMEIF6 BIT(32) INIT('C014F608'BX); /* flag netw int config*/
DCL SIOCGIFBRDADDR BIT(32) INIT('C020A712'BX); /* flag net broadcast*/
DCL SIOCGIFCONF BIT(32) INIT('C008A714'BX); /* flag: netw int config*/
DCL SIOCGIFDSTADDR BIT(32) INIT('C020A70F'BX); /* flag: net des addr*/
DCL SIOCGIFFLAGS BIT(32) INIT('C020A711'BX); /* flag: net intf flags*/
DCL SIOCGIFMETRIC BIT(32) INIT('C020A717'BX); /* flag: get rout metr*/
DCL SIOCGIFMTU BIT(32) INIT('C020A726'BX); /* flag: get intf mtu */
DCL SIOCGIFNAMEINDEX BIT(32) INIT('4000F603'BX);
/* flag: name and indexes */
DCL SIOCGIFNETMASK BIT(32) INIT('C020A715'BX); /* flag: network mask*/
DCL SIOCGIFNONSENSE BIT(32) INIT('B669FD2E'BX); /* flag: nonsense */
DCL SIOCSIFMETRIC BIT(32) INIT('8020A718'BX); /* flag: set rout metr*/
DCL SIOCSAPPLDATA BIT(32) INIT('8018D90C'BX); /* Set APPLDATA */
DCL SIOCGIPMSFILTER BIT(32) INIT('C000A724'BX);
/* flag: get multicast src filter */
DCL SIOCSIPMSFILTER BIT(32) INIT('8000A725'BX);
/* flag: set multicast src filter */
DCL SIOCGMSFILTER BIT(32) INIT('C000F610'BX);
/* flag: get multicast src filter */
DCL SIOCSMSFILTER BIT(32) INIT('8000F611'BX);
/* flag: set multicast src filter */
/* The following constant is defined in EZBZTLS1, but is also */
/* included here for completeness. */
/* DCL SIOCTTLSCTL BIT(32) INIT('C038D90B'BX) */
/* flag: ttls */
/* The following constants are defined in EZBPINF1, but is also */
/* included here for completeness. */
/* DCL SIOCSPARTNERINFO BIT(32) INIT('8004F613'BX); */
/* DCL SIOCGPARTNERINFO BIT(32) INIT('C000F612'BX); */
/* flag: PartnerInfo */
DCL SOCK FIXED BIN(15); /* socket descriptor */
DCL SOCKET CHAR(16) INIT('SOCKET');
DCL SOCK_DATAGRAM FIXED BIN(15); /* socket descriptor datagram */
DCL SOCK_RAW FIXED BIN(15); /* socket descriptor raw */
DCL SOCK_STREAM FIXED BIN(15); /* stream socket descriptor */
DCL SOCK_STREAM_1 FIXED BIN(15); /* stream socket descriptor */
DCL SO_BROADCAST FIXED BIN(31) INIT(32); /* toggle, broadcast msg */
DCL SO_ERROR FIXED BIN(31) INIT(4103); /* check/clear async error */
DCL SO_KEEPALIVE FIXED BIN(31) INIT(8); /* request status of stream*/
DCL SO_LINGER FIXED BIN(31) INIT(128); /* toggle, linger on close */
DCL SO_OOBINLINE FIXED BIN(31) INIT(256);/*toggle, out-of-bound data*/
DCL SO_RCVTIMEO BIT(32) INIT('00001006'BX);
DCL SO_REUSEADDR FIXED
BIN(31) INIT(4); /* toggle, local address reuse*/
DCL SO_SNDBUF FIXED BIN(31) INIT(4097);
DCL SO_SNDTIMEO BIT(32) INIT('00001005'BX);
DCL SO_TYPE FIXED BIN(31) INIT(4104); /* return type of socket */
DCL STRING BUILTIN;
DCL SUBSTR BUILTIN;
DCL SUBTASK CHAR(8) INIT('ANYNAME'); /* task/path identifier */
DCL SYNC CHAR(16) INIT('SYNC');
DCL TAKESOCKET CHAR(16) INIT('TAKESOCKET');
DCL TASK CHAR(16) INIT('TASK');
DCL TERMAPI CHAR(16) INIT('TERMAPI'); /* */
DCL TIME BUILTIN;
DCL 1 TIMEOUT,
2 TIME_SEC FIXED BIN(31), /* value in secs */
2 TIME_MSEC FIXED BIN(31); /* value in millisecs */
DCL 1 TIMEVAL,
2 TV_SEC BIT(32), /* value in secs */
2 TV_USEC BIT(32); /* value in microseconds */
DCL TYPE_DATAGRAM FIXED BIN(31) INIT(2);/*fixed lengthconnectionless*/
DCL TYPE_RAW FIXED BIN(31) INIT(3); /* internal protocol interface */
DCL TYPE_STREAM FIXED BIN(31) INIT(1); /* two-way byte stream */
DCL WRETMSK CHAR(4); /* indicate WRITE EVENTS */
DCL WRITE CHAR(16) INIT('WRITE');
DCL WRITEV CHAR(16) INIT('WRITEV');
DCL WSNDMSK CHAR(4); /*check for pending write events */
DCL TCP_KEEPALIVE BIT(32) INIT('80000008'BX);
DCL TCP_NODELAY BIT(32) INIT('80000001'BX);
Figure 1. CBLOCK
PL/1 common variables