RPC(3) Library Functions Manual RPC(3)

# [NAME](#NAME)

`rpc` — library routines for remote procedure calls

# [SYNOPSIS](#SYNOPSIS)

`#include <rpc/rpc.h>`  
`#include <netconfig.h>`

# [DESCRIPTION](#DESCRIPTION)

These routines allow C language programs to make procedure calls on other machines across a network. First, the client sends a request to the server. On receipt of the request, the server calls a dispatch routine to perform the requested service, and then sends back a reply.

All RPC routines require the header `<rpc/rpc.h>`. Routines that take a `struct netconfig` also require that `<netconfig.h>` be included.

# [Nettype](#Nettype)

Some of the high-level RPC interface routines take a `nettype` string as one of the arguments (for example, [`clnt_create`](#clnt_create)(), [`svc_create`](#svc_create)(), [`rpc_reg`](#rpc_reg)(), [`rpc_call`](#rpc_call)()). This string defines a class of transports which can be used for a particular application.

The `nettype` argument can be one of the following:

netpath

Choose from the transports which have been indicated by their token names in the `NETPATH` environment variable. `NETPATH` is unset or `NULL`, it defaults to "visible". "netpath" is the default `nettype`.

visible

Choose the transports which have the visible flag (v) set in the /etc/netconfig file.

circuit\_v

This is same as "visible" except that it chooses only the connection oriented transports (semantics "tpi\_cots" or "tpi\_cots\_ord") from the entries in the /etc/netconfig file.

datagram\_v

This is same as "visible" except that it chooses only the connectionless datagram transports (semantics "tpi\_clts") from the entries in the /etc/netconfig file.

circuit\_n

This is same as "netpath" except that it chooses only the connection oriented datagram transports (semantics "tpi\_cots" or "tpi\_cots\_ord").

datagram\_n

This is same as "netpath" except that it chooses only the connectionless datagram transports (semantics "tpi\_clts").

udp

This refers to Internet UDP, both version 4 and 6.

tcp

This refers to Internet TCP, both version 4 and 6.

If `nettype` is `NULL`, it defaults to "netpath". The transports are tried in left to right order in the `NETPATH` variable or in top to down order in the /etc/netconfig file.

# [Derived Types](#Derived_Types)

The derived types used in the RPC interfaces are defined as follows:

```
	typedef u_int32_t rpcprog_t;
	typedef u_int32_t rpcvers_t;
	typedef u_int32_t rpcproc_t;
	typedef u_int32_t rpcprot_t;
	typedef u_int32_t rpcport_t;
	typedef   int32_t rpc_inline_t;
```

# [Data Structures](#Data_Structures)

Some of the data structures used by the RPC package are shown below.

# [The AUTH Structure](#The_AUTH_Structure)

```
/*
 * Authentication info. Opaque to client.
 */
struct opaque_auth {
    enum_t    oa_flavor;    /* flavor of auth */
    caddr_t    oa_base;    /* address of more auth stuff */
    u_int    oa_length;    /* not to exceed MAX_AUTH_BYTES */
};

/*
 * Auth handle, interface to client side authenticators.
 */
typedef struct {
    struct    opaque_auth    ah_cred;
    struct    opaque_auth    ah_verf;
    struct auth_ops {
        void    (*ah_nextverf)();
        int    (*ah_marshal)();    /* nextverf & serialize */
        int    (*ah_validate)();    /* validate verifier */
        int    (*ah_refresh)();    /* refresh credentials */
        void    (*ah_destroy)();    /* destroy this structure */
    } *ah_ops;
    caddr_t ah_private;
} AUTH;
```

# [The CLIENT Structure](#The_CLIENT_Structure)

```
/*
 * Client rpc handle.
 * Created by individual implementations.
 * Client is responsible for initializing auth.
 */

typedef struct {
    AUTH    *cl_auth;    /* authenticator */
    struct clnt_ops {
        enum clnt_stat    (*cl_call)();    /* call remote procedure */
        void    (*cl_abort)();        /* abort a call */
        void    (*cl_geterr)();        /* get specific error code */
        bool_t    (*cl_freeres)();    /* frees results */
        void    (*cl_destroy)();    /* destroy this structure */
        bool_t    (*cl_control)();    /* the ioctl() of rpc */
    } *cl_ops;
    caddr_t    cl_private;    /* private stuff */
    char    *cl_netid;    /* network identifier */
    char    *cl_tp;        /* device name */
} CLIENT;
```

# [The SVCXPRT structure](#The_SVCXPRT_structure)

```
enum xprt_stat {
    XPRT_DIED,
    XPRT_MOREREQS,
    XPRT_IDLE
};

/*
 * Server side transport handle
 */
typedef struct {
    int    xp_fd;    /* file descriptor for the server handle */
    u_short    xp_port;    /* obsolete */
    const struct xp_ops {
        bool_t    (*xp_recv)();    /* receive incoming requests */
        enum xprt_stat    (*xp_stat)();    /* get transport status */
        bool_t    (*xp_getargs)();    /* get arguments */
        bool_t    (*xp_reply)();      /* send reply */
        bool_t    (*xp_freeargs)(); /* free mem allocated for args */
        void    (*xp_destroy)();    /* destroy this struct */
    } *xp_ops;
    int    xp_addrlen;    /* length of remote addr.  Obsolete */
    struct sockaddr_in    xp_raddr; /* Obsolete */
    const struct xp_ops2 {
        bool_t    (*xp_control)();    /* catch-all function */
    } *xp_ops2;
    char    *xp_tp;    /* transport provider device name */
    char    *xp_netid;    /* network identifier */
    struct netbuf    xp_ltaddr;    /* local transport address */
    struct netbuf    xp_rtaddr;    /* remote transport address */
    struct opaque_auth    xp_verf;    /* raw response verifier */
    caddr_t    xp_p1;    /* private: for use by svc ops */
    caddr_t    xp_p2;    /* private: for use by svc ops */
    caddr_t    xp_p3;    /* private: for use by svc lib */
    int    xp_type    /* transport type */
} SVCXPRT;
```

# [The svc\_reg structure](#The_svc_reg_structure)

```
struct svc_req {
    rpcprog_t    rq_prog;    /* service program number */
    rpcvers_t    rq_vers;    /* service protocol version */
    rpcproc_t    rq_proc;    /* the desired procedure */
    struct opaque_auth    rq_cred;    /* raw creds from the wire */
    caddr_t    rq_clntcred;    /* read only cooked cred */
    SVCXPRT    *rq_xprt;    /* associated transport */
};
```

# [The XDR structure](#The_XDR_structure)

```
/*
 * XDR operations.
 * XDR_ENCODE causes the type to be encoded into the stream.
 * XDR_DECODE causes the type to be extracted from the stream.
 * XDR_FREE can be used to release the space allocated by an XDR_DECODE
 * request.
 */
enum xdr_op {
    XDR_ENCODE=0,
    XDR_DECODE=1,
    XDR_FREE=2
};
/*
 * This is the number of bytes per unit of external data.
 */
#define BYTES_PER_XDR_UNIT    (4)
#define RNDUP(x)  ((((x) + BYTES_PER_XDR_UNIT - 1) /
                   BYTES_PER_XDR_UNIT) \ * BYTES_PER_XDR_UNIT)

/*
 * A xdrproc_t exists for each data type which is to be encoded or
 * decoded.  The second argument to the xdrproc_t is a pointer to
 * an opaque pointer.  The opaque pointer generally points to a
 * structure of the data type to be decoded.  If this points to 0,
 * then the type routines should allocate dynamic storage of the
 * appropriate size and return it.
 * bool_t  (*xdrproc_t)(XDR *, caddr_t *);
 */
typedef  bool_t (*xdrproc_t)();

/*
 * The XDR handle.
 * Contains operation which is being applied to the stream,
 * an operations vector for the particular implementation
 */
typedef struct {
    enum xdr_op    x_op;    /* operation; fast additional param */
    struct xdr_ops {
        bool_t    (*x_getlong)();    /* get a long from underlying stream */
        bool_t    (*x_putlong)();    /* put a long to underlying stream */
        bool_t    (*x_getbytes)(); /* get bytes from underlying stream */
        bool_t    (*x_putbytes)(); /* put bytes to underlying stream */
        u_int    (*x_getpostn)(); /* returns bytes off from beginning */
        bool_t    (*x_setpostn)(); /* lets you reposition the stream */
        long *    (*x_inline)();    /* buf quick ptr to buffered data */
        void    (*x_destroy)();    /* free privates of this xdr_stream */
    } *x_ops;
    caddr_t    x_public;    /* users' data */
    caddr_t    x_private;    /* pointer to private data */
    caddr_t    x_base;    /* private used for position info */
    u_int    x_handy;    /* extra private word */
} XDR;

/*
 * The netbuf structure. This structure is defined in <xti.h> on SysV
 * systems, but NetBSD / FreeBSD do not use XTI.
 *
 * Usually, buf will point to a struct sockaddr, and len and maxlen
 * will contain the length and maximum length of that socket address,
 * respectively.
 */
struct netbuf {
	unsigned int maxlen;
	unsigned int len;
	void *buf;
};

/*
 * The format of the address and options arguments of the XTI t_bind call.
 * Only provided for compatibility, it should not be used other than
 * as an argument to svc_tli_create().
 */

struct t_bind {
	struct netbuf   addr;
	unsigned int    qlen;
};
```

# [Index to Routines](#Index_to_Routines)

The following table lists RPC routines and the manual reference pages on which they are described:

[*RPC Routine*](#RPC)

[*Manual Reference Page*](#Manual)

[`auth_destroy`](#auth_destroy)()

[rpc\_clnt\_auth(3)](/man/os/libtirpc-nokrb/rpc_clnt_auth.3)

[`authdes_create`](#authdes_create)()

[rpc\_soc(3)](/man/os/libtirpc-nokrb/rpc_soc.3)

[`authnone_create`](#authnone_create)()

[rpc\_clnt\_auth(3)](/man/os/libtirpc-nokrb/rpc_clnt_auth.3)

[`authsys_create`](#authsys_create)()

[rpc\_clnt\_auth(3)](/man/os/libtirpc-nokrb/rpc_clnt_auth.3)

[`authsys_create_default`](#authsys_create_default)()

[rpc\_clnt\_auth(3)](/man/os/libtirpc-nokrb/rpc_clnt_auth.3)

[`authunix_create`](#authunix_create)()

[rpc\_soc(3)](/man/os/libtirpc-nokrb/rpc_soc.3)

[`authunix_create_default`](#authunix_create_default)()

[rpc\_soc(3)](/man/os/libtirpc-nokrb/rpc_soc.3)

[`callrpc`](#callrpc)()

[rpc\_soc(3)](/man/os/libtirpc-nokrb/rpc_soc.3)

[`clnt_broadcast`](#clnt_broadcast)()

[rpc\_soc(3)](/man/os/libtirpc-nokrb/rpc_soc.3)

[`clnt_call`](#clnt_call)()

[rpc\_clnt\_calls(3)](/man/os/libtirpc-nokrb/rpc_clnt_calls.3)

[`clnt_control`](#clnt_control)()

[rpc\_clnt\_create(3)](/man/os/libtirpc-nokrb/rpc_clnt_create.3)

`clnt_create`()

[rpc\_clnt\_create(3)](/man/os/libtirpc-nokrb/rpc_clnt_create.3)

[`clnt_create_timed`](#clnt_create_timed)()

[rpc\_clnt\_create(3)](/man/os/libtirpc-nokrb/rpc_clnt_create.3)

[`clnt_create_vers`](#clnt_create_vers)()

[rpc\_clnt\_create(3)](/man/os/libtirpc-nokrb/rpc_clnt_create.3)

[`clnt_create_vers_timed`](#clnt_create_vers_timed)()

[rpc\_clnt\_create(3)](/man/os/libtirpc-nokrb/rpc_clnt_create.3)

[`clnt_destroy`](#clnt_destroy)()

[rpc\_clnt\_create(3)](/man/os/libtirpc-nokrb/rpc_clnt_create.3)

[`clnt_dg_create`](#clnt_dg_create)()

[rpc\_clnt\_create(3)](/man/os/libtirpc-nokrb/rpc_clnt_create.3)

[`clnt_freeres`](#clnt_freeres)()

[rpc\_clnt\_calls(3)](/man/os/libtirpc-nokrb/rpc_clnt_calls.3)

[`clnt_geterr`](#clnt_geterr)()

[rpc\_clnt\_calls(3)](/man/os/libtirpc-nokrb/rpc_clnt_calls.3)

[`clnt_pcreateerror`](#clnt_pcreateerror)()

[rpc\_clnt\_create(3)](/man/os/libtirpc-nokrb/rpc_clnt_create.3)

[`clnt_perrno`](#clnt_perrno)()

[rpc\_clnt\_calls(3)](/man/os/libtirpc-nokrb/rpc_clnt_calls.3)

[`clnt_perror`](#clnt_perror)()

[rpc\_clnt\_calls(3)](/man/os/libtirpc-nokrb/rpc_clnt_calls.3)

[`clnt_raw_create`](#clnt_raw_create)()

[rpc\_clnt\_create(3)](/man/os/libtirpc-nokrb/rpc_clnt_create.3)

[`clnt_spcreateerror`](#clnt_spcreateerror)()

[rpc\_clnt\_create(3)](/man/os/libtirpc-nokrb/rpc_clnt_create.3)

[`clnt_sperrno`](#clnt_sperrno)()

[rpc\_clnt\_calls(3)](/man/os/libtirpc-nokrb/rpc_clnt_calls.3)

[`clnt_sperror`](#clnt_sperror)()

[rpc\_clnt\_calls(3)](/man/os/libtirpc-nokrb/rpc_clnt_calls.3)

[`clnt_tli_create`](#clnt_tli_create)()

[rpc\_clnt\_create(3)](/man/os/libtirpc-nokrb/rpc_clnt_create.3)

[`clnt_tp_create`](#clnt_tp_create)()

[rpc\_clnt\_create(3)](/man/os/libtirpc-nokrb/rpc_clnt_create.3)

[`clnt_tp_create_timed`](#clnt_tp_create_timed)()

[rpc\_clnt\_create(3)](/man/os/libtirpc-nokrb/rpc_clnt_create.3)

[`clnt_udpcreate`](#clnt_udpcreate)()

[rpc\_soc(3)](/man/os/libtirpc-nokrb/rpc_soc.3)

[`clnt_vc_create`](#clnt_vc_create)()

[rpc\_clnt\_create(3)](/man/os/libtirpc-nokrb/rpc_clnt_create.3)

[`clntraw_create`](#clntraw_create)()

[rpc\_soc(3)](/man/os/libtirpc-nokrb/rpc_soc.3)

[`clnttcp_create`](#clnttcp_create)()

[rpc\_soc(3)](/man/os/libtirpc-nokrb/rpc_soc.3)

[`clntudp_bufcreate`](#clntudp_bufcreate)()

[rpc\_soc(3)](/man/os/libtirpc-nokrb/rpc_soc.3)

[`get_myaddress`](#get_myaddress)()

[rpc\_soc(3)](/man/os/libtirpc-nokrb/rpc_soc.3)

[`pmap_getmaps`](#pmap_getmaps)()

[rpc\_soc(3)](/man/os/libtirpc-nokrb/rpc_soc.3)

[`pmap_getport`](#pmap_getport)()

[rpc\_soc(3)](/man/os/libtirpc-nokrb/rpc_soc.3)

[`pmap_rmtcall`](#pmap_rmtcall)()

[rpc\_soc(3)](/man/os/libtirpc-nokrb/rpc_soc.3)

[`pmap_set`](#pmap_set)()

[rpc\_soc(3)](/man/os/libtirpc-nokrb/rpc_soc.3)

[`pmap_unset`](#pmap_unset)()

[rpc\_soc(3)](/man/os/libtirpc-nokrb/rpc_soc.3)

[`registerrpc`](#registerrpc)()

[rpc\_soc(3)](/man/os/libtirpc-nokrb/rpc_soc.3)

[`rpc_broadcast`](#rpc_broadcast)()

[rpc\_clnt\_calls(3)](/man/os/libtirpc-nokrb/rpc_clnt_calls.3)

[`rpc_broadcast_exp`](#rpc_broadcast_exp)()

[rpc\_clnt\_calls(3)](/man/os/libtirpc-nokrb/rpc_clnt_calls.3)

`rpc_call`()

[rpc\_clnt\_calls(3)](/man/os/libtirpc-nokrb/rpc_clnt_calls.3)

`rpc_reg`()

[rpc\_svc\_calls(3)](/man/os/libtirpc-nokrb/rpc_svc_calls.3)

`svc_create`()

[rpc\_svc\_create(3)](/man/os/libtirpc-nokrb/rpc_svc_create.3)

[`svc_destroy`](#svc_destroy)()

[rpc\_svc\_create(3)](/man/os/libtirpc-nokrb/rpc_svc_create.3)

[`svc_dg_create`](#svc_dg_create)()

[rpc\_svc\_create(3)](/man/os/libtirpc-nokrb/rpc_svc_create.3)

[`svc_dg_enablecache`](#svc_dg_enablecache)()

[rpc\_svc\_calls(3)](/man/os/libtirpc-nokrb/rpc_svc_calls.3)

[`svc_fd_create`](#svc_fd_create)()

[rpc\_svc\_create(3)](/man/os/libtirpc-nokrb/rpc_svc_create.3)

[`svc_fds`](#svc_fds)()

[rpc\_soc(3)](/man/os/libtirpc-nokrb/rpc_soc.3)

[`svc_freeargs`](#svc_freeargs)()

[rpc\_svc\_reg(3)](/man/os/libtirpc-nokrb/rpc_svc_reg.3)

[`svc_getargs`](#svc_getargs)()

[rpc\_svc\_reg(3)](/man/os/libtirpc-nokrb/rpc_svc_reg.3)

[`svc_getcaller`](#svc_getcaller)()

[rpc\_soc(3)](/man/os/libtirpc-nokrb/rpc_soc.3)

[`svc_getreq`](#svc_getreq)()

[rpc\_soc(3)](/man/os/libtirpc-nokrb/rpc_soc.3)

[`svc_getreqset`](#svc_getreqset)()

[rpc\_svc\_calls(3)](/man/os/libtirpc-nokrb/rpc_svc_calls.3)

[`svc_getrpccaller`](#svc_getrpccaller)()

[rpc\_svc\_calls(3)](/man/os/libtirpc-nokrb/rpc_svc_calls.3)

[`svc_kerb_reg`](#svc_kerb_reg)()

[kerberos\_rpc(3)](/man/os/libtirpc-nokrb/kerberos_rpc.3)

[`svc_raw_create`](#svc_raw_create)()

[rpc\_svc\_create(3)](/man/os/libtirpc-nokrb/rpc_svc_create.3)

[`svc_reg`](#svc_reg)()

[rpc\_svc\_calls(3)](/man/os/libtirpc-nokrb/rpc_svc_calls.3)

[`svc_register`](#svc_register)()

[rpc\_soc(3)](/man/os/libtirpc-nokrb/rpc_soc.3)

[`svc_run`](#svc_run)()

[rpc\_svc\_reg(3)](/man/os/libtirpc-nokrb/rpc_svc_reg.3)

[`svc_sendreply`](#svc_sendreply)()

[rpc\_svc\_reg(3)](/man/os/libtirpc-nokrb/rpc_svc_reg.3)

[`svc_tli_create`](#svc_tli_create)()

[rpc\_svc\_create(3)](/man/os/libtirpc-nokrb/rpc_svc_create.3)

[`svc_tp_create`](#svc_tp_create)()

[rpc\_svc\_create(3)](/man/os/libtirpc-nokrb/rpc_svc_create.3)

[`svc_unreg`](#svc_unreg)()

[rpc\_svc\_calls(3)](/man/os/libtirpc-nokrb/rpc_svc_calls.3)

[`svc_unregister`](#svc_unregister)()

[rpc\_soc(3)](/man/os/libtirpc-nokrb/rpc_soc.3)

[`svc_vc_create`](#svc_vc_create)()

[rpc\_svc\_create(3)](/man/os/libtirpc-nokrb/rpc_svc_create.3)

[`svcerr_auth`](#svcerr_auth)()

[rpc\_svc\_err(3)](/man/os/libtirpc-nokrb/rpc_svc_err.3)

[`svcerr_decode`](#svcerr_decode)()

[rpc\_svc\_err(3)](/man/os/libtirpc-nokrb/rpc_svc_err.3)

[`svcerr_noproc`](#svcerr_noproc)()

[rpc\_svc\_err(3)](/man/os/libtirpc-nokrb/rpc_svc_err.3)

[`svcerr_noprog`](#svcerr_noprog)()

[rpc\_svc\_err(3)](/man/os/libtirpc-nokrb/rpc_svc_err.3)

[`svcerr_progvers`](#svcerr_progvers)()

[rpc\_svc\_err(3)](/man/os/libtirpc-nokrb/rpc_svc_err.3)

[`svcerr_systemerr`](#svcerr_systemerr)()

[rpc\_svc\_err(3)](/man/os/libtirpc-nokrb/rpc_svc_err.3)

[`svcerr_weakauth`](#svcerr_weakauth)()

[rpc\_svc\_err(3)](/man/os/libtirpc-nokrb/rpc_svc_err.3)

[`svcfd_create`](#svcfd_create)()

[rpc\_soc(3)](/man/os/libtirpc-nokrb/rpc_soc.3)

[`svcraw_create`](#svcraw_create)()

[rpc\_soc(3)](/man/os/libtirpc-nokrb/rpc_soc.3)

[`svctcp_create`](#svctcp_create)()

[rpc\_soc(3)](/man/os/libtirpc-nokrb/rpc_soc.3)

[`svcudp_bufcreate`](#svcudp_bufcreate)()

[rpc\_soc(3)](/man/os/libtirpc-nokrb/rpc_soc.3)

[`svcudp_create`](#svcudp_create)()

[rpc\_soc(3)](/man/os/libtirpc-nokrb/rpc_soc.3)

[`xdr_accepted_reply`](#xdr_accepted_reply)()

[rpc\_xdr(3)](/man/os/libtirpc-nokrb/rpc_xdr.3)

[`xdr_authsys_parms`](#xdr_authsys_parms)()

[rpc\_xdr(3)](/man/os/libtirpc-nokrb/rpc_xdr.3)

[`xdr_authunix_parms`](#xdr_authunix_parms)()

[rpc\_soc(3)](/man/os/libtirpc-nokrb/rpc_soc.3)

[`xdr_callhdr`](#xdr_callhdr)()

[rpc\_xdr(3)](/man/os/libtirpc-nokrb/rpc_xdr.3)

[`xdr_callmsg`](#xdr_callmsg)()

[rpc\_xdr(3)](/man/os/libtirpc-nokrb/rpc_xdr.3)

[`xdr_opaque_auth`](#xdr_opaque_auth)()

[rpc\_xdr(3)](/man/os/libtirpc-nokrb/rpc_xdr.3)

[`xdr_rejected_reply`](#xdr_rejected_reply)()

[rpc\_xdr(3)](/man/os/libtirpc-nokrb/rpc_xdr.3)

[`xdr_replymsg`](#xdr_replymsg)()

[rpc\_xdr(3)](/man/os/libtirpc-nokrb/rpc_xdr.3)

[`xprt_register`](#xprt_register)()

[rpc\_svc\_calls(3)](/man/os/libtirpc-nokrb/rpc_svc_calls.3)

[`xprt_unregister`](#xprt_unregister)()

[rpc\_svc\_calls(3)](/man/os/libtirpc-nokrb/rpc_svc_calls.3)

# [FILES](#FILES)

/etc/netconfig

 

# [AVAILABILITY](#AVAILABILITY)

These functions are part of libtirpc.

# [SEE ALSO](#SEE_ALSO)

[getnetconfig(3)](/man/os/libtirpc-nokrb/getnetconfig.3), [getnetpath(3)](/man/os/libtirpc-nokrb/getnetpath.3), [rpcbind(3)](/man/os/libtirpc-nokrb/rpcbind.3), [rpc\_clnt\_auth(3)](/man/os/libtirpc-nokrb/rpc_clnt_auth.3), [rpc\_clnt\_calls(3)](/man/os/libtirpc-nokrb/rpc_clnt_calls.3), [rpc\_clnt\_create(3)](/man/os/libtirpc-nokrb/rpc_clnt_create.3), [rpc\_svc\_calls(3)](/man/os/libtirpc-nokrb/rpc_svc_calls.3), [rpc\_svc\_create(3)](/man/os/libtirpc-nokrb/rpc_svc_create.3), [rpc\_svc\_err(3)](/man/os/libtirpc-nokrb/rpc_svc_err.3), [rpc\_svc\_reg(3)](/man/os/libtirpc-nokrb/rpc_svc_reg.3), [rpc\_xdr(3)](/man/os/libtirpc-nokrb/rpc_xdr.3), [xdr(3)](/man/os/libtirpc-nokrb/xdr.3), [netconfig(5)](/man/os/libtirpc-nokrb/netconfig.5)

May 7, 1993 Linux 4.19.0-gvisor

---

Document: rpc(3t) from libtirpc-nokrb 1.3.8-r0 (Chainguard OS)
Source: https://downloads.sourceforge.net/project/libtirpc/libtirpc/1.3.8/libtirpc-1.3.8.tar.bz2
