xref: /freebsd/lib/libc/rpc/rpc_svc_create.3 (revision 1fae73b137bfc5a237d7258e3c667ba87a36b7ff)
18360efbdSAlfred Perlstein.\" @(#)rpc_svc_create.3n 1.26 93/08/26 SMI; from SVr4
28360efbdSAlfred Perlstein.\" Copyright 1989 AT&T
38360efbdSAlfred Perlstein.\" @(#)rpc_svc_create 1.3 89/06/28 SMI;
48360efbdSAlfred Perlstein.\" Copyright (c) 1988 Sun Microsystems, Inc. - All Rights Reserved.
58360efbdSAlfred Perlstein.\" $FreeBSD$
68360efbdSAlfred Perlstein.Dd May 3, 1993
78360efbdSAlfred Perlstein.Dt RPC_SVC_CREATE 3
88360efbdSAlfred Perlstein.Os
98360efbdSAlfred Perlstein.Sh NAME
108360efbdSAlfred Perlstein.Nm rpc_svc_create ,
118360efbdSAlfred Perlstein.Nm svc_control ,
128360efbdSAlfred Perlstein.Nm svc_create ,
138360efbdSAlfred Perlstein.Nm svc_destroy ,
148360efbdSAlfred Perlstein.Nm svc_dg_create ,
158360efbdSAlfred Perlstein.Nm svc_fd_create ,
168360efbdSAlfred Perlstein.Nm svc_raw_create ,
178360efbdSAlfred Perlstein.Nm svc_tli_create ,
188360efbdSAlfred Perlstein.Nm svc_tp_create ,
198360efbdSAlfred Perlstein.Nm svc_vc_create
208360efbdSAlfred Perlstein.Nd library routines for the creation of server handles
218360efbdSAlfred Perlstein.Sh LIBRARY
228360efbdSAlfred Perlstein.Lb libc
238360efbdSAlfred Perlstein.Sh SYNOPSIS
2432eef9aeSRuslan Ermilov.In rpc/rpc.h
258360efbdSAlfred Perlstein.Ft bool_t
268360efbdSAlfred Perlstein.Fn svc_control "SVCXPRT *svc" "const u_int req" "void *info"
278360efbdSAlfred Perlstein.Ft int
28db7534cfSBruce Evans.Fn svc_create "void (*dispatch)(struct svc_req *, SVCXPRT *)" "const rpcprog_t prognum" "const rpcvers_t versnum" "const char *nettype"
29db7534cfSBruce Evans.Ft SVCXPRT *
308360efbdSAlfred Perlstein.Fn svc_dg_create "const int fildes" "const u_int sendsz" "const u_int recvsz"
318360efbdSAlfred Perlstein.Ft void
328360efbdSAlfred Perlstein.Fn svc_destroy "SVCXPRT *xprt"
338360efbdSAlfred Perlstein.Ft "SVCXPRT *"
348360efbdSAlfred Perlstein.Fn svc_fd_create "const int fildes" "const u_int sendsz" "const u_int recvsz"
358360efbdSAlfred Perlstein.Ft "SVCXPRT *"
368360efbdSAlfred Perlstein.Fn svc_raw_create "void"
378360efbdSAlfred Perlstein.Ft "SVCXPRT *"
388360efbdSAlfred Perlstein.Fn svc_tli_create "const int fildes" "const struct netconfig *netconf" "const struct t_bind *bindaddr" "const u_int sendsz" "const u_int recvsz"
398360efbdSAlfred Perlstein.Ft "SVCXPRT *"
40db7534cfSBruce Evans.Fn svc_tp_create "void (*dispatch)(struct svc_req *, SVCXPRT *)" "const rpcprog_t prognum" "const rpcvers_t versnum" "const struct netconfig *netconf"
418360efbdSAlfred Perlstein.Ft "SVCXPRT *"
428360efbdSAlfred Perlstein.Fn svc_vc_create "const int fildes" "const u_int sendsz" "const u_int recvsz"
438360efbdSAlfred Perlstein.Sh DESCRIPTION
448360efbdSAlfred PerlsteinThese routines are part of the RPC
458360efbdSAlfred Perlsteinlibrary which allows C language programs to make procedure
468360efbdSAlfred Perlsteincalls on servers across the network.
478360efbdSAlfred PerlsteinThese routines deal with the creation of service handles.
488360efbdSAlfred PerlsteinOnce the handle is created, the server can be invoked by calling
498360efbdSAlfred Perlstein.Fn svc_run .
508360efbdSAlfred Perlstein.Sh Routines
518360efbdSAlfred PerlsteinSee
528360efbdSAlfred Perlstein.Xr rpc 3
538360efbdSAlfred Perlsteinfor the definition of the
548360efbdSAlfred Perlstein.Vt SVCXPRT
558360efbdSAlfred Perlsteindata structure.
568360efbdSAlfred Perlstein.Bl -tag -width XXXXX
578360efbdSAlfred Perlstein.It Fn svc_control
588360efbdSAlfred PerlsteinA function to change or retrieve various information
598360efbdSAlfred Perlsteinabout a service object.
608360efbdSAlfred Perlstein.Fa req
618360efbdSAlfred Perlsteinindicates the type of operation and
628360efbdSAlfred Perlstein.Fa info
638360efbdSAlfred Perlsteinis a pointer to the information.
648360efbdSAlfred PerlsteinThe supported values of
658360efbdSAlfred Perlstein.Fa req ,
668360efbdSAlfred Perlsteintheir argument types, and what they do are:
678360efbdSAlfred Perlstein.Bl -tag -width SVCGET_XID
688360efbdSAlfred Perlstein.It Dv SVCGET_VERSQUIET
698360efbdSAlfred PerlsteinIf a request is received for a program number
708360efbdSAlfred Perlsteinserved by this server but the version number
718360efbdSAlfred Perlsteinis outside the range registered with the server,
728360efbdSAlfred Perlsteinan
738360efbdSAlfred Perlstein.Dv RPC_PROGVERSMISMATCH
748360efbdSAlfred Perlsteinerror will normally
758360efbdSAlfred Perlsteinbe returned.
768360efbdSAlfred Perlstein.Fa info
778360efbdSAlfred Perlsteinshould be a pointer to an
788360efbdSAlfred Perlsteininteger.
798360efbdSAlfred PerlsteinUpon successful completion of the
808360efbdSAlfred Perlstein.Dv SVCGET_VERSQUIET
818360efbdSAlfred Perlsteinrequest,
828360efbdSAlfred Perlstein.Fa *info
838360efbdSAlfred Perlsteincontains an
848360efbdSAlfred Perlsteininteger which describes the server's current
858360efbdSAlfred Perlsteinbehavior: 0 indicates normal server behavior
868360efbdSAlfred Perlstein(that is, an
878360efbdSAlfred Perlstein.Dv RPC_PROGVERSMISMATCH
888360efbdSAlfred Perlsteinerror
898360efbdSAlfred Perlsteinwill be returned); 1 indicates that the out of
908360efbdSAlfred Perlsteinrange request will be silently ignored.
918360efbdSAlfred Perlstein.It Dv SVCSET_VERSQUIET
928360efbdSAlfred PerlsteinIf a request is received for a program number
938360efbdSAlfred Perlsteinserved by this server but the version number
948360efbdSAlfred Perlsteinis outside the range registered with the server,
958360efbdSAlfred Perlsteinan
968360efbdSAlfred Perlstein.Dv RPC_PROGVERSMISMATCH
978360efbdSAlfred Perlsteinerror will normally
988360efbdSAlfred Perlsteinbe returned.
998360efbdSAlfred PerlsteinIt is sometimes desirable to
1008360efbdSAlfred Perlsteinchange this behavior.
1018360efbdSAlfred Perlstein.Fa info
1028360efbdSAlfred Perlsteinshould be a
1038360efbdSAlfred Perlsteinpointer to an integer which is either 0
1048360efbdSAlfred Perlstein(indicating normal server behavior - an
1058360efbdSAlfred Perlstein.Dv RPC_PROGVERSMISMATCH
1068360efbdSAlfred Perlsteinerror will be returned),
1078360efbdSAlfred Perlsteinor 1 (indicating that the out of range request
1088360efbdSAlfred Perlsteinshould be silently ignored).
1098360efbdSAlfred Perlstein.El
1108360efbdSAlfred Perlstein.It Fn svc_create
1111fae73b1SRuslan ErmilovThe
1128360efbdSAlfred Perlstein.Fn svc_create
1131fae73b1SRuslan Ermilovfunction
1148360efbdSAlfred Perlsteincreates server handles for all the transports
1158360efbdSAlfred Perlsteinbelonging to the class
1168360efbdSAlfred Perlstein.Fa nettype .
1178360efbdSAlfred Perlstein.Fa nettype
1188360efbdSAlfred Perlsteindefines a class of transports which can be used
1198360efbdSAlfred Perlsteinfor a particular application.
1208360efbdSAlfred PerlsteinThe transports are tried in left to right order in
1218360efbdSAlfred Perlstein.Ev NETPATH
1228360efbdSAlfred Perlsteinvariable or in top to bottom order in the netconfig database.
1238360efbdSAlfred PerlsteinIf
1248360efbdSAlfred Perlstein.Fa nettype
1258360efbdSAlfred Perlsteinis
1268360efbdSAlfred Perlstein.Dv NULL ,
1278360efbdSAlfred Perlsteinit defaults to
1288360efbdSAlfred Perlstein.Qq netpath .
1298360efbdSAlfred Perlstein.Pp
1301fae73b1SRuslan ErmilovThe
1318360efbdSAlfred Perlstein.Fn svc_create
1321fae73b1SRuslan Ermilovfunction
1338360efbdSAlfred Perlsteinregisters itself with the rpcbind
1348360efbdSAlfred Perlsteinservice (see
1358360efbdSAlfred Perlstein.Xr rpcbind 8 ) .
1368360efbdSAlfred Perlstein.Fa dispatch
1378360efbdSAlfred Perlsteinis called when there is a remote procedure call for the given
1388360efbdSAlfred Perlstein.Fa prognum
1398360efbdSAlfred Perlsteinand
1408360efbdSAlfred Perlstein.Fa versnum ;
1418360efbdSAlfred Perlsteinthis requires calling
1428360efbdSAlfred Perlstein.Fn svc_run
1438360efbdSAlfred Perlstein(see
1448360efbdSAlfred Perlstein.Fn svc_run
1458360efbdSAlfred Perlsteinin
1468360efbdSAlfred Perlstein.Xr rpc_svc_reg 3 ) .
1478360efbdSAlfred PerlsteinIf
1488360efbdSAlfred Perlstein.Fn svc_create
1498360efbdSAlfred Perlsteinsucceeds, it returns the number of server
1508360efbdSAlfred Perlsteinhandles it created,
1518360efbdSAlfred Perlsteinotherwise it returns 0 and an error message is logged.
1528360efbdSAlfred Perlstein.It Fn svc_destroy
1538360efbdSAlfred PerlsteinA function macro that destroys the RPC
1548360efbdSAlfred Perlsteinservice handle
1558360efbdSAlfred Perlstein.Fa xprt .
1568360efbdSAlfred PerlsteinDestruction usually involves deallocation
1578360efbdSAlfred Perlsteinof private data structures,
1588360efbdSAlfred Perlsteinincluding
1598360efbdSAlfred Perlstein.Fa xprt
1608360efbdSAlfred Perlsteinitself.
1618360efbdSAlfred PerlsteinUse of
1628360efbdSAlfred Perlstein.Fa xprt
1638360efbdSAlfred Perlsteinis undefined after calling this routine.
1648360efbdSAlfred Perlstein.It Fn svc_dg_create
1658360efbdSAlfred PerlsteinThis routine creates a connectionless RPC
1668360efbdSAlfred Perlsteinservice handle, and returns a pointer to it.
1678360efbdSAlfred PerlsteinThis routine returns
1688360efbdSAlfred Perlstein.Dv NULL
1698360efbdSAlfred Perlsteinif it fails, and an error message is logged.
1708360efbdSAlfred Perlstein.Fa sendsz
1718360efbdSAlfred Perlsteinand
1728360efbdSAlfred Perlstein.Fa recvsz
1738360efbdSAlfred Perlsteinare parameters used to specify the size of the buffers.
1748360efbdSAlfred PerlsteinIf they are 0, suitable defaults are chosen.
1758360efbdSAlfred PerlsteinThe file descriptor
1768360efbdSAlfred Perlstein.Fa fildes
1778360efbdSAlfred Perlsteinshould be open and bound.
1788360efbdSAlfred PerlsteinThe server is not registered with
1798360efbdSAlfred Perlstein.Xr rpcbind 8 .
1808360efbdSAlfred Perlstein.Pp
1818360efbdSAlfred PerlsteinWarning:
1828360efbdSAlfred Perlsteinsince connectionless-based RPC
1838360efbdSAlfred Perlsteinmessages can only hold limited amount of encoded data,
1848360efbdSAlfred Perlsteinthis transport cannot be used for procedures
1858360efbdSAlfred Perlsteinthat take large arguments or return huge results.
1868360efbdSAlfred Perlstein.It Fn svc_fd_create
1878360efbdSAlfred PerlsteinThis routine creates a service on top of an open and bound file descriptor,
1888360efbdSAlfred Perlsteinand returns the handle to it.
1898360efbdSAlfred PerlsteinTypically, this descriptor is a connected file descriptor for a
1908360efbdSAlfred Perlsteinconnection-oriented transport.
1918360efbdSAlfred Perlstein.Fa sendsz
1928360efbdSAlfred Perlsteinand
1938360efbdSAlfred Perlstein.Fa recvsz
1948360efbdSAlfred Perlsteinindicate sizes for the send and receive buffers.
1958360efbdSAlfred PerlsteinIf they are 0, reasonable defaults are chosen.
1968360efbdSAlfred PerlsteinThis routine returns
1978360efbdSAlfred Perlstein.Dv NULL
1988360efbdSAlfred Perlsteinif it fails, and an error message is logged.
1998360efbdSAlfred Perlstein.It Fn svc_raw_create
2008360efbdSAlfred PerlsteinThis routine creates an RPC
2018360efbdSAlfred Perlsteinservice handle and returns a pointer to it.
2028360efbdSAlfred PerlsteinThe transport is really a buffer within the process's
2038360efbdSAlfred Perlsteinaddress space, so the corresponding RPC
2048360efbdSAlfred Perlsteinclient should live in the same address space;
2058360efbdSAlfred Perlstein(see
2068360efbdSAlfred Perlstein.Fn clnt_raw_create
2078360efbdSAlfred Perlsteinin
2088360efbdSAlfred Perlstein.Xr rpc_clnt_create 3 ) .
2098360efbdSAlfred PerlsteinThis routine allows simulation of RPC and acquisition of
2108360efbdSAlfred PerlsteinRPC overheads (such as round trip times),
2118360efbdSAlfred Perlsteinwithout any kernel and networking interference.
2128360efbdSAlfred PerlsteinThis routine returns
2138360efbdSAlfred Perlstein.Dv NULL
2148360efbdSAlfred Perlsteinif it fails, and an error message is logged.
2158360efbdSAlfred Perlstein.Pp
2168360efbdSAlfred PerlsteinNote:
2178360efbdSAlfred Perlstein.Fn svc_run
2188360efbdSAlfred Perlsteinshould not be called when the raw interface is being used.
2198360efbdSAlfred Perlstein.It Fn svc_tli_create
2208360efbdSAlfred PerlsteinThis routine creates an RPC
2218360efbdSAlfred Perlsteinserver handle, and returns a pointer to it.
2228360efbdSAlfred Perlstein.Fa fildes
2238360efbdSAlfred Perlsteinis the file descriptor on which the service is listening.
2248360efbdSAlfred PerlsteinIf
2258360efbdSAlfred Perlstein.Fa fildes
2268360efbdSAlfred Perlsteinis
2278360efbdSAlfred Perlstein.Dv RPC_ANYFD ,
2288360efbdSAlfred Perlsteinit opens a file descriptor on the transport specified by
2298360efbdSAlfred Perlstein.Fa netconf .
2308360efbdSAlfred PerlsteinIf the file descriptor is unbound and
2318360efbdSAlfred Perlstein.Fa bindaddr
2328360efbdSAlfred Perlsteinis not
2338360efbdSAlfred Perlstein.Dv NULL ,
2348360efbdSAlfred Perlstein.Fa fildes
2358360efbdSAlfred Perlsteinis bound to the address specified by
2368360efbdSAlfred Perlstein.Fa bindaddr ,
2378360efbdSAlfred Perlsteinotherwise
2388360efbdSAlfred Perlstein.Fa fildes
2398360efbdSAlfred Perlsteinis bound to a default address chosen by the transport.
2408360efbdSAlfred Perlstein.Pp
2418360efbdSAlfred PerlsteinNote: the
2428360efbdSAlfred Perlstein.Vt t_bind
2438360efbdSAlfred Perlsteinstructure comes from the TLI/XTI SysV interface, which
2448360efbdSAlfred Perlstein.Nx
2458360efbdSAlfred Perlsteindoes not use.
2468360efbdSAlfred PerlsteinThe structure is defined in
2478360efbdSAlfred Perlstein.Aq Pa rpc/types.h
2488360efbdSAlfred Perlsteinfor compatibility as:
2498360efbdSAlfred Perlstein.Bd -literal
2508360efbdSAlfred Perlsteinstruct t_bind {
2518360efbdSAlfred Perlstein    struct netbuf addr;	/* network address, see rpc(3) */
2528360efbdSAlfred Perlstein    unsigned int  qlen;	/* queue length (for listen(2)) */
2538360efbdSAlfred Perlstein};
2548360efbdSAlfred Perlstein.Ed
2558360efbdSAlfred Perlstein.Pp
2568360efbdSAlfred PerlsteinIn the case where the default address is chosen,
2578360efbdSAlfred Perlsteinthe number of outstanding connect requests is set to 8
2588360efbdSAlfred Perlsteinfor connection-oriented transports.
2598360efbdSAlfred PerlsteinThe user may specify the size of the send and receive buffers
2608360efbdSAlfred Perlsteinwith the parameters
2618360efbdSAlfred Perlstein.Fa sendsz
2628360efbdSAlfred Perlsteinand
2638360efbdSAlfred Perlstein.Fa recvsz ;
2648360efbdSAlfred Perlsteinvalues of 0 choose suitable defaults.
2658360efbdSAlfred PerlsteinThis routine returns
2668360efbdSAlfred Perlstein.Dv NULL
2678360efbdSAlfred Perlsteinif it fails,
2688360efbdSAlfred Perlsteinand an error message is logged.
2698360efbdSAlfred PerlsteinThe server is not registered with the
2708360efbdSAlfred Perlstein.Xr rpcbind 8
2718360efbdSAlfred Perlsteinservice.
2728360efbdSAlfred Perlstein.It Fn svc_tp_create
2731fae73b1SRuslan ErmilovThe
2748360efbdSAlfred Perlstein.Fn svc_tp_create
2751fae73b1SRuslan Ermilovfunction
2768360efbdSAlfred Perlsteincreates a server handle for the network
2778360efbdSAlfred Perlsteinspecified by
2788360efbdSAlfred Perlstein.Fa netconf ,
2798360efbdSAlfred Perlsteinand registers itself with the rpcbind service.
2808360efbdSAlfred Perlstein.Fa dispatch
2818360efbdSAlfred Perlsteinis called when there is a remote procedure call
2828360efbdSAlfred Perlsteinfor the given
2838360efbdSAlfred Perlstein.Fa prognum
2848360efbdSAlfred Perlsteinand
2858360efbdSAlfred Perlstein.Fa versnum ;
2868360efbdSAlfred Perlsteinthis requires calling
2878360efbdSAlfred Perlstein.Fn svc_run .
2881fae73b1SRuslan ErmilovThe
2898360efbdSAlfred Perlstein.Fn svc_tp_create
2901fae73b1SRuslan Ermilovfunction
2918360efbdSAlfred Perlsteinreturns the service handle if it succeeds,
2928360efbdSAlfred Perlsteinotherwise a
2938360efbdSAlfred Perlstein.Dv NULL
2948360efbdSAlfred Perlsteinis returned and an error message is logged.
2958360efbdSAlfred Perlstein.It Fn svc_vc_create
2968360efbdSAlfred PerlsteinThis routine creates a connection-oriented RPC
2978360efbdSAlfred Perlsteinservice and returns a pointer to it.
2988360efbdSAlfred PerlsteinThis routine returns
2998360efbdSAlfred Perlstein.Dv NULL
3008360efbdSAlfred Perlsteinif it fails, and an error message is logged.
3018360efbdSAlfred PerlsteinThe users may specify the size of the send and receive buffers
3028360efbdSAlfred Perlsteinwith the parameters
3038360efbdSAlfred Perlstein.Fa sendsz
3048360efbdSAlfred Perlsteinand
3058360efbdSAlfred Perlstein.Fa recvsz ;
3068360efbdSAlfred Perlsteinvalues of 0 choose suitable defaults.
3078360efbdSAlfred PerlsteinThe file descriptor
3088360efbdSAlfred Perlstein.Fa fildes
3098360efbdSAlfred Perlsteinshould be open and bound.
3108360efbdSAlfred PerlsteinThe server is not registered with the
3118360efbdSAlfred Perlstein.Xr rpcbind 8
3128360efbdSAlfred Perlsteinservice.
3138360efbdSAlfred Perlstein.El
3148360efbdSAlfred Perlstein.Sh SEE ALSO
3158360efbdSAlfred Perlstein.Xr rpc 3 ,
3168360efbdSAlfred Perlstein.Xr rpc_svc_calls 3 ,
3178360efbdSAlfred Perlstein.Xr rpc_svc_err 3 ,
3188360efbdSAlfred Perlstein.Xr rpc_svc_reg 3 ,
3198360efbdSAlfred Perlstein.Xr rpcbind 8
320