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