BS2000/OSD.POSIX-TEAM 2005-10-11 INSTALLATION OF THE POSIX-NSL LIBRARIES VERSION 6.0A00 FOR BS2000 OSD >= V4.0 I.) Installation Assumptions for the installation: - The subsystem POSIX must be running - The subsystem POSPRRTS must be running - The following files can be be installed by IMON in BS2000: MODE SHARE ACCESS MIGRATE $.SYSLIB.POSIX-NSL.060 390 Y R I $.SRMLIB.POSIX-NSL.060 RISC Y R I $.SRMLIB.POSIX-NSL.060 SP04 Y R I $.SYSRME.POSIX-NSL.060.D COM Y R I $.SYSRME.POSIX-NSL.060.E COM Y R I $.SYSSII.POSIX-NSL.060 COM Y R A - The SYSLIB.POSIX-NSL.060 contains the header-files and the "Bindelademoduln" in the /390 format for compiling and linking in BS2000 and for installing the NSL library /usr/lib/libnsl.a in the POSIX filesystem. - The SRMLIB.POSIX-NSL.060 contains the header-files and the "Bindelademoduln" in the RISC format for compiling and linking in BS2000 and for installing the NSL library /usr/lib/libnsl.a or /usr/lib/RISC/libnsl.a in the POSIX filesystem. - The SPMLIB.POSIX-NSL.060 contains the header-files and the "Bindelademoduln" in the SP04 format for compiling and linking in BS2000 and for installing the NSL library /usr/lib/libnsl.a or /usr/lib/SP04/libnsl.a in the POSIX filesystem. - The installation is done with the POSIX-INSTALLATIONSTOOL (from user id $SYSROOT or $TSOS (UID=0, GID=0)): /DO $.SINPRC.POSIX-BC.(POSINST) or /START-POSIX-INSTALLATION function: Install packages on POSIX name of product : posix-nsl version of product : 060 - If either the SYSLIB.POSIX-NSL.060 or the SRMLIB.POSIX-NSL.060 or the SPMLIB.POSIX-NSL.060 is installed, only the one library /usr/lib/libnsl.a with the corresponding code format will be generated in the POSIX filesystem. If all BS2000 libraries are installed, the NSL libraries /usr/lib/libnsl.a with /390 code format , /usr/lib/RISC/libnsl.a with RISC code format and /usr/lib/SP04/libnsl.a with SP04 code format are generated. In this case, you can bind with the RISC (SP04) moduls by specifying the compiler option "-L /usr/lib/RISC" (-L /usr/lib/SP04). II.) Restrictions: The entries of the functions are only available in upper case mode. III.) Notice: 1. The UFS installation requires about 9 MB temporary space at /tmp and about 9(+9 +9) MB permanent space at /usr/lib (/usr/lib/RISC, /usr/lib/SP04). 2. The installation will need some time. 3. The task's ADDRESS-SPACE-LIMIT must be at least 20 MB. 4. If the installation will fail, the text file /tmp/install.libnsl.err will be generated, which contains more information. 5. The XDR functions xdr_string(), xdr_char() and xdr_u_char() ENCODE to ASCII and DECODE to EBCDIC. The XDR functions xdr_string_noc(), xdr_char_noc() and xdr_u_char_noc() have the same functionality but without ASCII/EBCDIC conversion. 6. For the creation of the library the compiler option ENUM-TYPE=LONG (cc/c98 -XL ...) was used. Programs, which use rpc- or xdr-functions, must be compiled with the same option ! Otherwise the program may not run correctly (different alignement of the data). 7. The following files are generatet: /usr/lib/libnsl.a (/usr/lib/RISC/libnsl.a) (/usr/lib/SP04/libnsl.a) /usr/bin/rpcgen /usr/bin/rpcgen_cpp /usr/include/netconfig.h /usr/include/netdb.h /usr/include/netdir.h /usr/include/tiuser.h /usr/include/arpa.ftp.h /usr/include/arpa/ftp.h /usr/include/arpa.inet.h /usr/include/arpa/inet.h /usr/include/arpa.nameser.h /usr/include/arpa/nameser.h /usr/include/arpa.telnet.h /usr/include/arpa/telnet.h /usr/include/arpa.tftp.h /usr/include/arpa/tftp.h /usr/include/net.af.h /usr/include/net/af.h /usr/include/net.if.h /usr/include/net/if.h /usr/include/net.if_arp.h /usr/include/net/if_arp.h /usr/include/net.route.h /usr/include/net/route.h /usr/include/net.strioc.h /usr/include/net/strioc.h /usr/include/netinet.arp.h /usr/include/netinet/arp.h /usr/include/netinet.icmp_var.h /usr/include/netinet/icmp_var.h /usr/include/netinet.if_ether.h /usr/include/netinet/if_ether.h /usr/include/netinet.in.h /usr/include/netinet/in.h /usr/include/netinet.insrem.h /usr/include/netinet/insrem.h /usr/include/netinet.in_pcb.h /usr/include/netinet/in_pcb.h /usr/include/netinet.in_systm.h /usr/include/netinet/in_systm.h /usr/include/netinet.in_var.h /usr/include/netinet/in_var.h /usr/include/netinet.ip.h /usr/include/netinet/ip.h /usr/include/netinet.ip_icmp.h /usr/include/netinet/ip_icmp.h /usr/include/netinet.ip_str.h /usr/include/netinet/ip_str.h /usr/include/netinet.ip_var.h /usr/include/netinet/ip_var.h /usr/include/netinet.llcloop.h /usr/include/netinet/llcloop.h /usr/include/netinet.nihdr.h /usr/include/netinet/nihdr.h /usr/include/netinet.symredef.h /usr/include/netinet/symredef.h /usr/include/netinet.tcp.h /usr/include/netinet/tcp.h /usr/include/netinet.tcpip.h /usr/include/netinet/tcpip.h /usr/include/netinet.tcp_debug.h /usr/include/netinet/tcp_debug.h /usr/include/netinet.tcp_fsm.h /usr/include/netinet/tcp_fsm.h /usr/include/netinet.tcp_seq.h /usr/include/netinet/tcp_seq.h /usr/include/netinet.tcp_timer.h /usr/include/netinet/tcp_timer.h /usr/include/netinet.tcp_var.h /usr/include/netinet/tcp_var.h /usr/include/netinet.udp.h /usr/include/netinet/udp.h /usr/include/netinet.udp_var.h /usr/include/netinet/udp_var.h /usr/include/rpc.auth.h /usr/include/rpc/auth.h /usr/include/rpc.auth_des.h /usr/include/rpc/auth_des.h /usr/include/rpc.auth_sys.h /usr/include/rpc/auth_sys.h /usr/include/rpc.auth_unix.h /usr/include/rpc/auth_unix.h /usr/include/rpc.clnt.h /usr/include/rpc/clnt.h /usr/include/rpc.clnt_soc.h /usr/include/rpc/clnt_soc.h /usr/include/rpc.des_crypt.h /usr/include/rpc/des_crypt.h /usr/include/rpc.key_prot.h /usr/include/rpc/key_prot.h /usr/include/rpc.nettype.h /usr/include/rpc/nettype.h /usr/include/rpc.pmap_clnt.h /usr/include/rpc/pmap_clnt.h /usr/include/rpc.pmap_prot.h /usr/include/rpc/pmap_prot.h /usr/include/rpc.pmap_rmt.h /usr/include/rpc/pmap_rmt.h /usr/include/rpc.raw.h /usr/include/rpc/raw.h /usr/include/rpc.rpc.h /usr/include/rpc/rpc.h /usr/include/rpc.rpcb_clnt.h /usr/include/rpc/rpcb_clnt.h /usr/include/rpc.rpcb_prot.h /usr/include/rpc/rpcb_prot.h /usr/include/rpc.rpcent.h /usr/include/rpc/rpcent.h /usr/include/rpc.rpc_com.h /usr/include/rpc/rpc_com.h /usr/include/rpc.rpc_mp.h /usr/include/rpc/rpc_mp.h /usr/include/rpc.rpc_msg.h /usr/include/rpc/rpc_msg.h /usr/include/rpc.svc.h /usr/include/rpc/svc.h /usr/include/rpc.svc_auth.h /usr/include/rpc/svc_auth.h /usr/include/rpc.svc_soc.h /usr/include/rpc/svc_soc.h /usr/include/rpc.types.h /usr/include/rpc/types.h /usr/include/rpc.xdr.h /usr/include/rpc/xdr.h /usr/include/sys.byteorder.h /usr/include/sys/byteorder.h /usr/include/sys.cmn_err.h /usr/include/sys/cmn_err.h /usr/include/sys.netconfig.h /usr/include/sys/netconfig.h /usr/include/sys.socket.h /usr/include/sys/socket.h /usr/include/sys.t_kuser.h /usr/include/sys/t_kuser.h /usr/include/sys.tiuser.h /usr/include/sys/tiuser.h /usr/include/sys.xti_inet.h /usr/include/sys/xti_inet.h IV.) Functions: The NSL-library contains the functions of the services TLI, XDR and RPC. The following TLI-functions are supported: int t_accept( int fd, int resfd, struct t_call *call ); char *t_alloc( int fd, inst struct_type, int fields ); int t_bind( int fd, struct t_bind *req, struct t_bind *ret ); int t_close( int fd ); int t_connect( int fd, struct t_call *sndcall, struct t_call *rcvcall ); int t_error( char *errmsg ); int t_free( char *ptr, int struct_type ); int t_getinfo( int fd, struct t_info *info ); int t_getprotaddr( int fd, struct t_bind *boundaddr, struct t_bind *peeraddr ); int t_getstate( int fd ); int t_listen( int fd, struct t_call *call ); int t_look( int fd ); int t_open( char *name, int oflag, struct t_info *info ); int t_optmgmt( int fd, struct t_optmgmt *req, struct t_optmgmt *ret ); supported options: TCP_NODELAY, SO_BROADCAST, SO_KEEPALIVE; int t_rcv( int fd, char *buf, unsigned nbytes, int *flags); int t_rcvconnect( int fd, struct t_call *call); int t_rcvdis( int fd, struct t_discon *discon); int t_rcvrel( int fd); int t_rcvudata( int fd, struct t_unitdata *unitdata, int *flags ); int t_rcvuderr( int fd, struct t_uderr *uderr); int t_snd( int fd, char *buf, unsigned nbytes, int flags); int t_snddis( int fd, struct t_call *call); int t_sndrel( int fd); int t_sndudata( int fd, struct t_unitdata *unitdata); int t_sync( int fd); int t_unbind( int fd);