1    	/*
2    	 * Please do not edit this file.
3    	 * It was generated using rpcgen.
4    	 */
5    	
6    	#ifndef _RPCB_PROT_H_RPCGEN
7    	#define _RPCB_PROT_H_RPCGEN
8    	
(1) Event include_recursion: #include file "/home/kkeithle/src/github/kaleb2/nfs-ganesha/src/libntirpc/ntirpc/rpc/rpc.h" includes itself: rpc.h -> rpcb_clnt.h -> rpcb_prot.h -> rpc.h
(2) Event caretline: ^
9    	#include <rpc/rpc.h>
10   	
11   	#ifndef IXDR_GET_INT32
12   	#define IXDR_GET_INT32(buf) IXDR_GET_LONG((buf))
13   	#endif
14   	#ifndef IXDR_PUT_INT32
15   	#define IXDR_PUT_INT32(buf, v) IXDR_PUT_LONG((buf), (v))
16   	#endif
17   	#ifndef IXDR_GET_U_INT32
18   	#define IXDR_GET_U_INT32(buf) IXDR_GET_U_LONG((buf))
19   	#endif
20   	#ifndef IXDR_PUT_U_INT32
21   	#define IXDR_PUT_U_INT32(buf, v) IXDR_PUT_U_LONG((buf), (v))
22   	#endif
23   	/*
24   	 * $FreeBSD: src/include/rpc/rpcb_prot.x,v 1.3 2002/03/13 10:29:06 obrien Exp $
25   	 *
26   	 * Copyright (c) 2009, Sun Microsystems, Inc.
27   	 * All rights reserved.
28   	 *
29   	 * Redistribution and use in source and binary forms, with or without
30   	 * modification, are permitted provided that the following conditions are met:
31   	 * - Redistributions of source code must retain the above copyright notice,
32   	 *   this list of conditions and the following disclaimer.
33   	 * - Redistributions in binary form must reproduce the above copyright notice,
34   	 *   this list of conditions and the following disclaimer in the documentation
35   	 *   and/or other materials provided with the distribution.
36   	 * - Neither the name of Sun Microsystems, Inc. nor the names of its
37   	 *   contributors may be used to endorse or promote products derived
38   	 *   from this software without specific prior written permission.
39   	 *
40   	 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
41   	 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
42   	 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
43   	 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
44   	 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
45   	 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
46   	 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
47   	 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
48   	 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
49   	 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
50   	 * POSSIBILITY OF SUCH DAMAGE.
51   	 */
52   	/*
53   	 * Copyright (c) 1988 by Sun Microsystems, Inc.
54   	 */
55   	/* from rpcb_prot.x */
56   	
57   	/* #pragma ident	"@(#)rpcb_prot.x	1.5	94/04/29 SMI" */
58   	
59   	#ifndef _KERNEL
60   	
61   	/*
62   	 * The following procedures are supported by the protocol in version 3:
63   	 *
64   	 * RPCBPROC_NULL() returns ()
65   	 * takes nothing, returns nothing
66   	 *
67   	 * RPCBPROC_SET(rpcb) returns (bool)
68   	 * TRUE is success, FALSE is failure.  Registers the tuple
69   	 *	[prog, vers, address, owner, netid].
70   	 *	Finds out owner and netid information on its own.
71   	 *
72   	 * RPCBPROC_UNSET(rpcb) returns (bool)
73   	 *	TRUE is success, FALSE is failure.  Un-registers tuple
74   	 *	[prog, vers, netid].  addresses is ignored.
75   	 *	If netid is NULL, unregister all.
76   	 *
77   	 * RPCBPROC_GETADDR(rpcb) returns (string).
78   	 *	0 is failure.  Otherwise returns the universal address where the
79   	 *	triple [prog, vers, netid] is registered.  Ignore address and owner.
80   	 *
81   	 * RPCBPROC_DUMP() RETURNS (rpcblist_ptr)
82   	 *	used to dump the entire rpcbind maps
83   	 *
84   	 * RPCBPROC_CALLIT(rpcb_rmtcallargs)
85   	 * RETURNS (rpcb_rmtcallres);
86   	 * Calls the procedure on the remote machine.  If it is not registered,
87   	 *	this procedure is quiet; i.e. it does not return error information!!!
88   	 *	This routine only passes null authentication parameters.
89   	 *	It has no interface to xdr routines for RPCBPROC_CALLIT.
90   	 *
91   	 * RPCBPROC_GETTIME() returns (int).
92   	 *	Gets the remote machines time
93   	 *
94   	 * RPCBPROC_UADDR2TADDR(strint) RETURNS (struct netbuf)
95   	 *	Returns the netbuf address from universal address.
96   	 *
97   	 * RPCBPROC_TADDR2UADDR(struct netbuf) RETURNS (string)
98   	 *	Returns the universal address from netbuf address.
99   	 *
100  	 * END OF RPCBIND VERSION 3 PROCEDURES
101  	 */
102  	/*
103  	 * Except for RPCBPROC_CALLIT, the procedures above are carried over to
104  	 * rpcbind version 4.  Those below are added or modified for version 4.
105  	 * NOTE: RPCBPROC_BCAST HAS THE SAME FUNCTIONALITY AND PROCEDURE NUMBER
106  	 * AS RPCBPROC_CALLIT.
107  	 *
108  	 * RPCBPROC_BCAST(rpcb_rmtcallargs)
109  	 * RETURNS (rpcb_rmtcallres);
110  	 * Calls the procedure on the remote machine.  If it is not registered,
111  	 *	this procedure IS quiet; i.e. it DOES NOT return error information!!!
112  	 *	This routine should be used for broadcasting and nothing else.
113  	 *
114  	 * RPCBPROC_GETVERSADDR(rpcb) returns (string).
115  	 *	0 is failure.  Otherwise returns the universal address where the
116  	 *	triple [prog, vers, netid] is registered.  Ignore address and owner.
117  	 *	Same as RPCBPROC_GETADDR except that if the given version number
118  	 *	is not available, the address is not returned.
119  	 *
120  	 * RPCBPROC_INDIRECT(rpcb_rmtcallargs)
121  	 * RETURNS (rpcb_rmtcallres);
122  	 * Calls the procedure on the remote machine.  If it is not registered,
123  	 *	this procedure is NOT quiet; i.e. it DOES return error information!!!
124  	 * as any normal application would expect.
125  	 *
126  	 * RPCBPROC_GETADDRLIST(rpcb) returns (rpcb_entry_list_ptr).
127  	 *	Same as RPCBPROC_GETADDR except that it returns a list of all the
128  	 *	addresses registered for the combination (prog, vers) (for all
129  	 *	transports).
130  	 *
131  	 * RPCBPROC_GETSTAT(void) returns (rpcb_stat_byvers)
132  	 *	Returns the statistics about the kind of requests received by rpcbind.
133  	 */
134  	
135  	/*
136  	 * A mapping of (program, version, network ID) to address
137  	 */
138  	
139  	struct rpcb {
140  		rpcprog_t r_prog;
141  		rpcvers_t r_vers;
142  		char *r_netid;
143  		char *r_addr;
144  		char *r_owner;
145  	};
146  	typedef struct rpcb rpcb;
147  	#ifdef __cplusplus
148  	extern "C" {
149  		bool xdr_rpcb(XDR *, rpcb *);
150  	}
151  	#elif __STDC__
152  	extern bool xdr_rpcb(XDR *, rpcb *);
153  	#else				/* Old Style C */
154  	bool xdr_rpcb();
155  	#endif				/* Old Style C */
156  	
157  	typedef rpcb RPCB;
158  	
159  	/*
160  	 * A list of mappings
161  	 *
162  	 * Below are two definitions for the rpcblist structure.  This is done because
163  	 * xdr_rpcblist() is specified to take a struct rpcblist **, rather than a
164  	 * struct rpcblist * that rpcgen would produce.  One version of the rpcblist
165  	 * structure (actually called rp__list) is used with rpcgen, and the other is
166  	 * defined only in the header file for compatibility with the specified
167  	 * interface.
168  	 */
169  	
170  	struct rp__list {
171  		rpcb rpcb_map;
172  		struct rp__list *rpcb_next;
173  	};
174  	typedef struct rp__list rp__list;
175  	#ifdef __cplusplus
176  	extern "C" {
177  		bool xdr_rp__list(XDR *, rp__list *);
178  	}
179  	#elif __STDC__
180  	extern bool xdr_rp__list(XDR *, rp__list *);
181  	#else				/* Old Style C */
182  	bool xdr_rp__list();
183  	#endif				/* Old Style C */
184  	
185  	typedef rp__list *rpcblist_ptr;
186  	#ifdef __cplusplus
187  	extern "C" {
188  		bool xdr_rpcblist_ptr(XDR *, rpcblist_ptr *);
189  	}
190  	#elif __STDC__
191  	extern bool xdr_rpcblist_ptr(XDR *, rpcblist_ptr *);
192  	#else				/* Old Style C */
193  	bool xdr_rpcblist_ptr();
194  	#endif				/* Old Style C */
195  	
196  	typedef struct rp__list rpcblist;
197  	typedef struct rp__list RPCBLIST;
198  	
199  	#ifndef __cplusplus
200  	struct rpcblist {
201  		RPCB rpcb_map;
202  		struct rpcblist *rpcb_next;
203  	};
204  	#endif
205  	
206  	#ifdef __cplusplus
207  	extern "C" {
208  	#endif
209  		extern bool xdr_rpcblist(XDR *, rpcblist **);
210  	#ifdef __cplusplus
211  	}
212  	#endif
213  	/*
214  	 * Arguments of remote calls
215  	 */ struct rpcb_rmtcallargs {
216  		rpcprog_t prog;
217  		rpcvers_t vers;
218  		rpcproc_t proc;
219  		struct {
220  			u_int args_len;
221  			char *args_val;
222  		} args;
223  	};
224  	typedef struct rpcb_rmtcallargs rpcb_rmtcallargs;
225  	#ifdef __cplusplus
226  	extern "C" {
227  		bool xdr_rpcb_rmtcallargs(XDR *, rpcb_rmtcallargs *);
228  	}
229  	#elif __STDC__
230  	extern bool xdr_rpcb_rmtcallargs(XDR *, rpcb_rmtcallargs *);
231  	#else				/* Old Style C */
232  	bool xdr_rpcb_rmtcallargs();
233  	#endif				/* Old Style C */
234  	
235  	/*
236  	 * Client-side only representation of rpcb_rmtcallargs structure.
237  	 *
238  	 * The routine that XDRs the rpcb_rmtcallargs structure must deal with the
239  	 * opaque arguments in the "args" structure.  xdr_rpcb_rmtcallargs() needs to
240  	 * be passed the XDR routine that knows the args' structure.  This routine
241  	 * doesn't need to go over-the-wire (and it wouldn't make sense anyway) since
242  	 * the application being called already knows the args structure.  So we use a
243  	 * different "XDR" structure on the client side, r_rpcb_rmtcallargs, which
244  	 * includes the args' XDR routine.
245  	 */
246  	struct r_rpcb_rmtcallargs {
247  		rpcprog_t prog;
248  		rpcvers_t vers;
249  		rpcproc_t proc;
250  		struct {
251  			u_int args_len;
252  			char *args_val;
253  		} args;
254  		xdrproc_t xdr_args;	/* encodes args */
255  	};
256  	
257  	/*
258  	 * Results of the remote call
259  	 */
260  	
261  	struct rpcb_rmtcallres {
262  		char *addr;
263  		struct {
264  			u_int results_len;
265  			char *results_val;
266  		} results;
267  	};
268  	typedef struct rpcb_rmtcallres rpcb_rmtcallres;
269  	#ifdef __cplusplus
270  	extern "C" {
271  		bool xdr_rpcb_rmtcallres(XDR *, rpcb_rmtcallres *);
272  	}
273  	#elif __STDC__
274  	extern bool xdr_rpcb_rmtcallres(XDR *, rpcb_rmtcallres *);
275  	#else				/* Old Style C */
276  	bool xdr_rpcb_rmtcallres();
277  	#endif				/* Old Style C */
278  	
279  	/*
280  	 * Client-side only representation of rpcb_rmtcallres structure.
281  	 */
282  	struct r_rpcb_rmtcallres {
283  		char *addr;
284  		struct {
285  			u_int32_t results_len;
286  			char *results_val;
287  		} results;
288  		xdrproc_t xdr_res;	/* decodes results */
289  	};
290  	
291  	/*
292  	 * rpcb_entry contains a merged address of a service on a particular
293  	 * transport, plus associated netconfig information.  A list of rpcb_entrys
294  	 * is returned by RPCBPROC_GETADDRLIST.  See netconfig.h for values used
295  	 * in r_nc_* fields.
296  	 */
297  	
298  	struct rpcb_entry {
299  		char *r_maddr;
300  		char *r_nc_netid;
301  		u_int r_nc_semantics;
302  		char *r_nc_protofmly;
303  		char *r_nc_proto;
304  	};
305  	typedef struct rpcb_entry rpcb_entry;
306  	#ifdef __cplusplus
307  	extern "C" {
308  		bool xdr_rpcb_entry(XDR *, rpcb_entry *);
309  	}
310  	#elif __STDC__
311  	extern bool xdr_rpcb_entry(XDR *, rpcb_entry *);
312  	#else				/* Old Style C */
313  	bool xdr_rpcb_entry();
314  	#endif				/* Old Style C */
315  	
316  	/*
317  	 * A list of addresses supported by a service.
318  	 */
319  	
320  	struct rpcb_entry_list {
321  		rpcb_entry rpcb_entry_map;
322  		struct rpcb_entry_list *rpcb_entry_next;
323  	};
324  	typedef struct rpcb_entry_list rpcb_entry_list;
325  	#ifdef __cplusplus
326  	extern "C" {
327  		bool xdr_rpcb_entry_list(XDR *, rpcb_entry_list *);
328  	}
329  	#elif __STDC__
330  	extern bool xdr_rpcb_entry_list(XDR *, rpcb_entry_list *);
331  	#else				/* Old Style C */
332  	bool xdr_rpcb_entry_list();
333  	#endif				/* Old Style C */
334  	
335  	typedef rpcb_entry_list *rpcb_entry_list_ptr;
336  	#ifdef __cplusplus
337  	extern "C" {
338  		bool xdr_rpcb_entry_list_ptr(XDR *, rpcb_entry_list_ptr *);
339  	}
340  	#elif __STDC__
341  	extern bool xdr_rpcb_entry_list_ptr(XDR *, rpcb_entry_list_ptr *);
342  	#else				/* Old Style C */
343  	bool xdr_rpcb_entry_list_ptr();
344  	#endif				/* Old Style C */
345  	
346  	/*
347  	 * rpcbind statistics
348  	 */
349  	
350  	#define rpcb_highproc_2 RPCBPROC_CALLIT
351  	#define rpcb_highproc_3 RPCBPROC_TADDR2UADDR
352  	#define rpcb_highproc_4 RPCBPROC_GETSTAT
353  	#define RPCBSTAT_HIGHPROC 13
354  	#define RPCBVERS_STAT 3
355  	#define RPCBVERS_4_STAT 2
356  	#define RPCBVERS_3_STAT 1
357  	#define RPCBVERS_2_STAT 0
358  	
359  	/* Link list of all the stats about getport and getaddr */
360  	
361  	struct rpcbs_addrlist {
362  		rpcprog_t prog;
363  		rpcvers_t vers;
364  		int32_t success;
365  		int32_t failure;
366  		char *netid;
367  		struct rpcbs_addrlist *next;
368  	};
369  	typedef struct rpcbs_addrlist rpcbs_addrlist;
370  	#ifdef __cplusplus
371  	extern "C" {
372  		bool xdr_rpcbs_addrlist(XDR *, rpcbs_addrlist *);
373  	}
374  	#elif __STDC__
375  	extern bool xdr_rpcbs_addrlist(XDR *, rpcbs_addrlist *);
376  	#else				/* Old Style C */
377  	bool xdr_rpcbs_addrlist();
378  	#endif				/* Old Style C */
379  	
380  	/* Link list of all the stats about rmtcall */
381  	
382  	struct rpcbs_rmtcalllist {
383  		rpcprog_t prog;
384  		rpcvers_t vers;
385  		rpcproc_t proc;
386  		int32_t success;
387  		int32_t failure;
388  		int32_t indirect;
389  		char *netid;
390  		struct rpcbs_rmtcalllist *next;
391  	};
392  	typedef struct rpcbs_rmtcalllist rpcbs_rmtcalllist;
393  	#ifdef __cplusplus
394  	extern "C" {
395  		bool xdr_rpcbs_rmtcalllist(XDR *, rpcbs_rmtcalllist *);
396  	}
397  	#elif __STDC__
398  	extern bool xdr_rpcbs_rmtcalllist(XDR *, rpcbs_rmtcalllist *);
399  	#else				/* Old Style C */
400  	bool xdr_rpcbs_rmtcalllist();
401  	#endif				/* Old Style C */
402  	
403  	typedef int rpcbs_proc[RPCBSTAT_HIGHPROC];
404  	#ifdef __cplusplus
405  	extern "C" {
406  		bool xdr_rpcbs_proc(XDR *, rpcbs_proc);
407  	}
408  	#elif __STDC__
409  	extern bool xdr_rpcbs_proc(XDR *, rpcbs_proc);
410  	#else				/* Old Style C */
411  	bool xdr_rpcbs_proc();
412  	#endif				/* Old Style C */
413  	
414  	typedef rpcbs_addrlist *rpcbs_addrlist_ptr;
415  	#ifdef __cplusplus
416  	extern "C" {
417  		bool xdr_rpcbs_addrlist_ptr(XDR *, rpcbs_addrlist_ptr *);
418  	}
419  	#elif __STDC__
420  	extern bool xdr_rpcbs_addrlist_ptr(XDR *, rpcbs_addrlist_ptr *);
421  	#else				/* Old Style C */
422  	bool xdr_rpcbs_addrlist_ptr();
423  	#endif				/* Old Style C */
424  	
425  	typedef rpcbs_rmtcalllist *rpcbs_rmtcalllist_ptr;
426  	#ifdef __cplusplus
427  	extern "C" {
428  		bool xdr_rpcbs_rmtcalllist_ptr(XDR *, rpcbs_rmtcalllist_ptr *);
429  	}
430  	#elif __STDC__
431  	extern bool xdr_rpcbs_rmtcalllist_ptr(XDR *, rpcbs_rmtcalllist_ptr *);
432  	#else				/* Old Style C */
433  	bool xdr_rpcbs_rmtcalllist_ptr();
434  	#endif				/* Old Style C */
435  	
436  	struct rpcb_stat {
437  		rpcbs_proc info;
438  		int32_t setinfo;
439  		int32_t unsetinfo;
440  		rpcbs_addrlist_ptr addrinfo;
441  		rpcbs_rmtcalllist_ptr rmtinfo;
442  	};
443  	typedef struct rpcb_stat rpcb_stat;
444  	#ifdef __cplusplus
445  	extern "C" {
446  		bool xdr_rpcb_stat(XDR *, rpcb_stat *);
447  	}
448  	#elif __STDC__
449  	extern bool xdr_rpcb_stat(XDR *, rpcb_stat *);
450  	#else				/* Old Style C */
451  	bool xdr_rpcb_stat();
452  	#endif				/* Old Style C */
453  	
454  	/*
455  	 * One rpcb_stat structure is returned for each version of rpcbind
456  	 * being monitored.
457  	 */
458  	
459  	typedef rpcb_stat rpcb_stat_byvers[RPCBVERS_STAT];
460  	#ifdef __cplusplus
461  	extern "C" {
462  		bool xdr_rpcb_stat_byvers(XDR *, rpcb_stat_byvers);
463  	}
464  	#elif __STDC__
465  	extern bool xdr_rpcb_stat_byvers(XDR *, rpcb_stat_byvers);
466  	#else				/* Old Style C */
467  	bool xdr_rpcb_stat_byvers();
468  	#endif				/* Old Style C */
469  	
470  	/*
471  	 * We don't define netbuf in RPCL, since it would contain structure member
472  	 * names that would conflict with the definition of struct netbuf in
473  	 * <tiuser.h>.  Instead we merely declare the XDR routine xdr_netbuf() here,
474  	 * and implement it ourselves in rpc/rpcb_prot.c.
475  	 */
476  	#ifdef __cplusplus
477  	extern "C" {
478  		bool xdr_netbuf(XDR *, struct netbuf *);
479  	}
480  	#else				/* __STDC__ */
481  	extern bool xdr_netbuf(XDR *, struct netbuf *);
482  	
483  	#endif
484  	
485  	#define RPCBVERS_3 RPCBVERS
486  	#define RPCBVERS_4 RPCBVERS4
487  	
488  	#define _PATH_RPCBINDSOCK "/var/run/rpcbind.sock"
489  	
490  	#else				/* ndef _KERNEL */
491  	#ifdef __cplusplus
492  	extern "C" {
493  	#endif
494  	
495  	/*
496  	 * A mapping of (program, version, network ID) to address
497  	 */
498  		struct rpcb {
499  			char *r_netid;	/* network id */
500  			char *r_addr;	/* universal address */
501  			char *r_owner;	/* owner of the mapping */
502  			rpcprog_t r_prog;	/* program number */
503  			rpcvers_t r_vers;	/* version number */
504  		};
505  		typedef struct rpcb RPCB;
506  	
507  	/*
508  	 * A list of mappings
509  	 */
510  		struct rpcblist {
511  			RPCB rpcb_map;
512  			struct rpcblist *rpcb_next;
513  		};
514  		typedef struct rpcblist RPCBLIST;
515  		typedef struct rpcblist *rpcblist_ptr;
516  	
517  	/*
518  	 * Remote calls arguments
519  	 */
520  		struct rpcb_rmtcallargs {
521  			xdrproc_t xdr_args;	/* XDR routine for argument */
522  			void *args_ptr;		/* argument */
523  			u_int32_t arglen;	/* arg len */
524  			rpcprog_t prog;	/* program number */
525  			rpcvers_t vers;	/* version number */
526  			rpcproc_t proc;	/* procedure number */
527  		};
528  		typedef struct rpcb_rmtcallargs rpcb_rmtcallargs;
529  	
530  	/*
531  	 * Remote calls results
532  	 */
533  		struct rpcb_rmtcallres {
534  			char *addr_ptr;	/* remote universal address */
535  			xdrproc_t xdr_results;	/* XDR routine for result */
536  			void *results_ptr;	/* results */
537  			u_int32_t resultslen;	/* results length */
538  		};
539  		typedef struct rpcb_rmtcallres rpcb_rmtcallres;
540  	
541  		struct rpcb_entry {
542  			char *r_maddr;
543  			char *r_nc_netid;
544  			char *r_nc_protofmly;
545  			char *r_nc_proto;
546  			unsigned int r_nc_semantics;
547  		};
548  		typedef struct rpcb_entry rpcb_entry;
549  	
550  	/*
551  	 * A list of addresses supported by a service.
552  	 */
553  	
554  		struct rpcb_entry_list {
555  			rpcb_entry rpcb_entry_map;
556  			struct rpcb_entry_list *rpcb_entry_next;
557  		};
558  		typedef struct rpcb_entry_list rpcb_entry_list;
559  	
560  		typedef rpcb_entry_list *rpcb_entry_list_ptr;
561  	
562  	/*
563  	 * rpcbind statistics
564  	 */
565  	
566  	#define rpcb_highproc_2 RPCBPROC_CALLIT
567  	#define rpcb_highproc_3 RPCBPROC_TADDR2UADDR
568  	#define rpcb_highproc_4 RPCBPROC_GETSTAT
569  	#define RPCBSTAT_HIGHPROC 13
570  	#define RPCBVERS_STAT 3
571  	#define RPCBVERS_4_STAT 2
572  	#define RPCBVERS_3_STAT 1
573  	#define RPCBVERS_2_STAT 0
574  	
575  	/* Link list of all the stats about getport and getaddr */
576  	
577  		struct rpcbs_addrlist {
578  			rpcprog_t prog;
579  			rpcvers_t vers;
580  			int success;
581  			int failure;
582  			char *netid;
583  			struct rpcbs_addrlist *next;
584  		};
585  		typedef struct rpcbs_addrlist rpcbs_addrlist;
586  	
587  	/* Link list of all the stats about rmtcall */
588  	
589  		struct rpcbs_rmtcalllist {
590  			rpcprog_t prog;
591  			rpcvers_t vers;
592  			rpcproc_t proc;
593  			int success;
594  			int failure;
595  			int indirect;
596  			char *netid;
597  			struct rpcbs_rmtcalllist *next;
598  		};
599  		typedef struct rpcbs_rmtcalllist rpcbs_rmtcalllist;
600  	
601  		typedef int rpcbs_proc[RPCBSTAT_HIGHPROC];
602  	
603  		typedef rpcbs_addrlist *rpcbs_addrlist_ptr;
604  	
605  		typedef rpcbs_rmtcalllist *rpcbs_rmtcalllist_ptr;
606  	
607  		struct rpcb_stat {
608  			rpcbs_proc info;
609  			int setinfo;
610  			int unsetinfo;
611  			rpcbs_addrlist_ptr addrinfo;
612  			rpcbs_rmtcalllist_ptr rmtinfo;
613  		};
614  		typedef struct rpcb_stat rpcb_stat;
615  	
616  	/*
617  	 * One rpcb_stat structure is returned for each version of rpcbind
618  	 * being monitored.
619  	 */
620  	
621  		typedef rpcb_stat rpcb_stat_byvers[RPCBVERS_STAT];
622  	
623  	#ifdef __cplusplus
624  	}
625  	#endif
626  	#endif				/* ndef _KERNEL */
627  	#define RPCBPROG ((u_int32_t)100000)
628  	#define RPCBVERS ((u_int32_t)3)
629  	#ifdef __cplusplus
630  	#define RPCBPROC_SET ((u_int32_t)1)
631  	extern "C" {
632  		bool *rpcbproc_set_3(rpcb *, CLIENT *);
633  		bool *rpcbproc_set_3_svc(rpcb *, struct svc_req *);
634  	}
635  	#define RPCBPROC_UNSET ((u_int32_t)2)
636  	extern "C" {
637  		bool *rpcbproc_unset_3(rpcb *, CLIENT *);
638  		bool *rpcbproc_unset_3_svc(rpcb *, struct svc_req *);
639  	}
640  	#define RPCBPROC_GETADDR ((u_int32_t)3)
641  	extern "C" {
642  		char **rpcbproc_getaddr_3(rpcb *, CLIENT *);
643  		char **rpcbproc_getaddr_3_svc(rpcb *, struct svc_req *);
644  	}
645  	#define RPCBPROC_DUMP ((u_int32_t)4)
646  	extern "C" {
647  		rpcblist_ptr *rpcbproc_dump_3(void *, CLIENT *);
648  		rpcblist_ptr *rpcbproc_dump_3_svc(void *, struct svc_req *);
649  	}
650  	#define RPCBPROC_CALLIT ((u_int32_t)5)
651  	extern "C" {
652  		rpcb_rmtcallres *rpcbproc_callit_3(rpcb_rmtcallargs *, CLIENT *);
653  		rpcb_rmtcallres *rpcbproc_callit_3_svc(rpcb_rmtcallargs *,
654  						       struct svc_req *);
655  	}
656  	#define RPCBPROC_GETTIME ((u_int32_t)6)
657  	extern "C" {
658  		u_int *rpcbproc_gettime_3(void *, CLIENT *);
659  		u_int *rpcbproc_gettime_3_svc(void *, struct svc_req *);
660  	}
661  	#define RPCBPROC_UADDR2TADDR ((u_int32_t)7)
662  	extern "C" {
663  		struct netbuf *rpcbproc_uaddr2taddr_3(char **, CLIENT *);
664  		struct netbuf *rpcbproc_uaddr2taddr_3_svc(char **, struct svc_req *);
665  	}
666  	#define RPCBPROC_TADDR2UADDR ((u_int32_t)8)
667  	extern "C" {
668  		char **rpcbproc_taddr2uaddr_3(struct netbuf *, CLIENT *);
669  		char **rpcbproc_taddr2uaddr_3_svc(struct netbuf *, struct svc_req *);
670  	}
671  	#elif __STDC__
672  	#define RPCBPROC_SET ((u_int32_t)1)
673  	extern bool *rpcbproc_set_3(rpcb *, CLIENT *);
674  	extern bool *rpcbproc_set_3_svc(rpcb *, struct svc_req *);
675  	#define RPCBPROC_UNSET ((u_int32_t)2)
676  	extern bool *rpcbproc_unset_3(rpcb *, CLIENT *);
677  	extern bool *rpcbproc_unset_3_svc(rpcb *, struct svc_req *);
678  	#define RPCBPROC_GETADDR ((u_int32_t)3)
679  	extern char **rpcbproc_getaddr_3(rpcb *, CLIENT *);
680  	extern char **rpcbproc_getaddr_3_svc(rpcb *, struct svc_req *);
681  	#define RPCBPROC_DUMP ((u_int32_t)4)
682  	extern rpcblist_ptr *rpcbproc_dump_3(void *, CLIENT *);
683  	extern rpcblist_ptr *rpcbproc_dump_3_svc(void *, struct svc_req *);
684  	#define RPCBPROC_CALLIT ((u_int32_t)5)
685  	extern rpcb_rmtcallres *rpcbproc_callit_3(rpcb_rmtcallargs *, CLIENT *);
686  	extern rpcb_rmtcallres *rpcbproc_callit_3_svc(rpcb_rmtcallargs *,
687  						      struct svc_req *);
688  	#define RPCBPROC_GETTIME ((u_int32_t)6)
689  	extern u_int *rpcbproc_gettime_3(void *, CLIENT *);
690  	extern u_int *rpcbproc_gettime_3_svc(void *, struct svc_req *);
691  	#define RPCBPROC_UADDR2TADDR ((u_int32_t)7)
692  	extern struct netbuf *rpcbproc_uaddr2taddr_3(char **, CLIENT *);
693  	extern struct netbuf *rpcbproc_uaddr2taddr_3_svc(char **, struct svc_req *);
694  	#define RPCBPROC_TADDR2UADDR ((u_int32_t)8)
695  	extern char **rpcbproc_taddr2uaddr_3(struct netbuf *, CLIENT *);
696  	extern char **rpcbproc_taddr2uaddr_3_svc(struct netbuf *, struct svc_req *);
697  	
698  	#else				/* Old Style C */
699  	#define RPCBPROC_SET ((u_int32_t)1)
700  	extern bool *rpcbproc_set_3();
701  	extern bool *rpcbproc_set_3_svc();
702  	#define RPCBPROC_UNSET ((u_int32_t)2)
703  	extern bool *rpcbproc_unset_3();
704  	extern bool *rpcbproc_unset_3_svc();
705  	#define RPCBPROC_GETADDR ((u_int32_t)3)
706  	extern char **rpcbproc_getaddr_3();
707  	extern char **rpcbproc_getaddr_3_svc();
708  	#define RPCBPROC_DUMP ((u_int32_t)4)
709  	extern rpcblist_ptr *rpcbproc_dump_3();
710  	extern rpcblist_ptr *rpcbproc_dump_3_svc();
711  	#define RPCBPROC_CALLIT ((u_int32_t)5)
712  	extern rpcb_rmtcallres *rpcbproc_callit_3();
713  	extern rpcb_rmtcallres *rpcbproc_callit_3_svc();
714  	#define RPCBPROC_GETTIME ((u_int32_t)6)
715  	extern u_int *rpcbproc_gettime_3();
716  	extern u_int *rpcbproc_gettime_3_svc();
717  	#define RPCBPROC_UADDR2TADDR ((u_int32_t)7)
718  	extern struct netbuf *rpcbproc_uaddr2taddr_3();
719  	extern struct netbuf *rpcbproc_uaddr2taddr_3_svc();
720  	#define RPCBPROC_TADDR2UADDR ((u_int32_t)8)
721  	extern char **rpcbproc_taddr2uaddr_3();
722  	extern char **rpcbproc_taddr2uaddr_3_svc();
723  	#endif				/* Old Style C */
724  	#define RPCBVERS4 ((u_int32_t)4)
725  	
726  	#ifdef __cplusplus
727  	extern "C" {
728  		bool *rpcbproc_set_4(rpcb *, CLIENT *);
729  		bool *rpcbproc_set_4_svc(rpcb *, struct svc_req *);
730  		bool *rpcbproc_unset_4(rpcb *, CLIENT *);
731  		bool *rpcbproc_unset_4_svc(rpcb *, struct svc_req *);
732  		char **rpcbproc_getaddr_4(rpcb *, CLIENT *);
733  		char **rpcbproc_getaddr_4_svc(rpcb *, struct svc_req *);
734  		rpcblist_ptr *rpcbproc_dump_4(void *, CLIENT *);
735  		rpcblist_ptr *rpcbproc_dump_4_svc(void *, struct svc_req *);
736  	}
737  	#define RPCBPROC_BCAST ((u_int32_t)RPCBPROC_CALLIT)
738  	extern "C" {
739  		rpcb_rmtcallres *rpcbproc_bcast_4(rpcb_rmtcallargs *, CLIENT *);
740  		rpcb_rmtcallres *rpcbproc_bcast_4_svc(rpcb_rmtcallargs *,
741  						       struct svc_req *);
742  		u_int *rpcbproc_gettime_4(void *, CLIENT *);
743  		u_int *rpcbproc_gettime_4_svc(void *, struct svc_req *);
744  		struct netbuf *rpcbproc_uaddr2taddr_4(char **, CLIENT *);
745  		struct netbuf *rpcbproc_uaddr2taddr_4_svc(char **, struct svc_req *);
746  		char **rpcbproc_taddr2uaddr_4(struct netbuf *, CLIENT *);
747  		char **rpcbproc_taddr2uaddr_4_svc(struct netbuf *, struct svc_req *);
748  	}
749  	#define RPCBPROC_GETVERSADDR ((u_int32_t)9)
750  	extern "C" {
751  		char **rpcbproc_getversaddr_4(rpcb *, CLIENT *);
752  		char **rpcbproc_getversaddr_4_svc(rpcb *, struct svc_req *);
753  	}
754  	#define RPCBPROC_INDIRECT ((u_int32_t)10)
755  	extern "C" {
756  		rpcb_rmtcallres *rpcbproc_indirect_4(rpcb_rmtcallargs *, CLIENT *);
757  		rpcb_rmtcallres *rpcbproc_indirect_4_svc(rpcb_rmtcallargs *,
758  							 struct svc_req *);
759  	}
760  	#define RPCBPROC_GETADDRLIST ((u_int32_t)11)
761  	extern "C" {
762  		rpcb_entry_list_ptr *rpcbproc_getaddrlist_4(rpcb *, CLIENT *);
763  		rpcb_entry_list_ptr *rpcbproc_getaddrlist_4_svc(rpcb *,
764  								struct svc_req *);
765  	}
766  	#define RPCBPROC_GETSTAT ((u_int32_t)12)
767  	extern "C" {
768  		rpcb_stat *rpcbproc_getstat_4(void *, CLIENT *);
769  		rpcb_stat *rpcbproc_getstat_4_svc(void *, struct svc_req *);
770  	}
771  	#elif __STDC__
772  	extern bool *rpcbproc_set_4(rpcb *, CLIENT *);
773  	extern bool *rpcbproc_set_4_svc(rpcb *, struct svc_req *);
774  	extern bool *rpcbproc_unset_4(rpcb *, CLIENT *);
775  	extern bool *rpcbproc_unset_4_svc(rpcb *, struct svc_req *);
776  	extern char **rpcbproc_getaddr_4(rpcb *, CLIENT *);
777  	extern char **rpcbproc_getaddr_4_svc(rpcb *, struct svc_req *);
778  	extern rpcblist_ptr *rpcbproc_dump_4(void *, CLIENT *);
779  	extern rpcblist_ptr *rpcbproc_dump_4_svc(void *, struct svc_req *);
780  	#define RPCBPROC_BCAST ((u_int32_t)RPCBPROC_CALLIT)
781  	extern rpcb_rmtcallres *rpcbproc_bcast_4(rpcb_rmtcallargs *, CLIENT *);
782  	extern rpcb_rmtcallres *rpcbproc_bcast_4_svc(rpcb_rmtcallargs *,
783  						     struct svc_req *);
784  	extern u_int *rpcbproc_gettime_4(void *, CLIENT *);
785  	extern u_int *rpcbproc_gettime_4_svc(void *, struct svc_req *);
786  	extern struct netbuf *rpcbproc_uaddr2taddr_4(char **, CLIENT *);
787  	extern struct netbuf *rpcbproc_uaddr2taddr_4_svc(char **, struct svc_req *);
788  	extern char **rpcbproc_taddr2uaddr_4(struct netbuf *, CLIENT *);
789  	extern char **rpcbproc_taddr2uaddr_4_svc(struct netbuf *, struct svc_req *);
790  	#define RPCBPROC_GETVERSADDR ((u_int32_t)9)
791  	extern char **rpcbproc_getversaddr_4(rpcb *, CLIENT *);
792  	extern char **rpcbproc_getversaddr_4_svc(rpcb *, struct svc_req *);
793  	#define RPCBPROC_INDIRECT ((u_int32_t)10)
794  	extern rpcb_rmtcallres *rpcbproc_indirect_4(rpcb_rmtcallargs *, CLIENT *);
795  	extern rpcb_rmtcallres *rpcbproc_indirect_4_svc(rpcb_rmtcallargs *,
796  							struct svc_req *);
797  	#define RPCBPROC_GETADDRLIST ((u_int32_t)11)
798  	extern rpcb_entry_list_ptr *rpcbproc_getaddrlist_4(rpcb *, CLIENT *);
799  	extern rpcb_entry_list_ptr *rpcbproc_getaddrlist_4_svc(rpcb *,
800  							       struct svc_req *);
801  	#define RPCBPROC_GETSTAT ((u_int32_t)12)
802  	extern rpcb_stat *rpcbproc_getstat_4(void *, CLIENT *);
803  	extern rpcb_stat *rpcbproc_getstat_4_svc(void *, struct svc_req *);
804  	
805  	#else				/* Old Style C */
806  	extern bool *rpcbproc_set_4();
807  	extern bool *rpcbproc_set_4_svc();
808  	extern bool *rpcbproc_unset_4();
809  	extern bool *rpcbproc_unset_4_svc();
810  	extern char **rpcbproc_getaddr_4();
811  	extern char **rpcbproc_getaddr_4_svc();
812  	extern rpcblist_ptr *rpcbproc_dump_4();
813  	extern rpcblist_ptr *rpcbproc_dump_4_svc();
814  	#define RPCBPROC_BCAST ((u_int32_t)RPCBPROC_CALLIT)
815  	extern rpcb_rmtcallres *rpcbproc_bcast_4();
816  	extern rpcb_rmtcallres *rpcbproc_bcast_4_svc();
817  	extern u_int *rpcbproc_gettime_4();
818  	extern u_int *rpcbproc_gettime_4_svc();
819  	extern struct netbuf *rpcbproc_uaddr2taddr_4();
820  	extern struct netbuf *rpcbproc_uaddr2taddr_4_svc();
821  	extern char **rpcbproc_taddr2uaddr_4();
822  	extern char **rpcbproc_taddr2uaddr_4_svc();
823  	#define RPCBPROC_GETVERSADDR ((u_int32_t)9)
824  	extern char **rpcbproc_getversaddr_4();
825  	extern char **rpcbproc_getversaddr_4_svc();
826  	#define RPCBPROC_INDIRECT ((u_int32_t)10)
827  	extern rpcb_rmtcallres *rpcbproc_indirect_4();
828  	extern rpcb_rmtcallres *rpcbproc_indirect_4_svc();
829  	#define RPCBPROC_GETADDRLIST ((u_int32_t)11)
830  	extern rpcb_entry_list_ptr *rpcbproc_getaddrlist_4();
831  	extern rpcb_entry_list_ptr *rpcbproc_getaddrlist_4_svc();
832  	#define RPCBPROC_GETSTAT ((u_int32_t)12)
833  	extern rpcb_stat *rpcbproc_getstat_4();
834  	extern rpcb_stat *rpcbproc_getstat_4_svc();
835  	#endif				/* Old Style C */
836  	
837  	#endif				/* !_RPCB_PROT_H_RPCGEN */
838