Sync the code with OpenBSD.

Remove 3rd BSD clause.

Differential Revision:	D3289
Approved by:		bapt (mentor)
Obtained from:		OpenBSD
This commit is contained in:
Marcelo Araujo 2015-08-11 01:33:36 +00:00
parent d6bd41a3ac
commit e5763f0069
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=286610
2 changed files with 41 additions and 43 deletions

View File

@ -31,7 +31,7 @@
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd October 25, 1994 .Dd August 04, 2015
.Dt YPSET 8 .Dt YPSET 8
.Os .Os
.Sh NAME .Sh NAME
@ -68,15 +68,15 @@ the local network supplying YP maps.
.Pp .Pp
The options are as follows: The options are as follows:
.Bl -tag -width indent .Bl -tag -width indent
.It Fl h Ar host
Set the YP binding on
.Ar host
instead of the local machine.
.It Fl d Ar domain .It Fl d Ar domain
Use the YP domain Use the YP domain
.Ar domain .Ar domain
instead of the default domain as returned by instead of the default domain as returned by
.Xr domainname 1 . .Xr domainname 1 .
.It Fl h Ar host
Set the YP binding on
.Ar host
instead of the local machine.
.El .El
.Sh SEE ALSO .Sh SEE ALSO
.Xr domainname 1 , .Xr domainname 1 ,

View File

@ -1,5 +1,8 @@
/* $OpenBSD: ypset.c,v 1.20 2015/01/16 06:40:23 deraadt Exp $ */
/* $NetBSD: ypset.c,v 1.8 1996/05/13 02:46:33 thorpej Exp $ */
/* /*
* Copyright (c) 1992/3 Theo de Raadt <deraadt@fsa.ca> * Copyright (c) 1992, 1993 Theo de Raadt <deraadt@theos.com>
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
@ -10,9 +13,6 @@
* 2. Redistributions in binary form must reproduce the above copyright * 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the * notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
* *
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
@ -30,61 +30,58 @@
#include <sys/cdefs.h> #include <sys/cdefs.h>
__FBSDID("$FreeBSD$"); __FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <err.h> #include <err.h>
#include <netdb.h> #include <netdb.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <unistd.h> #include <unistd.h>
#include <sys/param.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <rpc/rpc.h> #include <rpc/rpc.h>
#include <rpc/xdr.h> #include <rpc/xdr.h>
#include <rpcsvc/yp.h> #include <rpcsvc/yp.h>
#include <rpcsvc/ypclnt.h> #include <rpcsvc/ypclnt.h>
#include <arpa/inet.h> #include <arpa/inet.h>
extern bool_t xdr_domainname();
static void static void
usage(void) usage(void)
{ {
fprintf(stderr, "usage: ypset [-h host] [-d domain] server\n"); fprintf(stderr, "usage: ypset [-d domain] [-h host] server\n");
exit(1); exit(1);
} }
int static int
bind_tohost(struct sockaddr_in *sin, char *dom, char *server) bind_tohost(struct sockaddr_in *sin, char *dom, char *server)
{ {
struct ypbind_setdom ypsd; struct ypbind_setdom ypsd;
struct timeval tv; struct in_addr iaddr;
struct hostent *hp; struct hostent *hp;
struct timeval tv;
CLIENT *client; CLIENT *client;
int sock, port; int sock, port, r;
int r;
unsigned long server_addr;
if ((port = htons(getrpcport(server, YPPROG, YPPROC_NULL, IPPROTO_UDP))) == 0) port = getrpcport(server, YPPROG, YPPROC_NULL, IPPROTO_UDP);
if (port == 0)
errx(1, "%s not running ypserv", server); errx(1, "%s not running ypserv", server);
port = htons(port);
bzero(&ypsd, sizeof ypsd); memset(&ypsd, 0, sizeof ypsd);
if ((hp = gethostbyname (server)) != NULL) { if (inet_aton(server, &iaddr) == 0) {
/* is this the most compatible way?? */ hp = gethostbyname(server);
bcopy (hp->h_addr_list[0], if (hp == NULL)
(u_long *)&ypsd.ypsetdom_binding.ypbind_binding_addr, errx(1, "can't find address for %s", server);
sizeof (unsigned long)); memmove(&iaddr.s_addr, hp->h_addr, sizeof(iaddr.s_addr));
} else if ((server_addr = inet_addr(server)) == INADDR_NONE) { }
errx(1, "can't find address for %s", server);
} else
bcopy (&server_addr,
(u_long *)&ypsd.ypsetdom_binding.ypbind_binding_addr,
sizeof (server_addr));
/* strncpy(ypsd.ypsetdom_domain, dom, sizeof ypsd.ypsetdom_domain); */
ypsd.ypsetdom_domain = dom; ypsd.ypsetdom_domain = dom;
*(u_long *)&ypsd.ypsetdom_binding.ypbind_binding_port = port; bcopy(&iaddr.s_addr, &ypsd.ypsetdom_binding.ypbind_binding_addr,
sizeof(ypsd.ypsetdom_binding.ypbind_binding_addr));
bcopy(&port, &ypsd.ypsetdom_binding.ypbind_binding_port,
sizeof(ypsd.ypsetdom_binding.ypbind_binding_port));
ypsd.ypsetdom_vers = YPVERS; ypsd.ypsetdom_vers = YPVERS;
tv.tv_sec = 15; tv.tv_sec = 15;
@ -101,7 +98,9 @@ bind_tohost(struct sockaddr_in *sin, char *dom, char *server)
(xdrproc_t)xdr_ypbind_setdom, &ypsd, (xdrproc_t)xdr_ypbind_setdom, &ypsd,
(xdrproc_t)xdr_void, NULL, tv); (xdrproc_t)xdr_void, NULL, tv);
if (r) { if (r) {
warnx("sorry, cannot ypset for domain %s on host - make sure ypbind was started with -ypset or -ypsetme", dom); warnx("cannot ypset for domain %s on host %s: %s"
" - make sure ypbind was started with -ypset or -ypsetme", dom,
server, clnt_sperrno(r));
clnt_destroy(client); clnt_destroy(client);
return (YPERR_YPBIND); return (YPERR_YPBIND);
} }
@ -124,18 +123,17 @@ main(int argc, char *argv[])
sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK); sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
while ((c = getopt(argc, argv, "h:d:")) != -1) while ((c = getopt(argc, argv, "h:d:")) != -1)
switch (c) { switch(c) {
case 'd': case 'd':
domainname = optarg; domainname = optarg;
break; break;
case 'h': case 'h':
if ((sin.sin_addr.s_addr = inet_addr(optarg)) == if (inet_aton(optarg, &sin.sin_addr) == 0) {
INADDR_NONE) {
hent = gethostbyname(optarg); hent = gethostbyname(optarg);
if (hent == NULL) if (hent == NULL)
errx(1, "host %s unknown", optarg); errx(1, "host %s unknown\n", optarg);
bcopy(hent->h_addr_list[0], &sin.sin_addr, bcopy(hent->h_addr, &sin.sin_addr,
sizeof sin.sin_addr); sizeof(sin.sin_addr));
} }
break; break;
default: default: