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