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
5cb5caa98Sdjl  * Common Development and Distribution License (the "License").
6cb5caa98Sdjl  * 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
207c478bd9Sstevel@tonic-gate  */
217257d1b4Sraf 
227c478bd9Sstevel@tonic-gate /*
237257d1b4Sraf  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
247c478bd9Sstevel@tonic-gate  * Use is subject to license terms.
257c478bd9Sstevel@tonic-gate  */
267c478bd9Sstevel@tonic-gate 
277c478bd9Sstevel@tonic-gate /*
287c478bd9Sstevel@tonic-gate  * nis_common.h
297c478bd9Sstevel@tonic-gate  *
307c478bd9Sstevel@tonic-gate  * Common code and structures used by name-service-switch "nis" backends.
317c478bd9Sstevel@tonic-gate  */
327c478bd9Sstevel@tonic-gate 
337c478bd9Sstevel@tonic-gate #ifndef _NIS_COMMON_H
347c478bd9Sstevel@tonic-gate #define	_NIS_COMMON_H
357c478bd9Sstevel@tonic-gate 
367c478bd9Sstevel@tonic-gate #include <nss_dbdefs.h>
37*2b4a7802SBaban Kenkre #include <stdlib.h>
38*2b4a7802SBaban Kenkre #include <strings.h>
397c478bd9Sstevel@tonic-gate #include <signal.h>
407c478bd9Sstevel@tonic-gate #include <rpcsvc/ypclnt.h>
417c478bd9Sstevel@tonic-gate #include <rpcsvc/yp_prot.h>
427c478bd9Sstevel@tonic-gate 
437c478bd9Sstevel@tonic-gate #ifdef	__cplusplus
447c478bd9Sstevel@tonic-gate extern "C" {
457c478bd9Sstevel@tonic-gate #endif
467c478bd9Sstevel@tonic-gate 
477c478bd9Sstevel@tonic-gate #define	NIS_MAP_AUDITUSER	"audit_user"
487c478bd9Sstevel@tonic-gate #define	NIS_MAP_AUTHATTR	"auth_attr"
497c478bd9Sstevel@tonic-gate #define	NIS_MAP_EXECATTR	"exec_attr"
507c478bd9Sstevel@tonic-gate #define	NIS_MAP_PROFATTR	"prof_attr"
517c478bd9Sstevel@tonic-gate #define	NIS_MAP_USERATTR	"user_attr"
527c478bd9Sstevel@tonic-gate 
537c478bd9Sstevel@tonic-gate 
547c478bd9Sstevel@tonic-gate typedef struct nis_backend *nis_backend_ptr_t;
557c478bd9Sstevel@tonic-gate typedef nss_status_t	(*nis_backend_op_t)(nis_backend_ptr_t, void *);
567c478bd9Sstevel@tonic-gate 
577c478bd9Sstevel@tonic-gate struct nis_backend {
587c478bd9Sstevel@tonic-gate 	nis_backend_op_t	*ops;
597c478bd9Sstevel@tonic-gate 	nss_dbop_t		n_ops;
607c478bd9Sstevel@tonic-gate 	const char		*domain;
617c478bd9Sstevel@tonic-gate 	const char		*enum_map;
627c478bd9Sstevel@tonic-gate 	char			*enum_key;
637c478bd9Sstevel@tonic-gate 	int			enum_keylen;
647c478bd9Sstevel@tonic-gate };
657c478bd9Sstevel@tonic-gate 
667c478bd9Sstevel@tonic-gate /*
677c478bd9Sstevel@tonic-gate  * Iterator function for _nss_nis_do_all(), which probably calls yp_all().
687c478bd9Sstevel@tonic-gate  *   NSS_NOTFOUND means "keep enumerating", NSS_SUCCESS means"return now",
697c478bd9Sstevel@tonic-gate  *   other values don't make much sense.  In other words we're abusing
707c478bd9Sstevel@tonic-gate  *   (overloading) the meaning of nss_status_t, but hey...
717c478bd9Sstevel@tonic-gate  * _nss_nis_XY_all() is a wrapper around _nss_nis_do_all() that does the
727c478bd9Sstevel@tonic-gate  *   generic work for nss_XbyY_args_t backends (calls cstr2ent etc).
737c478bd9Sstevel@tonic-gate  */
747c478bd9Sstevel@tonic-gate typedef nss_status_t	(*nis_do_all_func_t)(const char *, int, void *priv);
757c478bd9Sstevel@tonic-gate typedef int		(*nis_XY_check_func)(nss_XbyY_args_t *);
767c478bd9Sstevel@tonic-gate 
777c478bd9Sstevel@tonic-gate extern nss_backend_t	*_nss_nis_constr(nis_backend_op_t	*ops,
787c478bd9Sstevel@tonic-gate 					int			n_ops,
797c478bd9Sstevel@tonic-gate 					const char		*map);
807c478bd9Sstevel@tonic-gate extern nss_status_t	_nss_nis_destr(nis_backend_ptr_t, void *dummy);
817c478bd9Sstevel@tonic-gate extern nss_status_t	_nss_nis_setent(nis_backend_ptr_t, void *dummy);
827c478bd9Sstevel@tonic-gate extern nss_status_t  	_nss_nis_endent(nis_backend_ptr_t, void *dummy);
837c478bd9Sstevel@tonic-gate extern nss_status_t  	_nss_nis_getent_rigid(nis_backend_ptr_t, void *);
847c478bd9Sstevel@tonic-gate extern nss_status_t  	_nss_nis_getent_netdb(nis_backend_ptr_t, void *);
857c478bd9Sstevel@tonic-gate extern nss_status_t 	_nss_nis_do_all(nis_backend_ptr_t,
867c478bd9Sstevel@tonic-gate 					void			*func_priv,
877c478bd9Sstevel@tonic-gate 					const char		*filter,
887c478bd9Sstevel@tonic-gate 					nis_do_all_func_t	func);
897c478bd9Sstevel@tonic-gate extern nss_status_t 	_nss_nis_XY_all(nis_backend_ptr_t,
907c478bd9Sstevel@tonic-gate 					nss_XbyY_args_t		*check_args,
917c478bd9Sstevel@tonic-gate 					int			netdb,
927c478bd9Sstevel@tonic-gate 					const char		*filter,
937c478bd9Sstevel@tonic-gate 					nis_XY_check_func	check);
947c478bd9Sstevel@tonic-gate extern nss_status_t	_nss_nis_lookup(nis_backend_ptr_t,
957c478bd9Sstevel@tonic-gate 					nss_XbyY_args_t		*args,
967c478bd9Sstevel@tonic-gate 					int			netdb,
977c478bd9Sstevel@tonic-gate 					const char		*map,
987c478bd9Sstevel@tonic-gate 					const char		*key,
997c478bd9Sstevel@tonic-gate 					int			*yp_statusp);
1007c478bd9Sstevel@tonic-gate extern nss_status_t _nss_nis_lookup_rsvdport(nis_backend_ptr_t   be,
1017c478bd9Sstevel@tonic-gate 					nss_XbyY_args_t	*args,
1027c478bd9Sstevel@tonic-gate 					int netdb,
1037c478bd9Sstevel@tonic-gate 					const char	*map,
1047c478bd9Sstevel@tonic-gate 					const char	*key,
1057c478bd9Sstevel@tonic-gate 					int	*ypstatusp);
1067c478bd9Sstevel@tonic-gate 
1077c478bd9Sstevel@tonic-gate /* Lower-level interface */
1087c478bd9Sstevel@tonic-gate extern nss_status_t	_nss_nis_ypmatch(const char		*domain,
1097c478bd9Sstevel@tonic-gate 					const char		*map,
1107c478bd9Sstevel@tonic-gate 					const char		*key,
1117c478bd9Sstevel@tonic-gate 					char			**valp,
1127c478bd9Sstevel@tonic-gate 					int			*vallenp,
1137c478bd9Sstevel@tonic-gate 					int			*yp_statusp);
1147c478bd9Sstevel@tonic-gate extern const char	*_nss_nis_domain();
1157c478bd9Sstevel@tonic-gate extern int __nss2herrno(nss_status_t nsstat);
1167257d1b4Sraf extern int thr_sigsetmask(int how, const sigset_t *set, sigset_t *oset);
117cb5caa98Sdjl extern int _nss_nis_check_name_aliases(nss_XbyY_args_t *argp,
118cb5caa98Sdjl 					const char *line,
119cb5caa98Sdjl 					int linelen);
1207c478bd9Sstevel@tonic-gate 
1217c478bd9Sstevel@tonic-gate /* private yp "configurable lookup persistence" interface in libnsl */
1227c478bd9Sstevel@tonic-gate extern int __yp_match_cflookup(char *, char *, char *, int, char **,
1237c478bd9Sstevel@tonic-gate 			    int *, int *);
1247c478bd9Sstevel@tonic-gate extern int __yp_match_rsvdport_cflookup(char *, char *, char *, int, char **,
1257c478bd9Sstevel@tonic-gate 				    int *, int *);
1267c478bd9Sstevel@tonic-gate extern int __yp_first_cflookup(char *, char *, char **, int *, char **,
1277c478bd9Sstevel@tonic-gate 			    int *, int);
1287c478bd9Sstevel@tonic-gate 
1297c478bd9Sstevel@tonic-gate extern int __yp_next_cflookup(char *, char *, char *, int, char **, int *,
1307c478bd9Sstevel@tonic-gate 			    char **, int  *, int);
1317c478bd9Sstevel@tonic-gate 
1327c478bd9Sstevel@tonic-gate extern int __yp_all_cflookup(char *, char *, struct ypall_callback *, int);
1337c478bd9Sstevel@tonic-gate 
134*2b4a7802SBaban Kenkre /* functions to validate passwd and group ids */
135*2b4a7802SBaban Kenkre extern int validate_passwd_ids(char **linepp, int *linelenp, int allocbuf);
136*2b4a7802SBaban Kenkre extern int validate_group_ids(char **linepp, int *linelenp, int allocbuf);
137*2b4a7802SBaban Kenkre 
1387c478bd9Sstevel@tonic-gate #ifdef	__cplusplus
1397c478bd9Sstevel@tonic-gate }
1407c478bd9Sstevel@tonic-gate #endif
1417c478bd9Sstevel@tonic-gate 
1427c478bd9Sstevel@tonic-gate #endif /* _NIS_COMMON_H */
143