intro(3N) intro(3N) NAME intro - introduction to SVR4 networking functions and libraries DESCRIPTION This section describes functions found in the SVR4 networking library. Function declarations can be obtained from the #include files indicated on each page. Certain major collections are identified by a letter after the section number: The SVR4 networking functions are contained in a single libraries known as the Network Services library, libnsl. The following functions constitute the libnsl library: netdir Network Directory functions. This contains look-up functions and the access point to network directory libraries for various network transports. netselect Network Selection routines. These functions manipulate the /etc/netconfig file and return entries. See getnetpath(3N) and getnetconfig(3N). As of IRIX 6.5.20, these functions have been moved to the standard C library (libc). nsl Transport Level Interface (TLI). These functions contain the implementation of X/OPEN's Transport Level Interface. rexec REXEC library interface rpc User-level Remote Procedure Call library saf Service Access Facility library yp Network Information Service functions. [The NIS functions have been moved to libc.] DEFINITIONS In the Network Services library, netbuf is a structure used in various TLI functions to send and receive data and information. netbuf is defined in sys/tiuser.h, and includes the following members: struct netbuf { unsigned int maxlen; /* The physical size of the buffer */ unsigned int len; /* The number of bytes in the buffer */ char *buf; /* Points to user input and/or output buffer */ }; If netbuf is used for output, the function will set the user value of len on return. maxlen generally has significance only when buf is used to receive output from the TLI function. In this case, it specifies the maximum value of len that can be set by the function. If maxlen is not large enough to hold the returned information, an TBUFOVFLW error will generally result. However, certain functions may return part of the data and not generate an error. FILES INCDIR usually /usr/include LIBDIR usually /usr/ccs/lib LIBDIR/libsocket.so (normally unused, see below) LIBDIR/libnsl.so SEE ALSO NOTES None of the functions, external variables, or macros should be redefined in the user's programs. Any other name may be redefined without affecting the behavior of other library functions, but such redefinition may conflict with a declaration in an included header file. The header files in INCDIR provide function prototypes (function declarations including the types of arguments) for most of the functions listed in this manual. Function prototypes allow the compiler to check for correct usage of these functions in the user's program. The lint program checker may also be used and will report discrepancies even if the header files are not included with #include statements. Use of lint is highly recommended. In detailed definitions of components, it is sometimes necessary to refer to symbolic names that are implementation-specific, but which are not necessarily expected to be accessible to an application program. Many of these symbolic names describe boundary conditions and system limits. In this section, for readability, these implementation-specific values are given symbolic names. These names always appear enclosed in curly brackets to distinguish them from symbolic names of other implementation-specific constants that are accessible to application programs by header files. These names are not necessarily accessible to an application program through a header file, although they may be defined in the documentation for a particular system. In general, a portable application program should not refer to these symbolic names in its code. For example, an application program would not be expected to test the length of an argument list given to a routine to determine if it was greater than {ARG_MAX}. There are 2 types of networking in IRIX. 1) BSD sockets implemented in the kernel, along with SUN RPC and NIS (YP). The functions that implement these calls are in libc [see 2) SVR4-style STREAMS/TLI/DLPI networking (not sockets), along with SVR4-style RPC. SVR4-style RPC doesn't work with sockets, only with the TLI. Also, SVR4-style networking does not support NIS. The functions that implement these calls are in libnsl, and to use them, the code must be compiled with : cc -D_SVR4_TIRPC prog.c -lnsl eoe.sw.svr4net must be installed to use the TLI functionality. eoe.sw.dlpi must be installed to use the DLPI (Data-link Provider Interface) functionality. In order to fully support the MIPS ABI, there is a library (libsocket) that can be linked with explicitly. There are no header file or semantic differences when using libsocket. The MIPS ABI- compliant programs that use sockets must (in order to be ABI- compliant) link with libsocket. To compile such a program, use: cc prog.c -lsocket This library exists solely to satisfy the ABI; it uses the standard IRIX socket services described above to implement the specified functionality. Page 3