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