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 --- |