xref: /titanic_53/usr/src/cmd/rpcbind/rpcbind.h (revision 0ea5e3a571e3da934507bdd32924d11659c70704)
17c478bd9Sstevel@tonic-gate /*
27c478bd9Sstevel@tonic-gate  * CDDL HEADER START
37c478bd9Sstevel@tonic-gate  *
47c478bd9Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
5*0ea5e3a5Sjjj  * Common Development and Distribution License (the "License").
6*0ea5e3a5Sjjj  * You may not use this file except in compliance with the License.
77c478bd9Sstevel@tonic-gate  *
87c478bd9Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
97c478bd9Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
107c478bd9Sstevel@tonic-gate  * See the License for the specific language governing permissions
117c478bd9Sstevel@tonic-gate  * and limitations under the License.
127c478bd9Sstevel@tonic-gate  *
137c478bd9Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
147c478bd9Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
157c478bd9Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
167c478bd9Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
177c478bd9Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
187c478bd9Sstevel@tonic-gate  *
197c478bd9Sstevel@tonic-gate  * CDDL HEADER END
20*0ea5e3a5Sjjj  *
21*0ea5e3a5Sjjj  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
227c478bd9Sstevel@tonic-gate  * Use is subject to license terms.
237c478bd9Sstevel@tonic-gate  */
247c478bd9Sstevel@tonic-gate /* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */
257c478bd9Sstevel@tonic-gate /* All Rights Reserved */
267c478bd9Sstevel@tonic-gate /*
277c478bd9Sstevel@tonic-gate  * University Copyright- Copyright (c) 1982, 1986, 1988
287c478bd9Sstevel@tonic-gate  * The Regents of the University of California
297c478bd9Sstevel@tonic-gate  * All Rights Reserved
307c478bd9Sstevel@tonic-gate  *
317c478bd9Sstevel@tonic-gate  * University Acknowledgment- Portions of this document are derived from
327c478bd9Sstevel@tonic-gate  * software developed by the University of California, Berkeley, and its
337c478bd9Sstevel@tonic-gate  * contributors.
347c478bd9Sstevel@tonic-gate  */
357c478bd9Sstevel@tonic-gate 
367c478bd9Sstevel@tonic-gate /*
377c478bd9Sstevel@tonic-gate  * rpcbind.h
387c478bd9Sstevel@tonic-gate  * The common header declarations
397c478bd9Sstevel@tonic-gate  */
407c478bd9Sstevel@tonic-gate 
417c478bd9Sstevel@tonic-gate #ifndef _RPCBIND_H
427c478bd9Sstevel@tonic-gate #define	_RPCBIND_H
437c478bd9Sstevel@tonic-gate 
447c478bd9Sstevel@tonic-gate #pragma ident	"%Z%%M%	%I%	%E% SMI"
457c478bd9Sstevel@tonic-gate 
467c478bd9Sstevel@tonic-gate #ifdef PORTMAP
477c478bd9Sstevel@tonic-gate #include <rpc/pmap_prot.h>
487c478bd9Sstevel@tonic-gate #endif
497c478bd9Sstevel@tonic-gate #include <rpc/rpcb_prot.h>
507c478bd9Sstevel@tonic-gate 
517c478bd9Sstevel@tonic-gate #include <tcpd.h>
527c478bd9Sstevel@tonic-gate 
537c478bd9Sstevel@tonic-gate #ifdef	__cplusplus
547c478bd9Sstevel@tonic-gate extern "C" {
557c478bd9Sstevel@tonic-gate #endif
567c478bd9Sstevel@tonic-gate 
577c478bd9Sstevel@tonic-gate extern int debugging;
587c478bd9Sstevel@tonic-gate extern int doabort;
597c478bd9Sstevel@tonic-gate extern rpcblist_ptr list_rbl;	/* A list of version 3 & 4 rpcbind services */
607c478bd9Sstevel@tonic-gate extern char *loopback_dg;	/* CLTS loopback transport, for set/unset */
617c478bd9Sstevel@tonic-gate extern char *loopback_vc;	/* COTS loopback transport, for set/unset */
627c478bd9Sstevel@tonic-gate extern char *loopback_vc_ord;	/* COTS_ORD loopback transport, for set/unset */
637c478bd9Sstevel@tonic-gate 
647c478bd9Sstevel@tonic-gate #ifdef PORTMAP
657c478bd9Sstevel@tonic-gate extern pmaplist *list_pml;	/* A list of version 2 rpcbind services */
667c478bd9Sstevel@tonic-gate extern char *udptrans;		/* Name of UDP transport */
677c478bd9Sstevel@tonic-gate extern char *tcptrans;		/* Name of TCP transport */
687c478bd9Sstevel@tonic-gate extern char *udp_uaddr;		/* Universal UDP address */
697c478bd9Sstevel@tonic-gate extern char *tcp_uaddr;		/* Universal TCP address */
707c478bd9Sstevel@tonic-gate #endif
717c478bd9Sstevel@tonic-gate 
727c478bd9Sstevel@tonic-gate extern char *mergeaddr();
737c478bd9Sstevel@tonic-gate extern int add_bndlist();
747c478bd9Sstevel@tonic-gate extern int create_rmtcall_fd();
757c478bd9Sstevel@tonic-gate extern bool_t is_bound();
767c478bd9Sstevel@tonic-gate extern void my_svc_run();
777c478bd9Sstevel@tonic-gate 
787c478bd9Sstevel@tonic-gate /* TCP wrapper functions and variables. */
797c478bd9Sstevel@tonic-gate extern boolean_t localxprt(SVCXPRT *, boolean_t);
807c478bd9Sstevel@tonic-gate extern void qsyslog(int pri, const char *fmt, ...);
817c478bd9Sstevel@tonic-gate extern boolean_t rpcb_check(SVCXPRT *, rpcproc_t, boolean_t);
827c478bd9Sstevel@tonic-gate extern void rpcb_log(boolean_t, SVCXPRT *, rpcproc_t, rpcprog_t, boolean_t);
83*0ea5e3a5Sjjj extern boolean_t allow_indirect, wrap_enabled, verboselog, local_only;
847c478bd9Sstevel@tonic-gate 
857c478bd9Sstevel@tonic-gate #define	svc_getgencaller(transp) \
867c478bd9Sstevel@tonic-gate 	((struct sockaddr_gen *)svc_getrpccaller((transp))->buf)
877c478bd9Sstevel@tonic-gate 
887c478bd9Sstevel@tonic-gate #define	RPCB_CHECK(xprt, proc) \
89*0ea5e3a5Sjjj 	if ((wrap_enabled || local_only) && \
90*0ea5e3a5Sjjj 	    !rpcb_check((xprt), (proc), B_FALSE)) \
917c478bd9Sstevel@tonic-gate 		return
927c478bd9Sstevel@tonic-gate 
937c478bd9Sstevel@tonic-gate #define	PMAP_CHECK(xprt, proc) \
94*0ea5e3a5Sjjj 	if ((wrap_enabled || local_only) && \
95*0ea5e3a5Sjjj 	    !rpcb_check((xprt), (proc), B_TRUE)) \
967c478bd9Sstevel@tonic-gate 		return
977c478bd9Sstevel@tonic-gate 
987c478bd9Sstevel@tonic-gate #define	PMAP_CHECK_RET(xprt, proc, ret) \
99*0ea5e3a5Sjjj 	if ((wrap_enabled || local_only) && \
100*0ea5e3a5Sjjj 	    !rpcb_check((xprt), (proc), B_TRUE)) \
1017c478bd9Sstevel@tonic-gate 		return (ret)
1027c478bd9Sstevel@tonic-gate 
1037c478bd9Sstevel@tonic-gate #define	RPCB_LOG(xprt, proc, prog) \
1047c478bd9Sstevel@tonic-gate 	if (wrap_enabled) \
1057c478bd9Sstevel@tonic-gate 	    rpcb_log(B_TRUE, (xprt), (proc), (prog), B_FALSE)
1067c478bd9Sstevel@tonic-gate 
1077c478bd9Sstevel@tonic-gate #define	PMAP_LOG(ans, xprt, proc, prog) \
1087c478bd9Sstevel@tonic-gate 	if (wrap_enabled) \
1097c478bd9Sstevel@tonic-gate 	    rpcb_log(ans, (xprt), (proc), (prog), B_TRUE)
1107c478bd9Sstevel@tonic-gate 
1117c478bd9Sstevel@tonic-gate extern bool_t map_set(), map_unset();
1127c478bd9Sstevel@tonic-gate 
1137c478bd9Sstevel@tonic-gate /* Statistics gathering functions */
1147c478bd9Sstevel@tonic-gate extern void rpcbs_procinfo();
1157c478bd9Sstevel@tonic-gate extern void rpcbs_set();
1167c478bd9Sstevel@tonic-gate extern void rpcbs_unset();
1177c478bd9Sstevel@tonic-gate extern void rpcbs_getaddr();
1187c478bd9Sstevel@tonic-gate extern void rpcbs_rmtcall();
1197c478bd9Sstevel@tonic-gate extern rpcb_stat_byvers *rpcbproc_getstat();
1207c478bd9Sstevel@tonic-gate 
1217c478bd9Sstevel@tonic-gate extern struct netconfig *rpcbind_get_conf();
12286632942Sssdevi extern void rpcbind_abort() __NORETURN;
1237c478bd9Sstevel@tonic-gate 
1247c478bd9Sstevel@tonic-gate /* Common functions shared between versions */
1257c478bd9Sstevel@tonic-gate extern void rpcbproc_callit_com();
1267c478bd9Sstevel@tonic-gate extern bool_t *rpcbproc_set_com();
1277c478bd9Sstevel@tonic-gate extern bool_t *rpcbproc_unset_com();
1287c478bd9Sstevel@tonic-gate extern ulong_t *rpcbproc_gettime_com();
1297c478bd9Sstevel@tonic-gate extern struct netbuf *rpcbproc_uaddr2taddr_com();
1307c478bd9Sstevel@tonic-gate extern char **rpcbproc_taddr2uaddr_com();
1317c478bd9Sstevel@tonic-gate extern char **rpcbproc_getaddr_com();
1327c478bd9Sstevel@tonic-gate extern void delete_prog();
1337c478bd9Sstevel@tonic-gate 
1347c478bd9Sstevel@tonic-gate extern uid_t rpcb_caller_uid(SVCXPRT *);
1357c478bd9Sstevel@tonic-gate 
1367c478bd9Sstevel@tonic-gate /* For different getaddr semantics */
1377c478bd9Sstevel@tonic-gate #define	RPCB_ALLVERS 0
1387c478bd9Sstevel@tonic-gate #define	RPCB_ONEVERS 1
1397c478bd9Sstevel@tonic-gate 
1407c478bd9Sstevel@tonic-gate #ifdef	__cplusplus
1417c478bd9Sstevel@tonic-gate }
1427c478bd9Sstevel@tonic-gate #endif
1437c478bd9Sstevel@tonic-gate 
1447c478bd9Sstevel@tonic-gate #endif /* _RPCBIND_H */
145