rpcb_prot.x revision 74801
174462Salfred%/* 274462Salfred% * $FreeBSD: head/include/rpc/rpcb_prot.x 74801 2001-03-26 00:35:23Z alfred $ 374462Salfred% * 474462Salfred% * Sun RPC is a product of Sun Microsystems, Inc. and is provided for 574462Salfred% * unrestricted use provided that this legend is included on all tape 674462Salfred% * media and as a part of the software program in whole or part. Users 774462Salfred% * may copy or modify Sun RPC without charge, but are not authorized 874462Salfred% * to license or distribute it to anyone else except as part of a product or 974462Salfred% * program developed by the user. 1074462Salfred% * 1174462Salfred% * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE 1274462Salfred% * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR 1374462Salfred% * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. 1474462Salfred% * 1574462Salfred% * Sun RPC is provided with no support and without any obligation on the 1674462Salfred% * part of Sun Microsystems, Inc. to assist in its use, correction, 1774462Salfred% * modification or enhancement. 1874462Salfred% * 1974462Salfred% * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE 2074462Salfred% * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC 2174462Salfred% * OR ANY PART THEREOF. 2274462Salfred% * 2374462Salfred% * In no event will Sun Microsystems, Inc. be liable for any lost revenue 2474462Salfred% * or profits or other special, indirect and consequential damages, even if 2574462Salfred% * Sun has been advised of the possibility of such damages. 2674462Salfred% * 2774462Salfred% * Sun Microsystems, Inc. 2874462Salfred% * 2550 Garcia Avenue 2974462Salfred% * Mountain View, California 94043 3074462Salfred% */ 3174462Salfred%/* 3274462Salfred% * Copyright (c) 1988 by Sun Microsystems, Inc. 3374462Salfred% */ 3474462Salfred 3574462Salfred%/* from rpcb_prot.x */ 3674462Salfred 3774462Salfred#ifdef RPC_HDR 3874462Salfred% 3974462Salfred%/* #pragma ident "@(#)rpcb_prot.x 1.5 94/04/29 SMI" */ 4074462Salfred% 4174462Salfred%#ifndef _KERNEL 4274462Salfred% 4374462Salfred#endif 4474462Salfred 4574462Salfred/* 4674462Salfred * rpcb_prot.x 4774462Salfred * rpcbind protocol, versions 3 and 4, in RPC Language 4874462Salfred */ 4974462Salfred% 5074462Salfred%/* 5174462Salfred% * The following procedures are supported by the protocol in version 3: 5274462Salfred% * 5374462Salfred% * RPCBPROC_NULL() returns () 5474462Salfred% * takes nothing, returns nothing 5574462Salfred% * 5674462Salfred% * RPCBPROC_SET(rpcb) returns (bool_t) 5774462Salfred% * TRUE is success, FALSE is failure. Registers the tuple 5874462Salfred% * [prog, vers, address, owner, netid]. 5974462Salfred% * Finds out owner and netid information on its own. 6074462Salfred% * 6174462Salfred% * RPCBPROC_UNSET(rpcb) returns (bool_t) 6274462Salfred% * TRUE is success, FALSE is failure. Un-registers tuple 6374462Salfred% * [prog, vers, netid]. addresses is ignored. 6474462Salfred% * If netid is NULL, unregister all. 6574462Salfred% * 6674462Salfred% * RPCBPROC_GETADDR(rpcb) returns (string). 6774462Salfred% * 0 is failure. Otherwise returns the universal address where the 6874462Salfred% * triple [prog, vers, netid] is registered. Ignore address and owner. 6974462Salfred% * 7074462Salfred% * RPCBPROC_DUMP() RETURNS (rpcblist_ptr) 7174462Salfred% * used to dump the entire rpcbind maps 7274462Salfred% * 7374462Salfred% * RPCBPROC_CALLIT(rpcb_rmtcallargs) 7474462Salfred% * RETURNS (rpcb_rmtcallres); 7574462Salfred% * Calls the procedure on the remote machine. If it is not registered, 7674462Salfred% * this procedure is quiet; i.e. it does not return error information!!! 7774462Salfred% * This routine only passes null authentication parameters. 7874462Salfred% * It has no interface to xdr routines for RPCBPROC_CALLIT. 7974462Salfred% * 8074462Salfred% * RPCBPROC_GETTIME() returns (int). 8174462Salfred% * Gets the remote machines time 8274462Salfred% * 8374462Salfred% * RPCBPROC_UADDR2TADDR(strint) RETURNS (struct netbuf) 8474462Salfred% * Returns the netbuf address from universal address. 8574462Salfred% * 8674462Salfred% * RPCBPROC_TADDR2UADDR(struct netbuf) RETURNS (string) 8774462Salfred% * Returns the universal address from netbuf address. 8874462Salfred% * 8974462Salfred% * END OF RPCBIND VERSION 3 PROCEDURES 9074462Salfred% */ 9174462Salfred%/* 9274462Salfred% * Except for RPCBPROC_CALLIT, the procedures above are carried over to 9374462Salfred% * rpcbind version 4. Those below are added or modified for version 4. 9474462Salfred% * NOTE: RPCBPROC_BCAST HAS THE SAME FUNCTIONALITY AND PROCEDURE NUMBER 9574462Salfred% * AS RPCBPROC_CALLIT. 9674462Salfred% * 9774462Salfred% * RPCBPROC_BCAST(rpcb_rmtcallargs) 9874462Salfred% * RETURNS (rpcb_rmtcallres); 9974462Salfred% * Calls the procedure on the remote machine. If it is not registered, 10074462Salfred% * this procedure IS quiet; i.e. it DOES NOT return error information!!! 10174462Salfred% * This routine should be used for broadcasting and nothing else. 10274462Salfred% * 10374462Salfred% * RPCBPROC_GETVERSADDR(rpcb) returns (string). 10474462Salfred% * 0 is failure. Otherwise returns the universal address where the 10574462Salfred% * triple [prog, vers, netid] is registered. Ignore address and owner. 10674462Salfred% * Same as RPCBPROC_GETADDR except that if the given version number 10774462Salfred% * is not available, the address is not returned. 10874462Salfred% * 10974462Salfred% * RPCBPROC_INDIRECT(rpcb_rmtcallargs) 11074462Salfred% * RETURNS (rpcb_rmtcallres); 11174462Salfred% * Calls the procedure on the remote machine. If it is not registered, 11274462Salfred% * this procedure is NOT quiet; i.e. it DOES return error information!!! 11374462Salfred% * as any normal application would expect. 11474462Salfred% * 11574462Salfred% * RPCBPROC_GETADDRLIST(rpcb) returns (rpcb_entry_list_ptr). 11674462Salfred% * Same as RPCBPROC_GETADDR except that it returns a list of all the 11774462Salfred% * addresses registered for the combination (prog, vers) (for all 11874462Salfred% * transports). 11974462Salfred% * 12074462Salfred% * RPCBPROC_GETSTAT(void) returns (rpcb_stat_byvers) 12174462Salfred% * Returns the statistics about the kind of requests received by rpcbind. 12274462Salfred% */ 12374462Salfred% 12474462Salfred%/* 12574462Salfred% * A mapping of (program, version, network ID) to address 12674462Salfred% */ 12774462Salfredstruct rpcb { 12874462Salfred rpcprog_t r_prog; /* program number */ 12974462Salfred rpcvers_t r_vers; /* version number */ 13074462Salfred string r_netid<>; /* network id */ 13174462Salfred string r_addr<>; /* universal address */ 13274462Salfred string r_owner<>; /* owner of this service */ 13374462Salfred}; 13474462Salfred#ifdef RPC_HDR 13574462Salfred% 13674462Salfred%typedef rpcb RPCB; 13774462Salfred% 13874462Salfred#endif 13974462Salfred% 14074462Salfred%/* 14174462Salfred% * A list of mappings 14274462Salfred% * 14374462Salfred% * Below are two definitions for the rpcblist structure. This is done because 14474462Salfred% * xdr_rpcblist() is specified to take a struct rpcblist **, rather than a 14574462Salfred% * struct rpcblist * that rpcgen would produce. One version of the rpcblist 14674462Salfred% * structure (actually called rp__list) is used with rpcgen, and the other is 14774462Salfred% * defined only in the header file for compatibility with the specified 14874462Salfred% * interface. 14974462Salfred% */ 15074462Salfred 15174462Salfredstruct rp__list { 15274462Salfred rpcb rpcb_map; 15374462Salfred struct rp__list *rpcb_next; 15474462Salfred}; 15574462Salfred 15674462Salfredtypedef rp__list *rpcblist_ptr; /* results of RPCBPROC_DUMP */ 15774462Salfred 15874462Salfred#ifdef RPC_HDR 15974462Salfred% 16074462Salfred%typedef struct rp__list rpcblist; 16174462Salfred%typedef struct rp__list RPCBLIST; 16274462Salfred% 16374462Salfred%#ifndef __cplusplus 16474462Salfred%struct rpcblist { 16574462Salfred% RPCB rpcb_map; 16674462Salfred% struct rpcblist *rpcb_next; 16774462Salfred%}; 16874462Salfred%#endif 16974462Salfred% 17074462Salfred%#ifdef __cplusplus 17174462Salfred%extern "C" { 17274462Salfred%#endif 17374462Salfred%extern bool_t xdr_rpcblist(XDR *, rpcblist**); 17474462Salfred%#ifdef __cplusplus 17574462Salfred%} 17674462Salfred%#endif 17774462Salfred% 17874462Salfred#endif 17974462Salfred 18074462Salfred% 18174462Salfred%/* 18274462Salfred% * Arguments of remote calls 18374462Salfred% */ 18474462Salfredstruct rpcb_rmtcallargs { 18574462Salfred rpcprog_t prog; /* program number */ 18674462Salfred rpcvers_t vers; /* version number */ 18774462Salfred rpcproc_t proc; /* procedure number */ 18874462Salfred opaque args<>; /* argument */ 18974462Salfred}; 19074462Salfred#ifdef RPC_HDR 19174462Salfred% 19274462Salfred%/* 19374462Salfred% * Client-side only representation of rpcb_rmtcallargs structure. 19474462Salfred% * 19574462Salfred% * The routine that XDRs the rpcb_rmtcallargs structure must deal with the 19674462Salfred% * opaque arguments in the "args" structure. xdr_rpcb_rmtcallargs() needs to 19774462Salfred% * be passed the XDR routine that knows the args' structure. This routine 19874462Salfred% * doesn't need to go over-the-wire (and it wouldn't make sense anyway) since 19974462Salfred% * the application being called already knows the args structure. So we use a 20074462Salfred% * different "XDR" structure on the client side, r_rpcb_rmtcallargs, which 20174462Salfred% * includes the args' XDR routine. 20274462Salfred% */ 20374462Salfred%struct r_rpcb_rmtcallargs { 20474462Salfred% rpcprog_t prog; 20574462Salfred% rpcvers_t vers; 20674462Salfred% rpcproc_t proc; 20774462Salfred% struct { 20874462Salfred% u_int args_len; 20974462Salfred% char *args_val; 21074462Salfred% } args; 21174462Salfred% xdrproc_t xdr_args; /* encodes args */ 21274462Salfred%}; 21374462Salfred% 21474462Salfred#endif /* def RPC_HDR */ 21574462Salfred% 21674462Salfred%/* 21774462Salfred% * Results of the remote call 21874462Salfred% */ 21974462Salfredstruct rpcb_rmtcallres { 22074462Salfred string addr<>; /* remote universal address */ 22174462Salfred opaque results<>; /* result */ 22274462Salfred}; 22374462Salfred#ifdef RPC_HDR 22474462Salfred% 22574462Salfred%/* 22674462Salfred% * Client-side only representation of rpcb_rmtcallres structure. 22774462Salfred% */ 22874462Salfred%struct r_rpcb_rmtcallres { 22974462Salfred% char *addr; 23074462Salfred% struct { 23174462Salfred% u_int32_t results_len; 23274462Salfred% char *results_val; 23374462Salfred% } results; 23474462Salfred% xdrproc_t xdr_res; /* decodes results */ 23574462Salfred%}; 23674462Salfred#endif RPC_HDR 23774462Salfred% 23874462Salfred%/* 23974462Salfred% * rpcb_entry contains a merged address of a service on a particular 24074462Salfred% * transport, plus associated netconfig information. A list of rpcb_entrys 24174462Salfred% * is returned by RPCBPROC_GETADDRLIST. See netconfig.h for values used 24274462Salfred% * in r_nc_* fields. 24374462Salfred% */ 24474462Salfredstruct rpcb_entry { 24574462Salfred string r_maddr<>; /* merged address of service */ 24674462Salfred string r_nc_netid<>; /* netid field */ 24774462Salfred unsigned int r_nc_semantics; /* semantics of transport */ 24874462Salfred string r_nc_protofmly<>; /* protocol family */ 24974462Salfred string r_nc_proto<>; /* protocol name */ 25074462Salfred}; 25174462Salfred% 25274462Salfred%/* 25374462Salfred% * A list of addresses supported by a service. 25474462Salfred% */ 25574462Salfredstruct rpcb_entry_list { 25674462Salfred rpcb_entry rpcb_entry_map; 25774462Salfred struct rpcb_entry_list *rpcb_entry_next; 25874462Salfred}; 25974462Salfred 26074462Salfredtypedef rpcb_entry_list *rpcb_entry_list_ptr; 26174462Salfred 26274462Salfred% 26374462Salfred%/* 26474462Salfred% * rpcbind statistics 26574462Salfred% */ 26674462Salfred% 26774462Salfredconst rpcb_highproc_2 = RPCBPROC_CALLIT; 26874462Salfredconst rpcb_highproc_3 = RPCBPROC_TADDR2UADDR; 26974462Salfredconst rpcb_highproc_4 = RPCBPROC_GETSTAT; 27074462Salfred 27174462Salfredconst RPCBSTAT_HIGHPROC = 13; /* # of procs in rpcbind V4 plus one */ 27274462Salfredconst RPCBVERS_STAT = 3; /* provide only for rpcbind V2, V3 and V4 */ 27374462Salfredconst RPCBVERS_4_STAT = 2; 27474462Salfredconst RPCBVERS_3_STAT = 1; 27574462Salfredconst RPCBVERS_2_STAT = 0; 27674462Salfred% 27774462Salfred%/* Link list of all the stats about getport and getaddr */ 27874462Salfredstruct rpcbs_addrlist { 27974462Salfred rpcprog_t prog; 28074462Salfred rpcvers_t vers; 28174462Salfred int success; 28274462Salfred int failure; 28374462Salfred string netid<>; 28474462Salfred struct rpcbs_addrlist *next; 28574462Salfred}; 28674462Salfred% 28774462Salfred%/* Link list of all the stats about rmtcall */ 28874462Salfredstruct rpcbs_rmtcalllist { 28974462Salfred rpcprog_t prog; 29074462Salfred rpcvers_t vers; 29174462Salfred rpcproc_t proc; 29274462Salfred int success; 29374462Salfred int failure; 29474462Salfred int indirect; /* whether callit or indirect */ 29574462Salfred string netid<>; 29674462Salfred struct rpcbs_rmtcalllist *next; 29774462Salfred}; 29874462Salfred 29974462Salfredtypedef int rpcbs_proc[RPCBSTAT_HIGHPROC]; 30074462Salfredtypedef rpcbs_addrlist *rpcbs_addrlist_ptr; 30174462Salfredtypedef rpcbs_rmtcalllist *rpcbs_rmtcalllist_ptr; 30274462Salfred 30374462Salfredstruct rpcb_stat { 30474462Salfred rpcbs_proc info; 30574462Salfred int setinfo; 30674462Salfred int unsetinfo; 30774462Salfred rpcbs_addrlist_ptr addrinfo; 30874462Salfred rpcbs_rmtcalllist_ptr rmtinfo; 30974462Salfred}; 31074462Salfred% 31174462Salfred%/* 31274462Salfred% * One rpcb_stat structure is returned for each version of rpcbind 31374462Salfred% * being monitored. 31474462Salfred% */ 31574462Salfred 31674462Salfredtypedef rpcb_stat rpcb_stat_byvers[RPCBVERS_STAT]; 31774462Salfred 31874462Salfred#ifdef RPC_HDR 31974462Salfred% 32074462Salfred%/* 32174462Salfred% * We don't define netbuf in RPCL, since it would contain structure member 32274462Salfred% * names that would conflict with the definition of struct netbuf in 32374462Salfred% * <tiuser.h>. Instead we merely declare the XDR routine xdr_netbuf() here, 32474462Salfred% * and implement it ourselves in rpc/rpcb_prot.c. 32574462Salfred% */ 32674462Salfred%#ifdef __cplusplus 32774462Salfred%extern "C" bool_t xdr_netbuf(XDR *, struct netbuf *); 32874462Salfred% 32974801Salfred%#else /* __STDC__ */ 33074462Salfred%extern bool_t xdr_netbuf(XDR *, struct netbuf *); 33174462Salfred% 33274462Salfred%#endif 33374462Salfred#endif /* def RPC_HDR */ 33474462Salfred 33574462Salfred/* 33674462Salfred * rpcbind procedures 33774462Salfred */ 33874462Salfredprogram RPCBPROG { 33974462Salfred version RPCBVERS { 34074462Salfred bool 34174462Salfred RPCBPROC_SET(rpcb) = 1; 34274462Salfred 34374462Salfred bool 34474462Salfred RPCBPROC_UNSET(rpcb) = 2; 34574462Salfred 34674462Salfred string 34774462Salfred RPCBPROC_GETADDR(rpcb) = 3; 34874462Salfred 34974462Salfred rpcblist_ptr 35074462Salfred RPCBPROC_DUMP(void) = 4; 35174462Salfred 35274462Salfred rpcb_rmtcallres 35374462Salfred RPCBPROC_CALLIT(rpcb_rmtcallargs) = 5; 35474462Salfred 35574462Salfred unsigned int 35674462Salfred RPCBPROC_GETTIME(void) = 6; 35774462Salfred 35874462Salfred struct netbuf 35974462Salfred RPCBPROC_UADDR2TADDR(string) = 7; 36074462Salfred 36174462Salfred string 36274462Salfred RPCBPROC_TADDR2UADDR(struct netbuf) = 8; 36374462Salfred } = 3; 36474462Salfred 36574462Salfred version RPCBVERS4 { 36674462Salfred bool 36774462Salfred RPCBPROC_SET(rpcb) = 1; 36874462Salfred 36974462Salfred bool 37074462Salfred RPCBPROC_UNSET(rpcb) = 2; 37174462Salfred 37274462Salfred string 37374462Salfred RPCBPROC_GETADDR(rpcb) = 3; 37474462Salfred 37574462Salfred rpcblist_ptr 37674462Salfred RPCBPROC_DUMP(void) = 4; 37774462Salfred 37874462Salfred /* 37974462Salfred * NOTE: RPCBPROC_BCAST has the same functionality as CALLIT; 38074462Salfred * the new name is intended to indicate that this 38174462Salfred * procedure should be used for broadcast RPC, and 38274462Salfred * RPCBPROC_INDIRECT should be used for indirect calls. 38374462Salfred */ 38474462Salfred rpcb_rmtcallres 38574462Salfred RPCBPROC_BCAST(rpcb_rmtcallargs) = RPCBPROC_CALLIT; 38674462Salfred 38774462Salfred unsigned int 38874462Salfred RPCBPROC_GETTIME(void) = 6; 38974462Salfred 39074462Salfred struct netbuf 39174462Salfred RPCBPROC_UADDR2TADDR(string) = 7; 39274462Salfred 39374462Salfred string 39474462Salfred RPCBPROC_TADDR2UADDR(struct netbuf) = 8; 39574462Salfred 39674462Salfred string 39774462Salfred RPCBPROC_GETVERSADDR(rpcb) = 9; 39874462Salfred 39974462Salfred rpcb_rmtcallres 40074462Salfred RPCBPROC_INDIRECT(rpcb_rmtcallargs) = 10; 40174462Salfred 40274462Salfred rpcb_entry_list_ptr 40374462Salfred RPCBPROC_GETADDRLIST(rpcb) = 11; 40474462Salfred 40574462Salfred rpcb_stat_byvers 40674462Salfred RPCBPROC_GETSTAT(void) = 12; 40774462Salfred } = 4; 40874462Salfred} = 100000; 40974462Salfred#ifdef RPC_HDR 41074462Salfred% 41174462Salfred%#define RPCBVERS_3 RPCBVERS 41274462Salfred%#define RPCBVERS_4 RPCBVERS4 41374462Salfred% 41474462Salfred%#define _PATH_RPCBINDSOCK "/var/run/rpcbind.sock" 41574462Salfred% 41674462Salfred%#else /* ndef _KERNEL */ 41774462Salfred%#ifdef __cplusplus 41874462Salfred%extern "C" { 41974462Salfred%#endif 42074462Salfred% 42174462Salfred%/* 42274462Salfred% * A mapping of (program, version, network ID) to address 42374462Salfred% */ 42474462Salfred%struct rpcb { 42574462Salfred% rpcprog_t r_prog; /* program number */ 42674462Salfred% rpcvers_t r_vers; /* version number */ 42774462Salfred% char *r_netid; /* network id */ 42874462Salfred% char *r_addr; /* universal address */ 42974462Salfred% char *r_owner; /* owner of the mapping */ 43074462Salfred%}; 43174462Salfred%typedef struct rpcb RPCB; 43274462Salfred% 43374462Salfred%/* 43474462Salfred% * A list of mappings 43574462Salfred% */ 43674462Salfred%struct rpcblist { 43774462Salfred% RPCB rpcb_map; 43874462Salfred% struct rpcblist *rpcb_next; 43974462Salfred%}; 44074462Salfred%typedef struct rpcblist RPCBLIST; 44174462Salfred%typedef struct rpcblist *rpcblist_ptr; 44274462Salfred% 44374462Salfred%/* 44474462Salfred% * Remote calls arguments 44574462Salfred% */ 44674462Salfred%struct rpcb_rmtcallargs { 44774462Salfred% rpcprog_t prog; /* program number */ 44874462Salfred% rpcvers_t vers; /* version number */ 44974462Salfred% rpcproc_t proc; /* procedure number */ 45074462Salfred% u_int32_t arglen; /* arg len */ 45174462Salfred% caddr_t args_ptr; /* argument */ 45274462Salfred% xdrproc_t xdr_args; /* XDR routine for argument */ 45374462Salfred%}; 45474462Salfred%typedef struct rpcb_rmtcallargs rpcb_rmtcallargs; 45574462Salfred% 45674462Salfred%/* 45774462Salfred% * Remote calls results 45874462Salfred% */ 45974462Salfred%struct rpcb_rmtcallres { 46074462Salfred% char *addr_ptr; /* remote universal address */ 46174462Salfred% u_int32_t resultslen; /* results length */ 46274462Salfred% caddr_t results_ptr; /* results */ 46374462Salfred% xdrproc_t xdr_results; /* XDR routine for result */ 46474462Salfred%}; 46574462Salfred%typedef struct rpcb_rmtcallres rpcb_rmtcallres; 46674462Salfred% 46774462Salfred%struct rpcb_entry { 46874462Salfred% char *r_maddr; 46974462Salfred% char *r_nc_netid; 47074462Salfred% unsigned int r_nc_semantics; 47174462Salfred% char *r_nc_protofmly; 47274462Salfred% char *r_nc_proto; 47374462Salfred%}; 47474462Salfred%typedef struct rpcb_entry rpcb_entry; 47574462Salfred% 47674462Salfred%/* 47774462Salfred% * A list of addresses supported by a service. 47874462Salfred% */ 47974462Salfred% 48074462Salfred%struct rpcb_entry_list { 48174462Salfred% rpcb_entry rpcb_entry_map; 48274462Salfred% struct rpcb_entry_list *rpcb_entry_next; 48374462Salfred%}; 48474462Salfred%typedef struct rpcb_entry_list rpcb_entry_list; 48574462Salfred% 48674462Salfred%typedef rpcb_entry_list *rpcb_entry_list_ptr; 48774462Salfred% 48874462Salfred%/* 48974462Salfred% * rpcbind statistics 49074462Salfred% */ 49174462Salfred% 49274462Salfred%#define rpcb_highproc_2 RPCBPROC_CALLIT 49374462Salfred%#define rpcb_highproc_3 RPCBPROC_TADDR2UADDR 49474462Salfred%#define rpcb_highproc_4 RPCBPROC_GETSTAT 49574462Salfred%#define RPCBSTAT_HIGHPROC 13 49674462Salfred%#define RPCBVERS_STAT 3 49774462Salfred%#define RPCBVERS_4_STAT 2 49874462Salfred%#define RPCBVERS_3_STAT 1 49974462Salfred%#define RPCBVERS_2_STAT 0 50074462Salfred% 50174462Salfred%/* Link list of all the stats about getport and getaddr */ 50274462Salfred% 50374462Salfred%struct rpcbs_addrlist { 50474462Salfred% rpcprog_t prog; 50574462Salfred% rpcvers_t vers; 50674462Salfred% int success; 50774462Salfred% int failure; 50874462Salfred% char *netid; 50974462Salfred% struct rpcbs_addrlist *next; 51074462Salfred%}; 51174462Salfred%typedef struct rpcbs_addrlist rpcbs_addrlist; 51274462Salfred% 51374462Salfred%/* Link list of all the stats about rmtcall */ 51474462Salfred% 51574462Salfred%struct rpcbs_rmtcalllist { 51674462Salfred% rpcprog_t prog; 51774462Salfred% rpcvers_t vers; 51874462Salfred% rpcproc_t proc; 51974462Salfred% int success; 52074462Salfred% int failure; 52174462Salfred% int indirect; 52274462Salfred% char *netid; 52374462Salfred% struct rpcbs_rmtcalllist *next; 52474462Salfred%}; 52574462Salfred%typedef struct rpcbs_rmtcalllist rpcbs_rmtcalllist; 52674462Salfred% 52774462Salfred%typedef int rpcbs_proc[RPCBSTAT_HIGHPROC]; 52874462Salfred% 52974462Salfred%typedef rpcbs_addrlist *rpcbs_addrlist_ptr; 53074462Salfred% 53174462Salfred%typedef rpcbs_rmtcalllist *rpcbs_rmtcalllist_ptr; 53274462Salfred% 53374462Salfred%struct rpcb_stat { 53474462Salfred% rpcbs_proc info; 53574462Salfred% int setinfo; 53674462Salfred% int unsetinfo; 53774462Salfred% rpcbs_addrlist_ptr addrinfo; 53874462Salfred% rpcbs_rmtcalllist_ptr rmtinfo; 53974462Salfred%}; 54074462Salfred%typedef struct rpcb_stat rpcb_stat; 54174462Salfred% 54274462Salfred%/* 54374462Salfred% * One rpcb_stat structure is returned for each version of rpcbind 54474462Salfred% * being monitored. 54574462Salfred% */ 54674462Salfred% 54774462Salfred%typedef rpcb_stat rpcb_stat_byvers[RPCBVERS_STAT]; 54874462Salfred% 54974462Salfred%#ifdef __cplusplus 55074462Salfred%} 55174462Salfred%#endif 55274462Salfred% 55374462Salfred%#endif /* ndef _KERNEL */ 55474462Salfred#endif /* RPC_HDR */ 555