xref: /titanic_41/usr/src/lib/libnsl/common/llib-lnsl (revision aa98ce2c4ecbce8afe8b7b253a911ab24fdded32)
1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21
22/*
23 * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
24 * Use is subject to license terms.
25 *
26 * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
27 */
28
29
30/* LINTLIBRARY */
31/* PROTOLIB1 */
32
33#include <sys/types.h>
34#include <thread.h>
35#include <synch.h>
36#include <fcntl.h>
37#include <sys/des.h>
38#include <des/softdes.h>
39#include <des/desdata.h>
40#include <rpc/rpc.h>
41#include <rpc/key_prot.h>
42#include <rpc/des_crypt.h>
43#include <rpc/pmap_prot.h>
44#include <sys/ioctl.h>
45#include <netdir.h>
46#include <nss_netdir.h>
47#include <nss_dbdefs.h>
48#include <sac.h>
49#include <netconfig.h>
50#include <ndbm.h>
51#include <rpcsvc/yp_prot.h>
52#include <rpcsvc/ypclnt.h>
53#include <rpcsvc/yppasswd.h>
54#include <rpcsvc/ypupd.h>
55#include <rpcsvc/nis.h>
56#include <rpcsvc/nislib.h>
57#include <sys/stream.h>
58#include <sys/stropts.h>
59#include <sys/tihdr.h>
60#include <sys/timod.h>
61#include <tiuser.h>
62
63
64/*
65 * Declare t_errno, even though this file is compiled '_REENTRANT'.  This
66 * way t_errno is defined in the lint library, which is used for programs
67 * compiled with _REENTRANT and those compiled without it.
68 */
69#ifdef t_errno
70#undef t_errno
71#endif
72extern int t_errno;
73
74/*
75 * usr/src/lib/libnsl/common routines
76 */
77
78/* common.c */
79
80/*
81 * usr/src/lib/libnsl/des routines
82 */
83
84/* des_crypt.c */
85int cbc_crypt(char *key, char *buf, size_t len, uint_t mode, char *ivec);
86int ecb_crypt(char *key, char *buf, size_t len, uint_t mode);
87
88/* des_soft.c */
89void des_setparity(char *p);
90int __des_crypt(char *buf, unsigned len, struct desparams *desp);
91
92/* intl_crypt.c */
93
94/* intl_soft.c */
95int _des_crypt(char *buf, unsigned len, struct desparams *desp);
96
97/*
98 * usr/src/lib/libnsl/dial routines
99 */
100
101/* callers.c */
102
103/* conn.c */
104
105/* dial.c */
106void undial(int fd);
107
108/* getargs.c */
109
110/* interface.c */
111
112/* line.c */
113
114/* stoa.c */
115
116/* strecpy.c */
117
118/* strsave.c */
119
120/* sysfiles.c */
121
122/* ulockf.c */
123
124/* uucpdefs.c */
125
126/*
127 * usr/src/lib/libnsl/key routines
128 */
129
130/* gen_dhkeys.c */
131void __gen_dhkeys(char *public, char *secret, char *pass);
132
133/* publickey.c */
134int getpublickey(const char *netname, char *pkey);
135int __getpublickey_cached(char *netname, char *pkey, int *from_cache);
136void __getpublickey_flush(const char *netname);
137int getsecretkey(const char *netname, char *skey, const char *passwd);
138
139/* xcrypt.c */
140int xencrypt(char *secret, char *passwd);
141int xdecrypt(char *secret, char *passwd);
142int passwd2des(char *pw, char *key);
143
144/*
145 * usr/src/lib/libnsl/netdir routines
146 */
147
148/* netdir.c */
149int *__nderror(void);
150int netdir_getbyname(struct netconfig *tp, struct nd_hostserv *serv,
151				struct nd_addrlist **addrs);
152int netdir_getbyaddr(struct netconfig *tp, struct nd_hostservlist **serv,
153				struct netbuf *addr);
154int __netdir_getbyaddr_nosrv(struct netconfig *tp,
155				struct nd_hostservlist **serv,
156				struct netbuf *addr);
157int netdir_options(struct netconfig *tp, int option, int fd, char *par);
158struct netbuf *uaddr2taddr(struct netconfig *tp, char *addr);
159char *taddr2uaddr(struct netconfig *tp, struct netbuf *addr);
160void netdir_free(void *ptr, int type);
161char *netdir_sperror(void);
162void netdir_perror(char *s);
163
164/*
165 * usr/src/lib/libnsl/netselect routines
166 */
167
168/* netselect.c */
169void *setnetconfig(void);
170int endnetconfig(void *vdata);
171struct netconfig *getnetconfig(void *vdata);
172struct netconfig *getnetconfigent(const char *netid);
173void freenetconfigent(struct netconfig *netp);
174void *setnetpath(void);
175int endnetpath(void *vdata);
176struct netconfig *getnetpath(void *vdata);
177char *nc_sperror(void);
178void nc_perror(const char *string);
179
180/*
181 * usr/src/lib/libnsl/nis/gen routines
182 */
183
184/* nis_subr.c */
185name_pos nis_dir_cmp(nis_name n1, nis_name n2);
186nis_name nis_local_group(void);
187nis_name nis_domain_of(char *s);
188nis_name nis_leaf_of_r(const nis_name  s, char *buf, size_t bufsize);
189nis_name nis_leaf_of(char *s);
190nis_name nis_name_of(char *s);
191nis_name nis_local_directory(void);
192nis_name nis_local_host(void);
193void nis_destroy_object(nis_object *obj);
194nis_object *nis_clone_object(nis_object *obj, nis_object *dest);
195nis_object *nis_read_obj(char *f);
196int nis_write_obj(char *f, nis_object *o);
197void *nis_get_static_storage(struct nis_sdata *bs, u_int el, u_int nel);
198/*
199 * char *nis_old_data(char *s);
200 * char *nis_data(char *s);
201 */
202
203/* nis_xdr.c */
204bool_t xdr_nis_attr(XDR *xdrs, nis_attr *objp);
205bool_t xdr_nis_name(XDR *xdrs, nis_name *objp);
206bool_t xdr_endpoint(XDR *xdrs, endpoint *objp);
207bool_t xdr_nis_server(XDR *xdrs, nis_server *objp);
208bool_t xdr_directory_obj(XDR *xdrs, directory_obj *objp);
209bool_t xdr_entry_obj(XDR *xdrs, entry_obj *objp);
210bool_t xdr_table_obj(XDR *xdrs, table_obj *objp);
211bool_t xdr_objdata(XDR *xdrs, objdata *objp);
212bool_t xdr_nis_oid(XDR *xdrs, nis_oid *objp);
213bool_t xdr_nis_object(XDR *xdrs, nis_object *objp);
214bool_t xdr_nis_object(XDR *xdrs, nis_object *objp);
215bool_t xdr_log_entry_t(XDR *xdrs, log_entry_t *objp);
216bool_t xdr_log_entry(XDR *xdrs, log_entry *objp);
217bool_t xdr_nis_tag(XDR *xdrs, nis_tag *objp);
218bool_t xdr_nis_bound_endpoint(XDR *xdrs, nis_bound_endpoint *objp);
219bool_t xdr_nis_bound_directory(XDR *xdrs, nis_bound_directory *objp);
220bool_t xdr_nis_active_endpoint(XDR *xdrs, nis_active_endpoint *objp);
221
222/* thr_misc.c */
223
224/*
225 * usr/src/lib/libnsl/nsl routines
226 */
227
228/* _conn_util.c */
229
230/* _data2.c */
231
232/* _errlst.c */
233int *__t_errno(void);
234
235/* _utility.c */
236
237/* t_accept.c */
238int t_accept(int, int, struct t_call *);
239
240/* t_alloc.c */
241char *t_alloc(int, int, int);
242
243/* t_bind.c */
244int t_bind(int, struct t_bind *, struct t_bind *);
245
246/* t_close.c */
247int t_close(int);
248
249/* t_connect.c */
250int t_connect(int, struct t_call *, struct t_call *);
251
252/* t_error.c */
253void t_error(const char *);
254
255/* t_free.c */
256int t_free(char *, int);
257
258/* t_getinfo.c */
259int t_getinfo(int, struct t_info *);
260
261/* t_getname.c */
262int t_getname(int, struct netbuf *, int);
263
264/* t_getstate.c */
265int t_getstate(int);
266
267/* t_listen.c */
268int t_listen(int, struct t_call *);
269
270/* t_look.c */
271int t_look(int);
272
273/* t_open.c */
274int t_open(const char *, int, struct t_info *);
275
276/* t_optmgmt.c */
277int t_optmgmt(int, struct t_optmgmt *, struct t_optmgmt *);
278
279/* t_rcv.c */
280int t_rcv(int, char *, unsigned, int *);
281
282/* t_rcvconnect.c */
283int t_rcvconnect(int, struct t_call *);
284
285/* t_rcvdis.c */
286int t_rcvdis(int, struct t_discon *);
287
288/* t_rcvrel.c */
289int t_rcvrel(int);
290
291/* t_rcvudata.c */
292int t_rcvudata(int, struct t_unitdata *, int *);
293
294/* t_rcvuderr.c */
295int t_rcvuderr(int, struct t_uderr *);
296
297/* t_snd.c */
298int t_snd(int, char *, unsigned, int);
299
300/* t_snddis */
301int t_snddis(int, struct t_call *);
302
303/* t_sndrel.c */
304int t_sndrel(int);
305
306/* t_sndudata.c */
307int t_sndudata(int, struct t_unitdata *);
308
309/* t_strerror.c */
310char *t_strerror(int);
311
312/* t_sync.c */
313int t_sync(int);
314
315/* t_unbind.c */
316int t_unbind(int);
317
318/*
319 * struct t_iovec is defined in <xti.h>. But <xti.h> cannot be included
320 * because inclusion of <xti.h> and <tiuser.h> are mututally exclusive
321 * and <tiuser.h> is exposed by the inclusion of <rpc/rpc.h>. Needs to
322 * be seen how to build llib-lnsl.ln from multiple source files to avoid
323 * this problem.
324 */
325struct t_iovec {
326	void	*iov_base;
327	size_t	iov_len;
328};
329
330/* t_sndv.c */
331int t_sndv(int, const struct t_iovec *,  unsigned int, int);
332
333/* t_sndvudata.c */
334int t_sndvudata(int, struct t_unitdata *, struct t_iovec *, unsigned int);
335
336/* t_sndreldata.c */
337int t_sndreldata(int, struct t_discon *);
338
339/* t_rcvv.c */
340int t_rcvv(int, struct t_iovec *, unsigned int, int *);
341
342/* t_rcvvudata.c */
343int t_rcvvudata(int, struct t_unitdata *, struct t_iovec *,
344        unsigned int, int *);
345
346/* t_rcvreldata.c */
347extern int t_rcvreldata(int, struct t_discon *);
348
349/* t_sysconf.c */
350int t_sysconf(int);
351
352/* xti_wrappers.c */
353int _xti_accept(int, int, struct t_call *);
354int _xti_xns5_accept(int, int, struct t_call *);
355char *_xti_alloc(int, int, int);
356int _xti_bind(int, struct t_bind *, struct t_bind *);
357int _xti_close(int);
358int _xti_connect(int, struct t_call *, struct t_call *);
359int _xti_error(char *);
360int _xti_free(char *, int);
361int _xti_getinfo(int, struct t_info *);
362int _xti_getprotaddr(int, struct t_bind *, struct t_bind *);
363int _xti_getstate(int);
364int _xti_listen(int, struct t_call *);
365int _xti_look(int);
366int _xti_open(char *, int, struct t_info *);
367int _xti_optmgmt(int, struct t_optmgmt *, struct t_optmgmt *);
368int _xti_rcv(int, char *, unsigned int, int *);
369int _xti_rcvconnect(int, struct t_call *);
370int _xti_rcvdis(int, struct t_discon *);
371int _xti_rcvrel(int);
372int _xti_rcvreldata(int, struct t_discon *);
373int _xti_rcvudata(int, struct t_unitdata *, int *);
374int _xti_rcvuderr(int, struct t_uderr *);
375int _xti_rcvv(int, struct t_iovec *, unsigned int, int *);
376int _xti_rcvvudata(int, struct t_unitdata *, struct t_iovec *,
377    unsigned int, int *);
378int _xti_snd(int, char *, unsigned int, int);
379int _xti_xns5_snd(int, char *, unsigned int, int);
380int _xti_snddis(int, struct t_call *);
381int _xti_sndrel(int);
382int _xti_sndreldata(int, struct t_discon *);
383int _xti_sndudata(int, struct t_unitdata *);
384int _xti_sndv(int, const struct t_iovec *, unsigned int, int);
385int _xti_sndvudata(int, struct t_unitdata *, struct t_iovec *, unsigned int);
386char *_xti_strerror(int);
387int _xti_sync(int);
388int _xti_sysconf(int);
389int _xti_unbind(int);
390
391/*
392 * usr/src/lib/libnsl/nss routines
393 */
394
395/* gethostby_door.c */
396
397/* gethostbyname_r.c */
398struct hostent *_uncached_gethostbyname_r(const char *nam,
399				struct hostent *result,
400				char *buffer, int buflen, int *h_errnop);
401struct hostent *_uncached_gethostbyaddr_r(const char *addr, int length,
402				int type, struct hostent *result,
403				char *buffer, int buflen, int *h_errnop);
404struct hostent *gethostbyname_r(const char *nam, struct hostent *result,
405				char *buffer, int buflen, int *h_errnop);
406struct hostent *gethostbyaddr_r(const char *addr, int length, int type,
407				struct hostent *result,
408				char *buffer, int buflen, int *h_errnop);
409
410/* gethostent.c */
411struct hostent *gethostbyname(const char *nam);
412struct hostent *gethostbyaddr(const void *addr, socklen_t len, int type);
413struct hostent *gethostent(void);
414
415/* gethostent_r.c */
416int sethostent(int stay);
417int endhostent(void);
418struct hostent *gethostent_r(struct hostent *result, char *buffer, int buflen,
419				int *h_errnop);
420
421/* getipnodeby.c */
422void freehostent(struct hostent *hent);
423struct hostent *getipnodebyaddr(const void *src, size_t len, int type,
424				int *error_num);
425struct hostent *getipnodebyname(const char *name, int af, int flags,
426				int *error_num);
427
428/* getrpcent.c */
429struct rpcent *getrpcbyname(const char *nam);
430struct rpcent *getrpcbynumber(const int num);
431struct rpcent *getrpcent(void);
432
433/* getrpcent_r.c */
434struct rpcent *getrpcbyname_r(const char *name, struct rpcent *result,
435				char *buffer, int buflen);
436struct rpcent *getrpcbynumber_r(const int number, struct rpcent *result,
437				char *buffer, int buflen);
438void setrpcent(const int stay);
439void endrpcent(void);
440struct rpcent *getrpcent_r(struct rpcent *result, char *buffer, int buflen);
441
442/* inet_matchaddr.c */
443boolean_t inet_matchaddr(const void *, const char *);
444
445/* inet_ntop.c */
446const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);
447
448/* inet_pton.c */
449int inet_pton(int af, const char *src, void *dst);
450
451/* netdir_inet.c */
452int _get_hostserv_inetnetdir_byname(struct netconfig *nconf,
453				struct nss_netdirbyname_in *args,
454				union nss_netdirbyname_out *res);
455int _get_hostserv_inetnetdir_byaddr(struct netconfig *nconf,
456				struct nss_netdirbyaddr_in *args,
457				union nss_netdirbyaddr_out *res);
458int __nss2herrno(nss_status_t nsstat);
459nss_status_t _herrno2nss(int h_errno);
460struct hostent *_switch_gethostbyname_r(const char *name,
461				struct hostent *result,
462				char *buffer, int buflen, int *h_errnop);
463struct hostent *_switch_gethostbyaddr_r(const char *addr, int len, int type,
464				struct hostent *result,
465				char *buffer, int buflen, int *h_errnop);
466int str2servent(const char *instr, int lenstr, void *ent,
467				char *buffer, int buflen);
468void *__inet_get_local_interfaces(void);
469void __inet_free_local_interfaces(void *p);
470int __inet_address_is_local(void *p, struct in_addr addr);
471int __inet_uaddr_is_local(void *p, struct netconfig *nc, char *uaddr);
472int __inet_address_count(void *p);
473ulong_t __inet_get_addr(void *p, int n);
474char *__inet_get_uaddr(void *p, struct netconfig *nc, int n);
475char *__inet_get_networka(void *p, int n);
476
477/* netdir_inet_sundry.c */
478
479/*
480 * usr/src/lib/libnsl/rpc routines
481 */
482
483/* auth_des.c */
484AUTH *authdes_seccreate(const char *servername, uint_t win,
485			const char *timehost, const des_block *ckey);
486
487/* auth_none.c */
488AUTH *authnone_create(void);
489
490/* auth_sys.c */
491AUTH *authsys_create(const char *machname, uid_t uid, gid_t gid, int len,
492			const gid_t *aup_gids);
493AUTH *authsys_create_default(void);
494
495/* auth_time.c */
496
497/* authdes_prot.c */
498bool_t xdr_authdes_cred(XDR *xdrs, struct authdes_cred *cred);
499bool_t xdr_authdes_verf(XDR *xdrs, struct authdes_verf *verf);
500
501/* authsys_prot.c */
502bool_t xdr_authsys_parms(XDR *xdrs, struct authsys_parms *p);
503bool_t xdr_uid_t(XDR *xdrs, uid_t *ip);
504bool_t xdr_gid_t(XDR *xdrs, gid_t *ip);
505
506/* clnt_bcast.c */
507enum clnt_stat rpc_broadcast_exp(rpcprog_t prog, rpcvers_t vers, rpcproc_t proc,
508		xdrproc_t xargs, caddr_t argsp, xdrproc_t xresults,
509		caddr_t resultsp, resultproc_t eachresult, int inittime,
510		int waittime, const char *netclass);
511enum clnt_stat rpc_broadcast(rpcprog_t prog, rpcvers_t vers, rpcproc_t proc,
512		xdrproc_t xargs, caddr_t argsp, xdrproc_t xresults,
513		caddr_t resultsp, resultproc_t eachresult,
514		const char *netclass);
515
516/* clnt_dg.c */
517CLIENT *clnt_dg_create(int fd, struct netbuf *svcaddr, rpcprog_t program,
518		rpcvers_t version, uint_t sendsz, uint_t recvsz);
519
520/* clnt_door.c */
521CLIENT *clnt_door_create(rpcprog_t program, rpcvers_t version, uint_t sendsz);
522
523/* clnt_generic.c */
524CLIENT *clnt_create_vers(const char *hostname, rpcprog_t prog,
525		rpcvers_t *vers_out, rpcvers_t vers_low,
526		rpcvers_t vers_high, const char *nettype);
527CLIENT *clnt_create_vers_timed(const char *hostname, rpcprog_t prog,
528		rpcvers_t *vers_out, rpcvers_t vers_low,
529		rpcvers_t vers_high, const char *nettype,
530		const struct timeval *tp);
531CLIENT *clnt_create(const char *hostname, rpcprog_t prog, rpcvers_t vers,
532		const char *nettype);
533CLIENT *clnt_create_timed(const char *hostname, rpcprog_t prog, rpcvers_t vers,
534		const char *netclass, const struct timeval *tp);
535CLIENT *clnt_tp_create(const char *hostname, rpcprog_t prog, rpcvers_t vers,
536		const struct netconfig *nconf);
537CLIENT *clnt_tp_create_timed(const char *hostname, rpcprog_t prog,
538		rpcvers_t vers, const struct netconfig *nconf,
539		const struct timeval *tp);
540CLIENT *clnt_tli_create(int fd, const struct netconfig *nconf,
541		struct netbuf *svcaddr, rpcprog_t prog, rpcvers_t vers,
542		uint_t sendsz, uint_t recvsz);
543
544/* clnt_perror.c */
545char *clnt_sperror(const CLIENT *cl, const char *s);
546void clnt_perror(const CLIENT *cl, const char *s);
547void clnt_perrno(enum clnt_stat num);
548char *clnt_spcreateerror(const char *s);
549void clnt_pcreateerror(const char *s);
550const char *clnt_sperrno(const enum clnt_stat stat);
551
552/* clnt_raw.c */
553CLIENT *clnt_raw_create(rpcprog_t prog, rpcvers_t vers);
554
555/* clnt_simple.c */
556enum clnt_stat rpc_call(const char *host, rpcprog_t prognum, rpcvers_t versnum,
557		rpcproc_t procnum, xdrproc_t inproc, const char *in,
558		xdrproc_t outproc, char *out, const char *netclass);
559
560/* clnt_vc.c */
561CLIENT *clnt_vc_create(int fd, struct netbuf *svcaddr, rpcprog_t prog,
562		rpcvers_t vers, uint_t sendsz, uint_t recvsz);
563
564/* getdname.c */
565int getdomainname(char *name, int namelen);
566int setdomainname(char *domain, int len);
567
568/* gethostname.c */
569int gethostname(char *hname, int hlen);
570
571/* inet_ntoa.c */
572char *inet_ntoa_r(struct in_addr in, char b[]);
573char *inet_ntoa(struct in_addr in);
574in_addr_t inet_addr(const char *cp);
575in_addr_t inet_netof(struct in_addr in);
576
577/* key_call.c */
578int key_setsecret(const char *secretkey);
579int key_secretkey_is_set(void);
580int key_encryptsession_pk(const char *remotename, netobj *remotekey,
581				des_block *deskey);
582int key_decryptsession_pk(const char *remotename, netobj *remotekey,
583				des_block *deskey);
584
585int key_encryptsession(const char *remotename, des_block *deskey);
586int key_decryptsession(const char *remotename, des_block *deskey);
587int key_gendes(des_block *key);
588int key_setnet(struct key_netstarg *arg);
589int key_get_conv(char *pkey, des_block *deskey);
590int key_call(ulong_t proc, xdrproc_t xdr_arg, char *arg, xdrproc_t xdr_rslt,
591				char *rslt);
592
593/* key_prot.c */
594bool_t xdr_keystatus(XDR *xdrs, keystatus *objp);
595bool_t xdr_keybuf(XDR *xdrs, keybuf objp);
596bool_t xdr_netnamestr(XDR *xdrs, netnamestr *objp);
597bool_t xdr_cryptkeyarg(XDR *xdrs, cryptkeyarg *objp);
598bool_t xdr_cryptkeyarg2(XDR *xdrs, cryptkeyarg2 *objp);
599bool_t xdr_cryptkeyres(XDR *xdrs, cryptkeyres *objp);
600bool_t xdr_unixcred(XDR *xdrs, unixcred *objp);
601bool_t xdr_getcredres(XDR *xdrs, getcredres *objp);
602bool_t xdr_key_netstarg(XDR *xdrs, key_netstarg *objp);
603bool_t xdr_key_netstres(XDR *xdrs, key_netstres *objp);
604
605/* mt_misc.c */
606#ifdef rpc_createerr
607#undef rpc_createerr
608#endif
609struct rpc_createerr *__rpc_createerr(void);
610
611/* netname.c */
612int getnetname(char *name);
613int __getnetnamebyuid(char *name, uid_t uid);
614int user2netname(char *netname, const uid_t uid, const char *domain);
615int host2netname(char *netname, const char *host, const char *domain);
616
617/* netnamer.c */
618int netname2user(const char *netname, uid_t *uidp, gid_t *gidp,
619					int *gidlenp, gid_t *gidlist);
620int netname2host(const char *netname, char *hostname, int hostlen);
621
622/* openchild.c */
623
624/* pmap_clnt.c */
625int pmap_set(rpcprog_t program, rpcvers_t version, rpcprot_t protocol, ushort_t port);
626bool_t pmap_unset(rpcprog_t program, rpcvers_t version);
627ushort_t pmap_getport(struct sockaddr_in *address, rpcprog_t program,
628			rpcvers_t version, rpcprot_t protocol);
629struct pmaplist *pmap_getmaps(struct sockaddr_in *address);
630enum clnt_stat pmap_rmtcall(struct sockaddr_in *addr, rpcprog_t prog,
631			rpcvers_t vers, rpcproc_t proc, xdrproc_t xdrargs,
632			caddr_t argsp, xdrproc_t xdrres, caddr_t resp,
633			struct timeval tout, rpcport_t *port_ptr);
634
635/* pmap_prot.c */
636bool_t xdr_pmap(XDR *xdrs, struct pmap *objp);
637bool_t xdr_pmaplist_ptr(XDR *xdrs, pmaplist_ptr *rp);
638bool_t xdr_pmaplist(XDR *xdrs, PMAPLIST **rp);
639bool_t xdr_rmtcallargs(XDR *xdrs, struct p_rmtcallargs *cap);
640bool_t xdr_rmtcallres(XDR *xdrs, struct p_rmtcallres *crp);
641
642/* rpc_callmsg.c */
643bool_t xdr_callmsg(XDR *xdrs, struct rpc_msg *cmsg);
644
645/* rpc_comdata.c */
646
647/* rpc_generic.c */
648int __rpc_dtbsize(void);
649uint_t __rpc_get_t_size(t_scalar_t size, t_scalar_t bufsize);
650uint_t __rpc_get_a_size(t_scalar_t size);
651struct netconfig *__rpc_getconfip(char *nettype);
652void *__rpc_setconf(char *nettype);
653struct netconfig *__rpc_getconf(void *vhandle);
654void __rpc_endconf(void *vhandle);
655struct netconfig *__rpcfd_to_nconf(int fd, int servtype);
656int __rpc_matchserv(int servtype, unsigned int nc_semantics);
657
658/* rpc_prot.c */
659bool_t xdr_opaque_auth(XDR *xdrs, struct opaque_auth *ap);
660bool_t xdr_des_block(XDR *xdrs, des_block *blkp);
661bool_t xdr_accepted_reply(XDR *xdrs, struct accepted_reply *ar);
662bool_t xdr_rejected_reply(XDR *xdrs, struct rejected_reply *rr);
663bool_t xdr_replymsg(XDR *xdrs, struct rpc_msg *rmsg);
664bool_t xdr_callhdr(XDR *xdrs, struct rpc_msg *cmsg);
665void __seterr_reply(struct rpc_msg *msg, struct rpc_err *error);
666
667/* rpc_sel2poll.c */
668int __rpc_select_to_poll(int fdmax, fd_set *fdset, struct pollfd *p0);
669int __rpc_timeval_to_msec(struct timeval *t);
670
671/* rpc_soc.c */
672CLIENT *clntudp_bufcreate(struct sockaddr_in *raddr, rpcprog_t prog,
673			rpcvers_t vers, struct timeval wait, int *sockp,
674			uint_t sendsz, uint_t recvsz);
675CLIENT *clntudp_create(struct sockaddr_in *raddr, rpcprog_t program,
676			rpcvers_t version, struct timeval wait, int *sockp);
677CLIENT *clnttcp_create(struct sockaddr_in *raddr, rpcprog_t prog,
678			rpcvers_t vers, int *sockp, uint_t sendsz,
679			uint_t recvsz);
680CLIENT *clntraw_create(rpcprog_t prog, rpcvers_t vers);
681SVCXPRT *svctcp_create(int fd, uint_t sendsize, uint_t recvsize);
682SVCXPRT *svcudp_bufcreate(int fd, uint_t sendsize, uint_t recvsize);
683SVCXPRT *svcfd_create(int fd, uint_t sendsize, uint_t recvsize);
684SVCXPRT *svcudp_create(int fd);
685SVCXPRT *svcraw_create(void);
686int __rpc_bindresvport(int fd, struct sockaddr_in *sin, int *portp, int qlen);
687void get_myaddress(struct sockaddr_in *addr);
688ushort_t getrpcport(char *host, rpcprog_t prognum, rpcvers_t versnum, rpcprot_t proto);
689int callrpc(char *host, rpcprog_t prognum, rpcvers_t versnum, rpcproc_t procnum,
690		xdrproc_t inproc, char *in, xdrproc_t outproc, char *out);
691int registerrpc(rpcprog_t prognum, rpcvers_t versnum, rpcproc_t procnum,
692		char *(*progname)(), xdrproc_t inproc, xdrproc_t outproc);
693enum clnt_stat clnt_broadcast(rpcprog_t prog, rpcvers_t vers, rpcproc_t proc,
694		xdrproc_t xargs, caddr_t argsp, xdrproc_t xresults,
695		caddr_t resultsp, resultproc_t eachresult);
696AUTH *authdes_create(char *servername, uint_t window,
697		struct sockaddr_in *syncaddr, des_block *ckey);
698
699/* rpc_td.c */
700
701/* rpcb_clnt.c */
702bool_t __rpc_control(int request, void *info);
703bool_t rpcb_set(rpcprog_t program, rpcvers_t version,
704		const struct netconfig *nconf, const struct netbuf *address);
705bool_t rpcb_unset(rpcprog_t program, rpcvers_t version,
706		const struct netconfig *nconf);
707int rpcb_getaddr(rpcprog_t program, rpcvers_t version,
708		const struct netconfig *nconf, struct netbuf *address,
709		const char *host);
710rpcblist *rpcb_getmaps(const struct netconfig *nconf, const char *host);
711enum clnt_stat rpcb_rmtcall(const struct netconfig *nconf, const char *host,
712		rpcprog_t prog, rpcvers_t vers, rpcproc_t proc,
713		xdrproc_t xdrargs, caddr_t argsp, xdrproc_t xdrres,
714		caddr_t resp, struct timeval tout,
715		struct netbuf *addr_ptr);
716bool_t rpcb_gettime(const char *host, time_t *timep);
717char *rpcb_taddr2uaddr(struct netconfig *nconf, struct netbuf *taddr);
718struct netbuf *rpcb_uaddr2taddr(struct netconfig *nconf, char *uaddr);
719
720/* rpcb_prot.c */
721bool_t xdr_rpcb(XDR *xdrs, RPCB *objp);
722bool_t xdr_rpcblist_ptr(XDR *xdrs, rpcblist_ptr *rp);
723bool_t xdr_rpcblist(XDR *xdrs, RPCBLIST **rp);
724bool_t xdr_rpcb_entry(XDR *xdrs, rpcb_entry *objp);
725bool_t xdr_rpcb_entry_list_ptr(XDR *xdrs, rpcb_entry_list_ptr *rp);
726bool_t xdr_rpcb_rmtcallargs(XDR *xdrs, struct r_rpcb_rmtcallargs *objp);
727bool_t xdr_rpcb_rmtcallres(XDR *xdrs, struct r_rpcb_rmtcallres *objp);
728bool_t xdr_netbuf(XDR *xdrs, struct netbuf *objp);
729
730/* rpcb_st_xdr.c */
731bool_t xdr_rpcbs_addrlist(XDR *xdrs, rpcbs_addrlist *objp);
732bool_t xdr_rpcbs_addrlist(XDR *xdrs, rpcbs_addrlist *objp);
733
734bool_t xdr_rpcbs_rmtcalllist(XDR *xdrs, rpcbs_rmtcalllist *objp);
735bool_t xdr_rpcbs_proc(XDR *xdrs, rpcbs_proc objp);
736bool_t xdr_rpcbs_addrlist_ptr(XDR *xdrs, rpcbs_addrlist_ptr *objp);
737bool_t xdr_rpcbs_rmtcalllist_ptr(XDR *xdrs, rpcbs_rmtcalllist_ptr *objp);
738bool_t xdr_rpcb_stat(XDR *xdrs, rpcb_stat *objp);
739bool_t xdr_rpcb_stat_byvers(XDR *xdrs, rpcb_stat_byvers objp);
740
741/* rpcdname.c */
742int __rpc_get_default_domain(char **domain);
743
744/* rpcsec_gss_if.c */
745AUTH *rpc_gss_seccreate(CLIENT *clnt, char *principal, char *mechanism,
746		rpc_gss_service_t service_type, char *qop,
747		rpc_gss_options_req_t *options_req,
748		rpc_gss_options_ret_t *options_ret);
749bool_t rpc_gss_set_defaults(AUTH *auth, rpc_gss_service_t service, char *qop);
750bool_t rpc_gss_get_principal_name(rpc_gss_principal_t *principal, char
751		*mechanism, char *user_name, char *node, char *secdomain);
752char **rpc_gss_get_mechanisms(void);
753char **rpc_gss_get_mech_info(char *mechanism, rpc_gss_service_t *service);
754bool_t rpc_gss_get_versions(u_int *vers_hi, u_int *vers_lo);
755bool_t rpc_gss_is_installed(char *mechanism);
756bool_t rpc_gss_set_svc_name(char *principal, char *mechanism, uint_t req_time,
757		uint_t program, uint_t version);
758bool_t rpc_gss_set_callback(rpc_gss_callback_t *cb);
759bool_t rpc_gss_getcred(struct svc_req *req, rpc_gss_rawcred_t **rcred,
760		rpc_gss_ucred_t **ucred, void **cookie);
761bool_t rpc_gss_mech_to_oid(char *mech, rpc_gss_OID *oid);
762bool_t rpc_gss_qop_to_num(char *qop, char *mech, u_int *num);
763int rpc_gss_max_data_length(AUTH *rpcgss_handle, int max_tp_unit_len);
764int rpc_gss_svc_max_data_length(struct svc_req *req, int max_tp_unit_len);
765void rpc_gss_get_error(rpc_gss_error_t *error);
766
767/* rtime_tli.c */
768int rtime_tli(char *host, struct timeval *timep, struct timeval *timeout);
769
770/* svc.c */
771void xprt_register(const SVCXPRT *xprt);
772void xprt_unregister(const SVCXPRT *xprt);
773bool_t svc_reg(const SVCXPRT *xprt, rpcprog_t prog, rpcvers_t vers,
774		void (*dispatch)(), const struct netconfig *nconf);
775void svc_unreg(rpcprog_t prog, rpcvers_t vers);
776bool_t svc_register(SVCXPRT *xprt, rpcprog_t prog, rpcvers_t vers,
777		void (*dispatch)(), int protocol);
778void svc_unregister(rpcprog_t prog, rpcvers_t vers);
779bool_t svc_sendreply(const SVCXPRT *xprt, xdrproc_t xdr_results,
780		caddr_t xdr_location);
781void svcerr_noproc(const SVCXPRT *xprt);
782void svcerr_decode(const SVCXPRT *xprt);
783void svcerr_systemerr(const SVCXPRT *xprt);
784void svcerr_auth(const SVCXPRT *xprt, enum auth_stat why);
785void svcerr_weakauth(const SVCXPRT *xprt);
786void svcerr_noprog(const SVCXPRT *xprt);
787void svcerr_progvers(const SVCXPRT *xprt, rpcvers_t low_vers,
788		rpcvers_t high_vers);
789void svc_getreq(int rdfds);
790void svc_getreqset(fd_set *readfds);
791void svc_getreq_poll(struct pollfd *pfdp, int pollretval);
792void svc_getreq_common(int fd);
793SVCXPRT *svc_xprt_alloc(void);
794void svc_xprt_free(SVCXPRT *xprt);
795bool_t svc_get_local_cred(SVCXPRT *xprt, svc_local_cred_t *lcred);
796SVCAUTH *__svc_get_svcauth(SVCXPRT *);
797void *__svc_set_proc_cleanup_cb(void *cb);
798
799/* svc_auth.c */
800enum auth_stat __authenticate(struct svc_req *rqst, struct rpc_msg *msg);
801int svc_auth_reg(int cred_flavor, enum auth_stat (*handler)());
802
803/* svc_auth_sys.c */
804
805/* svc_dg.c */
806SVCXPRT *svc_dg_create(int fd, uint_t sendsize, uint_t recvsize);
807int svc_dg_enablecache(SVCXPRT *xprt, uint_t size);
808
809/* svc_door.c */
810SVCXPRT *svc_door_create(void (*dispatch)(), rpcprog_t prognum,
811			rpcvers_t versnum, uint_t sendsize);
812
813/* svc_generic.c */
814int svc_create(void (*dispatch)(), rpcprog_t prognum, rpcvers_t versnum,
815			const char *nettype);
816SVCXPRT *svc_tp_create(void (*dispatch)(), rpcprog_t prognum, rpcvers_t versnum,
817			const struct netconfig *nconf);
818SVCXPRT *svc_tli_create(int fd, const struct netconfig *nconf,
819			const struct t_bind *bindaddr, uint_t sendsz,
820			uint_t recvsz);
821
822/* svc_raw.c */
823SVCXPRT *svc_raw_create(void);
824
825/* svc_run.c */
826void svc_run(void);
827void svc_exit(void);
828void svc_done(SVCXPRT *xprt);
829bool_t rpc_control(int op, void *info);
830
831/* svc_simple.c */
832int rpc_reg(rpcprog_t prognum, rpcvers_t versnum, rpcproc_t procnum,
833		char *(*progname)(), xdrproc_t inproc, xdrproc_t outproc,
834		const char *nettype);
835
836/* svc_vc.c */
837SVCXPRT *svc_vc_create(int fd, uint_t sendsize, uint_t recvsize);
838SVCXPRT *svc_fd_create(int fd, uint_t sendsize, uint_t recvsize);
839bool_t __svc_vc_dupcache_init(SVCXPRT *xprt, void *condition, int basis);
840int __svc_vc_dup(struct svc_req *req, caddr_t *resp_buf, uint_t *resp_bufsz);
841int __svc_vc_dupdone(struct svc_req *req, caddr_t resp_buf, uint_t resp_bufsz,
842				int status);
843
844/* svcauth_des.c */
845int authdes_getucred(const struct authdes_cred *adc, uid_t *uid, gid_t *gid,
846				short *grouplen, gid_t *groups);
847enum auth_stat __svcauth_des(struct svc_req *rqst, struct rpc_msg *msg);
848
849/* ti_opts.c */
850int __rpc_negotiate_uid(int fd);
851int __rpc_get_local_uid(SVCXPRT *trans, uid_t *uid_out);
852
853/* xdr.c */
854void xdr_free(xdrproc_t proc, char *objp);
855bool_t xdr_void(void);
856bool_t xdr_int(XDR *xdrs, int *ip);
857bool_t xdr_u_int(XDR *xdrs, uint_t *up);
858bool_t xdr_long(XDR *xdrs, long *lp);
859bool_t xdr_u_long(XDR *xdrs, ulong_t *ulp);
860bool_t xdr_short(XDR *xdrs, short *sp);
861bool_t xdr_u_short(XDR *xdrs, ushort_t *sp);
862bool_t xdr_char(XDR *xdrs, char *cp);
863bool_t xdr_u_char(XDR *xdrs, uchar_t *cp);
864bool_t xdr_bool(XDR *xdrs, bool_t *bp);
865bool_t xdr_enum(XDR *xdrs, enum_t *ep);
866bool_t xdr_opaque(XDR *xdrs, caddr_t cp, uint_t cnt);
867bool_t xdr_bytes(XDR *xdrs, char **cpp, uint_t *sizep, uint_t maxsize);
868bool_t xdr_netobj(XDR *xdrs, struct netobj *np);
869bool_t xdr_union(XDR *xdrs, enum_t *dscmp, char *unp,
870			const struct xdr_discrim *choices, xdrproc_t dfault);
871bool_t xdr_string(XDR *xdrs, char **cpp, uint_t maxsize);
872bool_t xdr_hyper(XDR *xdrs, longlong_t *hp);
873bool_t xdr_u_hyper(XDR *xdrs, u_longlong_t *hp);
874bool_t xdr_longlong_t(XDR *xdrs, longlong_t *hp);
875bool_t xdr_u_longlong_t(XDR *xdrs, u_longlong_t *hp);
876bool_t xdr_ulonglong_t(XDR *xdrs, u_longlong_t *hp);
877bool_t xdr_wrapstring(XDR *xdrs, char **cpp);
878
879/* xdr_array.c */
880bool_t xdr_array(XDR *xdrs, caddr_t *addrp, uint_t *sizep, uint_t maxsize,
881				uint_t elsize, xdrproc_t elproc);
882bool_t xdr_vector(XDR *xdrs, char *basep, uint_t nelem, uint_t elemsize,
883				xdrproc_t xdr_elem);
884
885/* xdr_float.c */
886bool_t xdr_float(XDR *xdrs, float *fp);
887bool_t xdr_double(XDR *xdrs, double *dp);
888bool_t xdr_quadruple(XDR *xdrs, long double *fp);
889
890/* xdr_mem.c */
891void xdrmem_create(XDR *xdrs, caddr_t addr, uint_t size, enum xdr_op op);
892
893/* xdr_rec.c */
894void xdrrec_create(XDR *xdrs, uint_t sendsize, uint_t recvsize,
895			caddr_t tcp_handle, int (*readit)(), int (*writeit)());
896
897uint_t xdrrec_readbytes(XDR *xdrs, caddr_t addr, uint_t l);
898bool_t xdrrec_skiprecord(XDR *xdrs);
899bool_t xdrrec_eof(XDR *xdrs);
900bool_t xdrrec_endofrecord(XDR *xdrs, bool_t sendnow);
901
902/* xdr_refer.c */
903bool_t xdr_reference(XDR *xdrs, caddr_t *pp, uint_t size, xdrproc_t proc);
904bool_t xdr_pointer(XDR *xdrs, char **objpp, uint_t obj_size, xdrproc_t xdr_obj);
905
906/* xdr_sizeof.c */
907unsigned int xdr_sizeof(xdrproc_t func, void *data);
908
909/* xdr_stdio.c */
910void xdrstdio_create(XDR *xdrs, FILE *file, enum xdr_op op);
911
912/* svid_funcs.c */
913#undef	auth_destroy
914#undef	clnt_call
915#undef	clnt_control
916#undef	clnt_destroy
917#undef	clnt_freeres
918#undef	clnt_geterr
919#undef	svc_destroy
920#undef	svc_freeargs
921#undef	svc_getargs
922#undef	svc_getrpccaller
923#undef	xdr_destroy
924#undef	xdr_getpos
925#undef	xdr_inline
926#undef	xdr_setpos
927void auth_destroy(AUTH *auth);
928enum clnt_stat clnt_call(CLIENT *cl, rpcproc_t proc, xdrproc_t xargs,
929			caddr_t argsp, xdrproc_t xres, caddr_t resp,
930			struct timeval timeout);
931bool_t clnt_control(CLIENT *cl, uint_t rq, void *in);
932void clnt_destroy(CLIENT *cl);
933bool_t clnt_freeres(CLIENT *cl, xdrproc_t xres, caddr_t resp);
934void clnt_geterr(CLIENT *cl, struct rpc_err *errp);
935bool_t svc_control(SVCXPRT *xprt, const uint_t rq, void *in);
936bool_t svc_freeargs(SVCXPRT *xprt, xdrproc_t xargs, char *argsp);
937bool_t svc_getargs(SVCXPRT *xprt, xdrproc_t xargs, char *argsp);
938struct netbuf *svc_getrpccaller(SVCXPRT *xprt);
939long *xdr_inline(XDR *xdrs, int len);
940void xdr_destroy(XDR *xdrs);
941uint_t xdr_getpos(XDR *xdrs);
942bool_t xdr_setpos(XDR *xdrs, uint_t pos);
943
944/*
945 * usr/src/lib/libnsl/saf routines
946 */
947
948/* checkver.c */
949int check_version(int ver, char *fname);
950
951/* doconfig.c */
952int doconfig(int fd, char *script, long rflag);
953
954/*
955 * usr/src/lib/libnsl/yp routines
956 */
957
958/* dbm.c */
959int dbminit(char *file);
960int dbmclose(void);
961datum fetch(datum key);
962int delete(datum key);
963int store(datum key, datum dat);
964datum firstkey(void);
965datum nextkey(datum key);
966datum firsthash(long hash);
967datum makdatum(char *buf, int n);
968long hashinc(long hash);
969long calchash(datum item);
970
971/* yp_all.c */
972int yp_all(char *domain, char *map, struct ypall_callback *callback);
973int __yp_all_rsvdport(char *domain, char *map, struct ypall_callback *callback);
974
975/* yp_b_clnt.c */
976enum ypbind_resptype {
977	YPBIND_SUCC_VAL = 1,
978	YPBIND_FAIL_VAL = 2
979};
980typedef enum ypbind_resptype ypbind_resptype;
981struct ypbind_resp {
982	ypbind_resptype ypbind_status;
983	union {
984		uint_t ypbind_error;
985		struct ypbind_binding *ypbind_bindinfo;
986	} ypbind_resp_u;
987};
988typedef struct ypbind_resp ypbind_resp;
989struct ypbind_domain {
990	char *ypbind_domainname;
991	rpcvers_t ypbind_vers;
992};
993typedef struct ypbind_domain ypbind_domain;
994struct ypbind_setdom {
995	char *ypsetdom_domain;
996	struct ypbind_binding *ypsetdom_bindinfo;
997};
998typedef struct ypbind_setdom ypbind_setdom;
999ypbind_resp *ypbindproc_domain_3(ypbind_domain *argp, CLIENT *clnt);
1000
1001/* yp_b_xdr.c */
1002bool_t xdr_ypbind_domain(XDR *xdrs, ypbind_domain *objp);
1003bool_t xdr_ypbind_resp(XDR *xdrs, ypbind_resp *objp);
1004bool_t xdr_ypbind_setdom(XDR *xdrs, ypbind_setdom *objp);
1005bool_t xdr_ypbind_resptype(XDR *xdrs, ypbind_resptype *objp);
1006
1007/* yp_bind.c */
1008struct dom_binding {
1009	struct dom_binding *dom_pnext;
1010	char *dom_domain;
1011	struct ypbind_binding *dom_binding;
1012	CLIENT *dom_client;
1013	int cache_bad;
1014	int fd;
1015	dev_t rdev;
1016	int ref_count;
1017	int need_free;
1018	mutex_t server_name_lock;
1019};
1020int __yp_dobind(char *domain, struct dom_binding **binding);
1021int __yp_rel_binding(struct dom_binding *binding);
1022void yp_unbind(char *domain);
1023int __yp_add_binding(char *domain, char *addr);
1024int yp_bind(char *domain);
1025int yp_get_default_domain(char **domain);
1026int usingypmap(char **ddn, char *map);
1027CLIENT *__clnt_create_loopback(rpcprog_t prog, rpcvers_t vers, int err);
1028
1029/* yp_enum.c */
1030int yp_first(char *domain, char *map, char **key, int *keylen,
1031					char **val, int  *vallen);
1032int yp_next(char *domain, char *map, char *inkey, int inkeylen,
1033		char **outkey, int  *outkeylen, char **val, int *vallen);
1034
1035/* yp_master.c */
1036int yp_master(char *domain, char *map, char **master);
1037int __yp_master_rsvdport(char *domain, char *map, char **master);
1038
1039/* yp_match.c */
1040int yp_match(char *domain, char *map, char *key, int keylen,
1041						char **val, int  *vallen);
1042int yp_match_rsvdport(char *domain, char *map, char *key, int keylen,
1043						char **val, int  *vallen);
1044void __empty_yp_cache(void);
1045
1046/* yp_order.c */
1047int yp_order(char *domain, char *map, unsigned long *order);
1048
1049/* yp_rsvd.c */
1050CLIENT *__yp_clnt_create_rsvdport(const char *hostname,
1051			rpcprog_t prog, rpcvers_t vers,
1052			const char *nettype,
1053			const uint_t sendsz, const uint_t recvsz);
1054
1055/* yp_update.c */
1056int yp_update(char *domain, char *map, unsigned op,
1057			char *key, int keylen, char *data, int datalen);
1058
1059/* yp_xdr.c */
1060bool xdr_datum(XDR * xdrs, datum *pdatum);
1061bool xdr_ypdomain_wrap_string(XDR *xdrs, char **ppstring);
1062bool xdr_ypmap_wrap_string(XDR *xdrs, char **ppstring);
1063bool xdr_ypreq_key(XDR *xdrs, struct ypreq_key *ps);
1064bool xdr_ypreq_nokey(XDR *xdrs, struct ypreq_nokey *ps);
1065bool xdr_ypresp_val(XDR *xdrs, struct ypresp_val *ps);
1066bool xdr_ypresp_key_val(XDR *xdrs, struct ypresp_key_val *ps);
1067bool xdr_ypowner_wrap_string(XDR *xdrs, char **ppstring);
1068bool xdr_ypmap_parms(XDR *xdrs, struct ypmap_parms *ps);
1069bool xdr_ypresp_master(XDR *xdrs, struct ypresp_master *ps);
1070bool xdr_ypresp_order(XDR * xdrs, struct ypresp_order *ps);
1071bool xdr_ypresp_maplist(XDR *xdrs, struct ypresp_maplist *ps);
1072bool xdr_yppushresp_xfr(XDR *xdrs, struct yppushresp_xfr *ps);
1073bool xdr_ypreq_newxfr(XDR *xdrs, struct ypreq_newxfr *ps);
1074bool xdr_ypreq_xfr(XDR *xdrs, struct ypreq_xfr *ps);
1075bool xdr_ypall(XDR *xdrs, struct ypall_callback *callback);
1076
1077/* yperr_string.c */
1078char *yperr_string(int code);
1079
1080/* yppasswd_xdr.c */
1081bool_t xdr_yppasswd(XDR *xdrsp, struct yppasswd *pp);
1082
1083/* ypprot_err.c */
1084int ypprot_err(int yp_protocol_error);
1085
1086/* ypupd.c */
1087bool_t xdr_yp_buf(XDR *xdrs, yp_buf *objp);
1088bool_t xdr_ypupdate_args(XDR *xdrs, ypupdate_args *objp);
1089bool_t xdr_ypdelete_args(XDR *xdrs, ypdelete_args *objp);
1090
1091/* nis_sec_mechs.c */
1092char *__nis_keyalg2authtype(keylen_t keylen, algtype_t algtype,
1093	char *authtype, size_t authtype_len);
1094
1095/* usr/src/lib/libnsl/nss/parse.c */
1096char *_strtok_escape(char *string, char *sepset, char **lasts);
1097