Deleted Added
full compact
ypwhich.c (87672) ypwhich.c (90297)
1/*
2 * Copyright (c) 1992/3 Theo de Raadt <deraadt@fsa.ca>
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 15 unchanged lines hidden (view full) ---

24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE.
28 */
29
30#include <sys/cdefs.h>
31
1/*
2 * Copyright (c) 1992/3 Theo de Raadt <deraadt@fsa.ca>
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 15 unchanged lines hidden (view full) ---

24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE.
28 */
29
30#include <sys/cdefs.h>
31
32__FBSDID("$FreeBSD: head/usr.bin/ypwhich/ypwhich.c 87672 2001-12-11 22:08:58Z markm $");
32__FBSDID("$FreeBSD: head/usr.bin/ypwhich/ypwhich.c 90297 2002-02-06 13:30:31Z des $");
33
34#include <sys/param.h>
35#include <sys/types.h>
36#include <sys/socket.h>
37
38#include <rpcsvc/ypclnt.h>
39
40#include <netinet/in.h>

--- 56 unchanged lines hidden (view full) ---

97 CLIENT *client;
98 int sock, r;
99 struct in_addr ss_addr;
100
101 sock = RPC_ANYSOCK;
102 tv.tv_sec = 15;
103 tv.tv_usec = 0;
104 client = clntudp_create(lsin, YPBINDPROG, YPBINDVERS, tv, &sock);
33
34#include <sys/param.h>
35#include <sys/types.h>
36#include <sys/socket.h>
37
38#include <rpcsvc/ypclnt.h>
39
40#include <netinet/in.h>

--- 56 unchanged lines hidden (view full) ---

97 CLIENT *client;
98 int sock, r;
99 struct in_addr ss_addr;
100
101 sock = RPC_ANYSOCK;
102 tv.tv_sec = 15;
103 tv.tv_usec = 0;
104 client = clntudp_create(lsin, YPBINDPROG, YPBINDVERS, tv, &sock);
105 if(client==NULL) {
105 if (client == NULL) {
106 warnx("can't clntudp_create: %s", yperr_string(YPERR_YPBIND));
106 warnx("can't clntudp_create: %s", yperr_string(YPERR_YPBIND));
107 return YPERR_YPBIND;
107 return (YPERR_YPBIND);
108 }
109
110 tv.tv_sec = 5;
111 tv.tv_usec = 0;
112 r = clnt_call(client, YPBINDPROC_DOMAIN,
113 xdr_domainname, &dom, xdr_ypbind_resp, &ypbr, tv);
108 }
109
110 tv.tv_sec = 5;
111 tv.tv_usec = 0;
112 r = clnt_call(client, YPBINDPROC_DOMAIN,
113 xdr_domainname, &dom, xdr_ypbind_resp, &ypbr, tv);
114 if( r != RPC_SUCCESS) {
114 if (r != RPC_SUCCESS) {
115 warnx("can't clnt_call: %s", yperr_string(YPERR_YPBIND));
116 clnt_destroy(client);
115 warnx("can't clnt_call: %s", yperr_string(YPERR_YPBIND));
116 clnt_destroy(client);
117 return YPERR_YPBIND;
117 return (YPERR_YPBIND);
118 } else {
119 if (ypbr.ypbind_status != YPBIND_SUCC_VAL) {
120 warnx("can't yp_bind: reason: %s",
121 ypbinderr_string(ypbr.ypbind_resp_u.ypbind_error));
122 clnt_destroy(client);
118 } else {
119 if (ypbr.ypbind_status != YPBIND_SUCC_VAL) {
120 warnx("can't yp_bind: reason: %s",
121 ypbinderr_string(ypbr.ypbind_resp_u.ypbind_error));
122 clnt_destroy(client);
123 return r;
123 return (r);
124 }
125 }
126 clnt_destroy(client);
127
128 ss_addr = *(struct in_addr *)ypbr.ypbind_resp_u.ypbind_bindinfo.ypbind_binding_addr;
129 /*printf("%08x\n", ss_addr);*/
130 hent = gethostbyaddr((char *)&ss_addr, sizeof(ss_addr), AF_INET);
131 if (hent)
132 printf("%s\n", hent->h_name);
133 else
134 printf("%s\n", inet_ntoa(ss_addr));
124 }
125 }
126 clnt_destroy(client);
127
128 ss_addr = *(struct in_addr *)ypbr.ypbind_resp_u.ypbind_bindinfo.ypbind_binding_addr;
129 /*printf("%08x\n", ss_addr);*/
130 hent = gethostbyaddr((char *)&ss_addr, sizeof(ss_addr), AF_INET);
131 if (hent)
132 printf("%s\n", hent->h_name);
133 else
134 printf("%s\n", inet_ntoa(ss_addr));
135 return 0;
135 return (0);
136}
137
138int
139main(int argc, char *argv[])
140{
141 char *domnam = NULL, *master;
142 const char *map = NULL;
143 struct ypmaplist *ypml, *y;
144 struct hostent *hent;
145 struct sockaddr_in lsin;
146 int notrans, mode, getmap;
147 int c, r;
148 u_int i;
149
150 getmap = notrans = mode = 0;
136}
137
138int
139main(int argc, char *argv[])
140{
141 char *domnam = NULL, *master;
142 const char *map = NULL;
143 struct ypmaplist *ypml, *y;
144 struct hostent *hent;
145 struct sockaddr_in lsin;
146 int notrans, mode, getmap;
147 int c, r;
148 u_int i;
149
150 getmap = notrans = mode = 0;
151 while( (c=getopt(argc, argv, "xd:mt")) != -1)
152 switch(c) {
151 while ((c = getopt(argc, argv, "xd:mt")) != -1)
152 switch (c) {
153 case 'x':
153 case 'x':
154 for(i=0; i<sizeof ypaliases/sizeof ypaliases[0]; i++)
154 for (i = 0; i<sizeof ypaliases/sizeof ypaliases[0]; i++)
155 printf("\"%s\" is an alias for \"%s\"\n",
156 ypaliases[i].alias,
157 ypaliases[i].name);
158 exit(0);
159 case 'd':
160 domnam = optarg;
161 break;
162 case 't':
163 notrans++;
164 break;
165 case 'm':
166 mode++;
167 break;
168 default:
169 usage();
170 }
171
155 printf("\"%s\" is an alias for \"%s\"\n",
156 ypaliases[i].alias,
157 ypaliases[i].name);
158 exit(0);
159 case 'd':
160 domnam = optarg;
161 break;
162 case 't':
163 notrans++;
164 break;
165 case 'm':
166 mode++;
167 break;
168 default:
169 usage();
170 }
171
172 if(!domnam)
172 if (!domnam)
173 yp_get_default_domain(&domnam);
174
173 yp_get_default_domain(&domnam);
174
175 if(mode==0) {
176 switch(argc-optind) {
175 if (mode == 0) {
176 switch (argc-optind) {
177 case 0:
178 bzero(&lsin, sizeof lsin);
179 lsin.sin_family = AF_INET;
180 lsin.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
181
177 case 0:
178 bzero(&lsin, sizeof lsin);
179 lsin.sin_family = AF_INET;
180 lsin.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
181
182 if(bind_host(domnam, &lsin))
182 if (bind_host(domnam, &lsin))
183 exit(ERR_NOBINDING);
184 break;
185 case 1:
186 bzero(&lsin, sizeof lsin);
187 lsin.sin_family = AF_INET;
183 exit(ERR_NOBINDING);
184 break;
185 case 1:
186 bzero(&lsin, sizeof lsin);
187 lsin.sin_family = AF_INET;
188 if( (lsin.sin_addr.s_addr=inet_addr(argv[optind]))==-1) {
188 if ((lsin.sin_addr.s_addr = inet_addr(argv[optind])) == -1) {
189 hent = gethostbyname(argv[optind]);
189 hent = gethostbyname(argv[optind]);
190 if(!hent)
190 if (!hent)
191 errx(ERR_NOSUCHHOST, "host %s unknown", argv[optind]);
192 bcopy((char *)hent->h_addr_list[0],
193 (char *)&lsin.sin_addr, sizeof lsin.sin_addr);
194 }
191 errx(ERR_NOSUCHHOST, "host %s unknown", argv[optind]);
192 bcopy((char *)hent->h_addr_list[0],
193 (char *)&lsin.sin_addr, sizeof lsin.sin_addr);
194 }
195 if(bind_host(domnam, &lsin))
195 if (bind_host(domnam, &lsin))
196 exit(ERR_NOBINDING);
197 break;
198 default:
199 usage();
200 }
201 exit(0);
202 }
203
196 exit(ERR_NOBINDING);
197 break;
198 default:
199 usage();
200 }
201 exit(0);
202 }
203
204 if( argc-optind > 1)
204 if (argc-optind > 1)
205 usage();
206
205 usage();
206
207 if(argv[optind]) {
207 if (argv[optind]) {
208 map = argv[optind];
208 map = argv[optind];
209 for(i=0; (!notrans) && i<sizeof ypaliases/sizeof ypaliases[0]; i++)
210 if( strcmp(map, ypaliases[i].alias) == 0)
209 for (i = 0; (!notrans) && i<sizeof ypaliases/sizeof ypaliases[0]; i++)
210 if (strcmp(map, ypaliases[i].alias) == 0)
211 map = ypaliases[i].name;
212 r = yp_master(domnam, map, &master);
211 map = ypaliases[i].name;
212 r = yp_master(domnam, map, &master);
213 switch(r) {
213 switch (r) {
214 case 0:
215 printf("%s\n", master);
216 free(master);
217 break;
218 case YPERR_YPBIND:
219 errx(ERR_NOYPBIND, "not running ypbind");
220 default:
221 errx(ERR_NOMASTER, "can't find master for map %s. reason: %s",
222 map, yperr_string(r));
223 }
224 exit(0);
225 }
226
227 ypml = NULL;
228 r = yp_maplist(domnam, &ypml);
214 case 0:
215 printf("%s\n", master);
216 free(master);
217 break;
218 case YPERR_YPBIND:
219 errx(ERR_NOYPBIND, "not running ypbind");
220 default:
221 errx(ERR_NOMASTER, "can't find master for map %s. reason: %s",
222 map, yperr_string(r));
223 }
224 exit(0);
225 }
226
227 ypml = NULL;
228 r = yp_maplist(domnam, &ypml);
229 switch(r) {
229 switch (r) {
230 case 0:
230 case 0:
231 for(y=ypml; y; ) {
231 for (y = ypml; y;) {
232 ypml = y;
233 r = yp_master(domnam, ypml->map, &master);
232 ypml = y;
233 r = yp_master(domnam, ypml->map, &master);
234 switch(r) {
234 switch (r) {
235 case 0:
236 printf("%s %s\n", ypml->map, master);
237 free(master);
238 break;
239 default:
240 warnx("can't find the master of %s: reason: %s",
241 ypml->map, yperr_string(r));
242 break;

--- 13 unchanged lines hidden ---
235 case 0:
236 printf("%s %s\n", ypml->map, master);
237 free(master);
238 break;
239 default:
240 warnx("can't find the master of %s: reason: %s",
241 ypml->map, yperr_string(r));
242 break;

--- 13 unchanged lines hidden ---