yplib.c revision 1.1 1 1.1 gwr /* $NetBSD: yplib.c,v 1.1 1995/10/08 23:08:48 gwr Exp $ */
2 1.1 gwr
3 1.1 gwr /*
4 1.1 gwr * Copyright (c) 1992, 1993 Theo de Raadt <deraadt (at) fsa.ca>
5 1.1 gwr * All rights reserved.
6 1.1 gwr *
7 1.1 gwr * Redistribution and use in source and binary forms, with or without
8 1.1 gwr * modification, are permitted provided that the following conditions
9 1.1 gwr * are met:
10 1.1 gwr * 1. Redistributions of source code must retain the above copyright
11 1.1 gwr * notice, this list of conditions and the following disclaimer.
12 1.1 gwr * 2. Redistributions in binary form must reproduce the above copyright
13 1.1 gwr * notice, this list of conditions and the following disclaimer in the
14 1.1 gwr * documentation and/or other materials provided with the distribution.
15 1.1 gwr * 3. All advertising materials mentioning features or use of this software
16 1.1 gwr * must display the following acknowledgement:
17 1.1 gwr * This product includes software developed by Theo de Raadt.
18 1.1 gwr * 4. The name of the author may not be used to endorse or promote products
19 1.1 gwr * derived from this software without specific prior written permission.
20 1.1 gwr *
21 1.1 gwr * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
22 1.1 gwr * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
23 1.1 gwr * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 1.1 gwr * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
25 1.1 gwr * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 1.1 gwr * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 1.1 gwr * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 1.1 gwr * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 1.1 gwr * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 1.1 gwr * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 1.1 gwr * SUCH DAMAGE.
32 1.1 gwr */
33 1.1 gwr
34 1.1 gwr /*
35 1.1 gwr * This file provides "stubs" for all the YP library functions.
36 1.1 gwr * It is not needed unless you pull in things that call YP, and
37 1.1 gwr * if you use all the get* files here then the YP stuff should
38 1.1 gwr * not get dragged in. But if it does, one can use this.
39 1.1 gwr *
40 1.1 gwr * This was copied from:
41 1.1 gwr * lib/libc/yp/yplib.c
42 1.1 gwr * (and then completely gutted! 8^)
43 1.1 gwr */
44 1.1 gwr
45 1.1 gwr #include <sys/types.h>
46 1.1 gwr
47 1.1 gwr /* #include <rpcsvc/yp_prot.h> */
48 1.1 gwr #define YP_TRUE ((long)1) /* general purpose success code */
49 1.1 gwr #define YP_FALSE ((long)0) /* general purpose failure code */
50 1.1 gwr
51 1.1 gwr /* #include <rpcsvc/ypclnt.h> */
52 1.1 gwr #define YPERR_DOMAIN 3 /* can't bind to a server for domain */
53 1.1 gwr #define YPERR_YPERR 6 /* some internal YP server or client error */
54 1.1 gwr #define YPERR_YPBIND 10 /* can't communicate with ypbind */
55 1.1 gwr #define YPERR_NODOM 12 /* local domain name not set */
56 1.1 gwr
57 1.1 gwr #ifndef NULL
58 1.1 gwr #define NULL (void*)0
59 1.1 gwr #endif
60 1.1 gwr
61 1.1 gwr
62 1.1 gwr static char _yp_domain[256];
63 1.1 gwr
64 1.1 gwr int
65 1.1 gwr _yp_dobind(dom, ypdb)
66 1.1 gwr const char *dom;
67 1.1 gwr void **ypdb;
68 1.1 gwr {
69 1.1 gwr return YPERR_YPBIND;
70 1.1 gwr }
71 1.1 gwr
72 1.1 gwr int
73 1.1 gwr yp_bind(dom)
74 1.1 gwr const char *dom;
75 1.1 gwr {
76 1.1 gwr return _yp_dobind(dom, NULL);
77 1.1 gwr }
78 1.1 gwr
79 1.1 gwr void
80 1.1 gwr yp_unbind(dom)
81 1.1 gwr const char *dom;
82 1.1 gwr {
83 1.1 gwr }
84 1.1 gwr
85 1.1 gwr int
86 1.1 gwr yp_match(indomain, inmap, inkey, inkeylen, outval, outvallen)
87 1.1 gwr const char *indomain;
88 1.1 gwr const char *inmap;
89 1.1 gwr const char *inkey;
90 1.1 gwr int inkeylen;
91 1.1 gwr char **outval;
92 1.1 gwr int *outvallen;
93 1.1 gwr {
94 1.1 gwr *outval = NULL;
95 1.1 gwr *outvallen = 0;
96 1.1 gwr
97 1.1 gwr return YPERR_DOMAIN;
98 1.1 gwr }
99 1.1 gwr
100 1.1 gwr int
101 1.1 gwr yp_get_default_domain(domp)
102 1.1 gwr char **domp;
103 1.1 gwr {
104 1.1 gwr *domp = NULL;
105 1.1 gwr if (_yp_domain[0] == '\0')
106 1.1 gwr if (getdomainname(_yp_domain, sizeof(_yp_domain)))
107 1.1 gwr return YPERR_NODOM;
108 1.1 gwr *domp = _yp_domain;
109 1.1 gwr return 0;
110 1.1 gwr }
111 1.1 gwr
112 1.1 gwr int
113 1.1 gwr yp_first(indomain, inmap, outkey, outkeylen, outval, outvallen)
114 1.1 gwr const char *indomain;
115 1.1 gwr const char *inmap;
116 1.1 gwr char **outkey;
117 1.1 gwr int *outkeylen;
118 1.1 gwr char **outval;
119 1.1 gwr int *outvallen;
120 1.1 gwr {
121 1.1 gwr
122 1.1 gwr *outkey = *outval = NULL;
123 1.1 gwr *outkeylen = *outvallen = 0;
124 1.1 gwr
125 1.1 gwr return YPERR_DOMAIN;
126 1.1 gwr }
127 1.1 gwr
128 1.1 gwr int
129 1.1 gwr yp_next(indomain, inmap, inkey, inkeylen, outkey, outkeylen, outval, outvallen)
130 1.1 gwr const char *indomain;
131 1.1 gwr const char *inmap;
132 1.1 gwr const char *inkey;
133 1.1 gwr int inkeylen;
134 1.1 gwr char **outkey;
135 1.1 gwr int *outkeylen;
136 1.1 gwr char **outval;
137 1.1 gwr int *outvallen;
138 1.1 gwr {
139 1.1 gwr *outkey = *outval = NULL;
140 1.1 gwr *outkeylen = *outvallen = 0;
141 1.1 gwr
142 1.1 gwr return YPERR_DOMAIN;
143 1.1 gwr }
144 1.1 gwr
145 1.1 gwr int
146 1.1 gwr yp_all(indomain, inmap, incallback)
147 1.1 gwr const char *indomain;
148 1.1 gwr const char *inmap;
149 1.1 gwr void *incallback;
150 1.1 gwr {
151 1.1 gwr return YPERR_DOMAIN;
152 1.1 gwr }
153 1.1 gwr
154 1.1 gwr int
155 1.1 gwr yp_order(indomain, inmap, outorder)
156 1.1 gwr const char *indomain;
157 1.1 gwr const char *inmap;
158 1.1 gwr int *outorder;
159 1.1 gwr {
160 1.1 gwr return YPERR_DOMAIN;
161 1.1 gwr }
162 1.1 gwr
163 1.1 gwr int
164 1.1 gwr yp_master(indomain, inmap, outname)
165 1.1 gwr const char *indomain;
166 1.1 gwr const char *inmap;
167 1.1 gwr char **outname;
168 1.1 gwr {
169 1.1 gwr return YPERR_DOMAIN;
170 1.1 gwr }
171 1.1 gwr
172 1.1 gwr int
173 1.1 gwr yp_maplist(indomain, outmaplist)
174 1.1 gwr const char *indomain;
175 1.1 gwr struct ypmaplist **outmaplist;
176 1.1 gwr {
177 1.1 gwr return YPERR_DOMAIN;
178 1.1 gwr }
179 1.1 gwr
180 1.1 gwr char *
181 1.1 gwr yperr_string(incode)
182 1.1 gwr int incode;
183 1.1 gwr {
184 1.1 gwr static char err[80];
185 1.1 gwr
186 1.1 gwr if (incode == 0)
187 1.1 gwr return "Success";
188 1.1 gwr
189 1.1 gwr sprintf(err, "YP FAKE error %d\n", incode);
190 1.1 gwr return err;
191 1.1 gwr }
192 1.1 gwr
193 1.1 gwr int
194 1.1 gwr ypprot_err(incode)
195 1.1 gwr unsigned int incode;
196 1.1 gwr {
197 1.1 gwr switch (incode) {
198 1.1 gwr case YP_TRUE: /* success */
199 1.1 gwr return 0;
200 1.1 gwr case YP_FALSE: /* failure */
201 1.1 gwr return YPERR_YPBIND;
202 1.1 gwr }
203 1.1 gwr return YPERR_YPERR;
204 1.1 gwr }
205 1.1 gwr
206 1.1 gwr int
207 1.1 gwr _yp_check(dom)
208 1.1 gwr char **dom;
209 1.1 gwr {
210 1.1 gwr char *unused;
211 1.1 gwr
212 1.1 gwr if (_yp_domain[0] == '\0')
213 1.1 gwr if (yp_get_default_domain(&unused))
214 1.1 gwr return 0;
215 1.1 gwr
216 1.1 gwr if (dom)
217 1.1 gwr *dom = _yp_domain;
218 1.1 gwr
219 1.1 gwr if (yp_bind(_yp_domain) == 0)
220 1.1 gwr return 1;
221 1.1 gwr return 0;
222 1.1 gwr }
223