File: AAA_UCXSIM_README.TXT 28-Feb-1999 By John Malmberg UCXSIM_IPC_SHR.EXE is a shared image for use with Open CMU-IP. It allows some binary programs that were linked to run socket routines in the DEC C RTL. Not all functions will will work. This is limited by the capabilities of the Open CMU-IP. A detailed list of what can not be expected to work is below. This program does not provide $QIO/$QIOW compatability with UCX. Nor does it provide BG: device emulation. This program also requires NETLIB 2.0 or higher. Note: It has only been tested with NETLIB 2.0 and 2.2. This is important because UCXSIM_IPC_SHR uses information not documented in NETLIB, but determined from examining the source. If a future version of NETLIB changes the socket context structure, then UCXSIM may stop working. The UCXSIM_IPC_SHR.EXE is copied to the CMUIP_ROOT:[SYSLIB] directory and installed as an /OPEN/HEADER/RESIDENT image. The files NETWORKS., PROTOCOLS., and SERVICES, need to be copied to the CMUIP_ROOT:[SYSLIB] directory. Note the PROTOCOLS. and SERVICES. files are the same as in Eckart Meyer's SOCKETSHR program. The following logical names need to be defined. DEFINE/SYSTEM/EXEC UCX$IPC_SHR CMUIP_ROOT:[SYSLIB]UCXSIM_IPC_SHR.EXE DEFINE/SYSTEM/EXEC UCXSIM_NETWORKS CMUIP_ROOT:[SYSLIB]NETWORKS. DEFINE/SYSTEM/EXEC UCXSIM_PROTOCOLS CMUIP_ROOT:[SYSLIB]PROTOCOLS. DEFINE/SYSTEM/EXEC UCXSIM_SERVICES CMUIP_ROOT:[SYSLIB]SERVICES. This program is basically an interface between DECC$SHR and NETLIB. Except for the select() function and the database routines. The select() function is implemented as a 20 millisecond poll of all of the input sockets. The database routines were implemented to be compatable with SOCKETSHR. Functions implmented: socket() decc$get_sdc() bind() listen() gethostbyname() connect() getsockopt() ! NETLIB documents this as non functional setsockopt() ! NETLIB documents this as non functional getpeername() getsockname() send() ! flags are ignored, as unsupported for NETLIB select() ! 20 millisecond poll on receive sockets. ! All send sockets are assumed to be ready. ! Exception sockets are ignored. recv() ! flags are ignored. write() read() sendto() ! flags are ignored. recvfrom() ! flags are ignored. sendmsg() ! flags are ignored. recvmsg() ! flags are ignored. shutdown() close() inet_addr() gethostbyaddr() gethostaddr() gethostname() ntohl() ! Supplied by DEC C RTL getnetbyaddr() getnetbyname() getnetent() ! Returns NULL always. getprotobyname() getprotobynumber() getprotoent() ! Returns NULL always. getservbyname() getservbyport() htons() ! Supplied by DEC C RTL htonl() ! Supplied by DEC C RTL ntohl() ! Supplied by DEC C RTL ntohl() ! Supplied by DEC C RTL inet_lnaof() inet_netof() inet_makeaddr() inet_network() inet_ntoa() Note: With the advent of the Hobbyist 2 program from Compaq and DECUS, I will probably not be doing anymore work with CMU-IP for a while. I am interested in any use of this program, but will not be able to test any fixes given to me. -John WB8TYW@QSL.NET http://209.138.74.68/gadbottom.html