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. 602efeeba5SRuslan ErmilovThe 618360efbdSAlfred Perlstein.Fa req 622efeeba5SRuslan Ermilovargument 638360efbdSAlfred Perlsteinindicates the type of operation and 648360efbdSAlfred Perlstein.Fa info 658360efbdSAlfred Perlsteinis a pointer to the information. 668360efbdSAlfred PerlsteinThe supported values of 678360efbdSAlfred Perlstein.Fa req , 688360efbdSAlfred Perlsteintheir argument types, and what they do are: 698360efbdSAlfred Perlstein.Bl -tag -width SVCGET_XID 708360efbdSAlfred Perlstein.It Dv SVCGET_VERSQUIET 718360efbdSAlfred PerlsteinIf a request is received for a program number 728360efbdSAlfred Perlsteinserved by this server but the version number 738360efbdSAlfred Perlsteinis outside the range registered with the server, 748360efbdSAlfred Perlsteinan 758360efbdSAlfred Perlstein.Dv RPC_PROGVERSMISMATCH 768360efbdSAlfred Perlsteinerror will normally 778360efbdSAlfred Perlsteinbe returned. 782efeeba5SRuslan ErmilovThe 798360efbdSAlfred Perlstein.Fa info 802efeeba5SRuslan Ermilovargument 818360efbdSAlfred Perlsteinshould be a pointer to an 828360efbdSAlfred Perlsteininteger. 838360efbdSAlfred PerlsteinUpon successful completion of the 848360efbdSAlfred Perlstein.Dv SVCGET_VERSQUIET 858360efbdSAlfred Perlsteinrequest, 868360efbdSAlfred Perlstein.Fa *info 878360efbdSAlfred Perlsteincontains an 888360efbdSAlfred Perlsteininteger which describes the server's current 898360efbdSAlfred Perlsteinbehavior: 0 indicates normal server behavior 908360efbdSAlfred Perlstein(that is, an 918360efbdSAlfred Perlstein.Dv RPC_PROGVERSMISMATCH 928360efbdSAlfred Perlsteinerror 938360efbdSAlfred Perlsteinwill be returned); 1 indicates that the out of 948360efbdSAlfred Perlsteinrange request will be silently ignored. 958360efbdSAlfred Perlstein.It Dv SVCSET_VERSQUIET 968360efbdSAlfred PerlsteinIf a request is received for a program number 978360efbdSAlfred Perlsteinserved by this server but the version number 988360efbdSAlfred Perlsteinis outside the range registered with the server, 998360efbdSAlfred Perlsteinan 1008360efbdSAlfred Perlstein.Dv RPC_PROGVERSMISMATCH 1018360efbdSAlfred Perlsteinerror will normally 1028360efbdSAlfred Perlsteinbe returned. 1038360efbdSAlfred PerlsteinIt is sometimes desirable to 1048360efbdSAlfred Perlsteinchange this behavior. 1052efeeba5SRuslan ErmilovThe 1068360efbdSAlfred Perlstein.Fa info 1072efeeba5SRuslan Ermilovargument 1088360efbdSAlfred Perlsteinshould be a 1098360efbdSAlfred Perlsteinpointer to an integer which is either 0 1108360efbdSAlfred Perlstein(indicating normal server behavior - an 1118360efbdSAlfred Perlstein.Dv RPC_PROGVERSMISMATCH 1128360efbdSAlfred Perlsteinerror will be returned), 1138360efbdSAlfred Perlsteinor 1 (indicating that the out of range request 1148360efbdSAlfred Perlsteinshould be silently ignored). 1158360efbdSAlfred Perlstein.El 1168360efbdSAlfred Perlstein.It Fn svc_create 1171fae73b1SRuslan ErmilovThe 1188360efbdSAlfred Perlstein.Fn svc_create 1191fae73b1SRuslan Ermilovfunction 1208360efbdSAlfred Perlsteincreates server handles for all the transports 1218360efbdSAlfred Perlsteinbelonging to the class 1228360efbdSAlfred Perlstein.Fa nettype . 1232efeeba5SRuslan ErmilovThe 1248360efbdSAlfred Perlstein.Fa nettype 1252efeeba5SRuslan Ermilovargument 1268360efbdSAlfred Perlsteindefines a class of transports which can be used 1278360efbdSAlfred Perlsteinfor a particular application. 1288360efbdSAlfred PerlsteinThe transports are tried in left to right order in 1298360efbdSAlfred Perlstein.Ev NETPATH 1308360efbdSAlfred Perlsteinvariable or in top to bottom order in the netconfig database. 1318360efbdSAlfred PerlsteinIf 1328360efbdSAlfred Perlstein.Fa nettype 1338360efbdSAlfred Perlsteinis 1348360efbdSAlfred Perlstein.Dv NULL , 1358360efbdSAlfred Perlsteinit defaults to 1368360efbdSAlfred Perlstein.Qq netpath . 1378360efbdSAlfred Perlstein.Pp 1381fae73b1SRuslan ErmilovThe 1398360efbdSAlfred Perlstein.Fn svc_create 1401fae73b1SRuslan Ermilovfunction 1418360efbdSAlfred Perlsteinregisters itself with the rpcbind 1428360efbdSAlfred Perlsteinservice (see 1438360efbdSAlfred Perlstein.Xr rpcbind 8 ) . 1442efeeba5SRuslan ErmilovThe 1458360efbdSAlfred Perlstein.Fa dispatch 1462efeeba5SRuslan Ermilovfunction 1478360efbdSAlfred Perlsteinis called when there is a remote procedure call for the given 1488360efbdSAlfred Perlstein.Fa prognum 1498360efbdSAlfred Perlsteinand 1508360efbdSAlfred Perlstein.Fa versnum ; 1518360efbdSAlfred Perlsteinthis requires calling 1528360efbdSAlfred Perlstein.Fn svc_run 1538360efbdSAlfred Perlstein(see 1548360efbdSAlfred Perlstein.Fn svc_run 1558360efbdSAlfred Perlsteinin 1568360efbdSAlfred Perlstein.Xr rpc_svc_reg 3 ) . 1578360efbdSAlfred PerlsteinIf 1588360efbdSAlfred Perlstein.Fn svc_create 1598360efbdSAlfred Perlsteinsucceeds, it returns the number of server 1608360efbdSAlfred Perlsteinhandles it created, 1618360efbdSAlfred Perlsteinotherwise it returns 0 and an error message is logged. 1628360efbdSAlfred Perlstein.It Fn svc_destroy 1638360efbdSAlfred PerlsteinA function macro that destroys the RPC 1648360efbdSAlfred Perlsteinservice handle 1658360efbdSAlfred Perlstein.Fa xprt . 1668360efbdSAlfred PerlsteinDestruction usually involves deallocation 1678360efbdSAlfred Perlsteinof private data structures, 1688360efbdSAlfred Perlsteinincluding 1698360efbdSAlfred Perlstein.Fa xprt 1708360efbdSAlfred Perlsteinitself. 1718360efbdSAlfred PerlsteinUse of 1728360efbdSAlfred Perlstein.Fa xprt 1738360efbdSAlfred Perlsteinis undefined after calling this routine. 1748360efbdSAlfred Perlstein.It Fn svc_dg_create 1758360efbdSAlfred PerlsteinThis routine creates a connectionless RPC 1768360efbdSAlfred Perlsteinservice handle, and returns a pointer to it. 1778360efbdSAlfred PerlsteinThis routine returns 1788360efbdSAlfred Perlstein.Dv NULL 1798360efbdSAlfred Perlsteinif it fails, and an error message is logged. 1802efeeba5SRuslan ErmilovThe 1818360efbdSAlfred Perlstein.Fa sendsz 1828360efbdSAlfred Perlsteinand 1838360efbdSAlfred Perlstein.Fa recvsz 1842efeeba5SRuslan Ermilovarguments 1852efeeba5SRuslan Ermilovare arguments used to specify the size of the buffers. 1868360efbdSAlfred PerlsteinIf they are 0, suitable defaults are chosen. 1878360efbdSAlfred PerlsteinThe file descriptor 1888360efbdSAlfred Perlstein.Fa fildes 1898360efbdSAlfred Perlsteinshould be open and bound. 1908360efbdSAlfred PerlsteinThe server is not registered with 1918360efbdSAlfred Perlstein.Xr rpcbind 8 . 1928360efbdSAlfred Perlstein.Pp 1938360efbdSAlfred PerlsteinWarning: 1948360efbdSAlfred Perlsteinsince connectionless-based RPC 1958360efbdSAlfred Perlsteinmessages can only hold limited amount of encoded data, 1968360efbdSAlfred Perlsteinthis transport cannot be used for procedures 1978360efbdSAlfred Perlsteinthat take large arguments or return huge results. 1988360efbdSAlfred Perlstein.It Fn svc_fd_create 1998360efbdSAlfred PerlsteinThis routine creates a service on top of an open and bound file descriptor, 2008360efbdSAlfred Perlsteinand returns the handle to it. 2018360efbdSAlfred PerlsteinTypically, this descriptor is a connected file descriptor for a 2028360efbdSAlfred Perlsteinconnection-oriented transport. 2032efeeba5SRuslan ErmilovThe 2048360efbdSAlfred Perlstein.Fa sendsz 2058360efbdSAlfred Perlsteinand 2068360efbdSAlfred Perlstein.Fa recvsz 2072efeeba5SRuslan Ermilovarguments 2088360efbdSAlfred Perlsteinindicate sizes for the send and receive buffers. 2098360efbdSAlfred PerlsteinIf they are 0, reasonable defaults are chosen. 2108360efbdSAlfred PerlsteinThis routine returns 2118360efbdSAlfred Perlstein.Dv NULL 2128360efbdSAlfred Perlsteinif it fails, and an error message is logged. 2138360efbdSAlfred Perlstein.It Fn svc_raw_create 2148360efbdSAlfred PerlsteinThis routine creates an RPC 2158360efbdSAlfred Perlsteinservice handle and returns a pointer to it. 2168360efbdSAlfred PerlsteinThe transport is really a buffer within the process's 2178360efbdSAlfred Perlsteinaddress space, so the corresponding RPC 2188360efbdSAlfred Perlsteinclient should live in the same address space; 2198360efbdSAlfred Perlstein(see 2208360efbdSAlfred Perlstein.Fn clnt_raw_create 2218360efbdSAlfred Perlsteinin 2228360efbdSAlfred Perlstein.Xr rpc_clnt_create 3 ) . 2238360efbdSAlfred PerlsteinThis routine allows simulation of RPC and acquisition of 2248360efbdSAlfred PerlsteinRPC overheads (such as round trip times), 2258360efbdSAlfred Perlsteinwithout any kernel and networking interference. 2268360efbdSAlfred PerlsteinThis routine returns 2278360efbdSAlfred Perlstein.Dv NULL 2288360efbdSAlfred Perlsteinif it fails, and an error message is logged. 2298360efbdSAlfred Perlstein.Pp 2308360efbdSAlfred PerlsteinNote: 2318360efbdSAlfred Perlstein.Fn svc_run 2328360efbdSAlfred Perlsteinshould not be called when the raw interface is being used. 2338360efbdSAlfred Perlstein.It Fn svc_tli_create 2348360efbdSAlfred PerlsteinThis routine creates an RPC 2358360efbdSAlfred Perlsteinserver handle, and returns a pointer to it. 2362efeeba5SRuslan ErmilovThe 2378360efbdSAlfred Perlstein.Fa fildes 2382efeeba5SRuslan Ermilovargument 2398360efbdSAlfred Perlsteinis the file descriptor on which the service is listening. 2408360efbdSAlfred PerlsteinIf 2418360efbdSAlfred Perlstein.Fa fildes 2428360efbdSAlfred Perlsteinis 2438360efbdSAlfred Perlstein.Dv RPC_ANYFD , 2448360efbdSAlfred Perlsteinit opens a file descriptor on the transport specified by 2458360efbdSAlfred Perlstein.Fa netconf . 2468360efbdSAlfred PerlsteinIf the file descriptor is unbound and 2478360efbdSAlfred Perlstein.Fa bindaddr 2488360efbdSAlfred Perlsteinis not 2498360efbdSAlfred Perlstein.Dv NULL , 2508360efbdSAlfred Perlstein.Fa fildes 2518360efbdSAlfred Perlsteinis bound to the address specified by 2528360efbdSAlfred Perlstein.Fa bindaddr , 2538360efbdSAlfred Perlsteinotherwise 2548360efbdSAlfred Perlstein.Fa fildes 2558360efbdSAlfred Perlsteinis bound to a default address chosen by the transport. 2568360efbdSAlfred Perlstein.Pp 2578360efbdSAlfred PerlsteinNote: the 2588360efbdSAlfred Perlstein.Vt t_bind 2598360efbdSAlfred Perlsteinstructure comes from the TLI/XTI SysV interface, which 2608360efbdSAlfred Perlstein.Nx 2618360efbdSAlfred Perlsteindoes not use. 2628360efbdSAlfred PerlsteinThe structure is defined in 2638360efbdSAlfred Perlstein.Aq Pa rpc/types.h 2648360efbdSAlfred Perlsteinfor compatibility as: 2658360efbdSAlfred Perlstein.Bd -literal 2668360efbdSAlfred Perlsteinstruct t_bind { 2678360efbdSAlfred Perlstein struct netbuf addr; /* network address, see rpc(3) */ 2688360efbdSAlfred Perlstein unsigned int qlen; /* queue length (for listen(2)) */ 2698360efbdSAlfred Perlstein}; 2708360efbdSAlfred Perlstein.Ed 2718360efbdSAlfred Perlstein.Pp 2728360efbdSAlfred PerlsteinIn the case where the default address is chosen, 2738360efbdSAlfred Perlsteinthe number of outstanding connect requests is set to 8 2748360efbdSAlfred Perlsteinfor connection-oriented transports. 2758360efbdSAlfred PerlsteinThe user may specify the size of the send and receive buffers 2762efeeba5SRuslan Ermilovwith the arguments 2778360efbdSAlfred Perlstein.Fa sendsz 2788360efbdSAlfred Perlsteinand 2798360efbdSAlfred Perlstein.Fa recvsz ; 2808360efbdSAlfred Perlsteinvalues of 0 choose suitable defaults. 2818360efbdSAlfred PerlsteinThis routine returns 2828360efbdSAlfred Perlstein.Dv NULL 2838360efbdSAlfred Perlsteinif it fails, 2848360efbdSAlfred Perlsteinand an error message is logged. 2858360efbdSAlfred PerlsteinThe server is not registered with the 2868360efbdSAlfred Perlstein.Xr rpcbind 8 2878360efbdSAlfred Perlsteinservice. 2888360efbdSAlfred Perlstein.It Fn svc_tp_create 2891fae73b1SRuslan ErmilovThe 2908360efbdSAlfred Perlstein.Fn svc_tp_create 2911fae73b1SRuslan Ermilovfunction 2928360efbdSAlfred Perlsteincreates a server handle for the network 2938360efbdSAlfred Perlsteinspecified by 2948360efbdSAlfred Perlstein.Fa netconf , 2958360efbdSAlfred Perlsteinand registers itself with the rpcbind service. 2962efeeba5SRuslan ErmilovThe 2978360efbdSAlfred Perlstein.Fa dispatch 2982efeeba5SRuslan Ermilovfunction 2998360efbdSAlfred Perlsteinis called when there is a remote procedure call 3008360efbdSAlfred Perlsteinfor the given 3018360efbdSAlfred Perlstein.Fa prognum 3028360efbdSAlfred Perlsteinand 3038360efbdSAlfred Perlstein.Fa versnum ; 3048360efbdSAlfred Perlsteinthis requires calling 3058360efbdSAlfred Perlstein.Fn svc_run . 3061fae73b1SRuslan ErmilovThe 3078360efbdSAlfred Perlstein.Fn svc_tp_create 3081fae73b1SRuslan Ermilovfunction 3098360efbdSAlfred Perlsteinreturns the service handle if it succeeds, 3108360efbdSAlfred Perlsteinotherwise a 3118360efbdSAlfred Perlstein.Dv NULL 3128360efbdSAlfred Perlsteinis returned and an error message is logged. 3138360efbdSAlfred Perlstein.It Fn svc_vc_create 3148360efbdSAlfred PerlsteinThis routine creates a connection-oriented RPC 3158360efbdSAlfred Perlsteinservice and returns a pointer to it. 3168360efbdSAlfred PerlsteinThis routine returns 3178360efbdSAlfred Perlstein.Dv NULL 3188360efbdSAlfred Perlsteinif it fails, and an error message is logged. 3198360efbdSAlfred PerlsteinThe users may specify the size of the send and receive buffers 3202efeeba5SRuslan Ermilovwith the arguments 3218360efbdSAlfred Perlstein.Fa sendsz 3228360efbdSAlfred Perlsteinand 3238360efbdSAlfred Perlstein.Fa recvsz ; 3248360efbdSAlfred Perlsteinvalues of 0 choose suitable defaults. 3258360efbdSAlfred PerlsteinThe file descriptor 3268360efbdSAlfred Perlstein.Fa fildes 3278360efbdSAlfred Perlsteinshould be open and bound. 3288360efbdSAlfred PerlsteinThe server is not registered with the 3298360efbdSAlfred Perlstein.Xr rpcbind 8 3308360efbdSAlfred Perlsteinservice. 3318360efbdSAlfred Perlstein.El 3328360efbdSAlfred Perlstein.Sh SEE ALSO 3338360efbdSAlfred Perlstein.Xr rpc 3 , 3348360efbdSAlfred Perlstein.Xr rpc_svc_calls 3 , 3358360efbdSAlfred Perlstein.Xr rpc_svc_err 3 , 3368360efbdSAlfred Perlstein.Xr rpc_svc_reg 3 , 3378360efbdSAlfred Perlstein.Xr rpcbind 8 338