Use err(3). Change =' to
==' in two places, so that server not responding/
server ok is not displayed too often. OKed by: Bill (wpaul).
This commit is contained in:
parent
8418db88a2
commit
77cbf0b31b
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=30762
@ -28,8 +28,6 @@
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: yp_ping.c,v 1.1 1997/05/25 19:49:29 wpaul Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -69,9 +67,12 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
/*static char *sccsid = "from: @(#)clnt_udp.c 1.39 87/08/11 Copyr 1984 Sun Micro";*/
|
||||
/*static char *sccsid = "from: @(#)clnt_udp.c 2.2 88/08/01 4.0 RPCSRC";*/
|
||||
static const char rcsid[] = "@(#) $Id: yp_ping.c,v 1.1 1997/05/25 19:49:29 wpaul Exp $";
|
||||
#if 0
|
||||
static char *sccsid = "@(#)from: clnt_udp.c 1.39 87/08/11 Copyr 1984 Sun Micro";
|
||||
static char *sccsid = "@(#)from: clnt_udp.c 2.2 88/08/01 4.0 RPCSRC";
|
||||
#endif
|
||||
static const char rcsid[] =
|
||||
"$Id$";
|
||||
#endif
|
||||
|
||||
/*
|
||||
@ -80,19 +81,19 @@ static const char rcsid[] = "@(#) $Id: yp_ping.c,v 1.1 1997/05/25 19:49:29 wpaul
|
||||
* Copyright (C) 1984, Sun Microsystems, Inc.
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
#include <netdb.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <rpc/rpc.h>
|
||||
#include <sys/socket.h>
|
||||
#include <net/if.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <netdb.h>
|
||||
#include <errno.h>
|
||||
#include <rpc/pmap_clnt.h>
|
||||
#include <rpc/pmap_prot.h>
|
||||
#include <rpcsvc/yp.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <net/if.h>
|
||||
#include "yp_ping.h"
|
||||
|
||||
#ifndef timeradd
|
||||
|
@ -29,7 +29,7 @@
|
||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" $Id: ypbind.8,v 1.9 1997/04/15 07:15:47 jmg Exp $
|
||||
.\" $Id: ypbind.8,v 1.10 1997/05/25 19:49:32 wpaul Exp $
|
||||
.\"
|
||||
.Dd April 9, 1995
|
||||
.Dt YPBIND 8
|
||||
@ -45,7 +45,7 @@
|
||||
.Op Fl m
|
||||
.Op Fl S Ar domainname,server1,server2,...
|
||||
.Sh DESCRIPTION
|
||||
.Nm
|
||||
.Nm Ypbind
|
||||
is the process that maintains NIS binding information. At startup,
|
||||
it searches for an NIS server responsible for serving the system's
|
||||
default domain (as set by the
|
||||
@ -67,16 +67,15 @@ intervals. If it fails to receive a reply to one of these requests,
|
||||
.Nm
|
||||
assumes that the server is no longer running and resumes its network
|
||||
broadcasts until another binding is established.
|
||||
.Nm
|
||||
.Nm Ypbind
|
||||
will also log warning messages using the
|
||||
.Xr syslog 3
|
||||
facility each time it detects that a server has stopped responding,
|
||||
as well as when it has bound to a new server.
|
||||
.Pp
|
||||
.Sh OPTIONS
|
||||
The following options are supported by
|
||||
.Nm Ns :
|
||||
.Bl -tag -width flag
|
||||
.Bl -tag -width indent
|
||||
.It Fl ypset
|
||||
It is possible to force
|
||||
.Nm
|
||||
@ -99,17 +98,15 @@ This is similar to the
|
||||
flag, except that it only permits YPBINDPROC_SETDOM requests to be processed
|
||||
if they originated from the local host.
|
||||
.It Fl s
|
||||
The
|
||||
.Fl s
|
||||
flag causes
|
||||
Cause
|
||||
.Nm
|
||||
to run in secure mode: it will refuse to bind to any NIS server
|
||||
that is not running as root (i.e. that is not using privileged
|
||||
TCP ports).
|
||||
.It Fl S Ar domainname,server1,server2,server3,...
|
||||
The
|
||||
.Fl S
|
||||
flag allows the system administrator to lock ypbind to a particular
|
||||
Allow the system administrator to lock
|
||||
.Nm
|
||||
to a particular
|
||||
domain and group of NIS servers. Up to ten servers can be specified.
|
||||
There must not be any spaces between the commas in the domain/server
|
||||
specification. This option is used to insure that the system binds
|
||||
@ -136,22 +133,22 @@ will consider the domainname specified with the
|
||||
.Fl S
|
||||
flag to be the system default domain.
|
||||
.It Fl m
|
||||
The
|
||||
Cause
|
||||
.Nm
|
||||
to use a 'many-cast' rather than a broadcast for choosing a server
|
||||
from the restricted mode server list. In many-cast mode,
|
||||
.Nm
|
||||
will transmit directly to the YPPROC_DOMAIN_NONACK procedure of the
|
||||
servers specified in the restricted list and bind to the server that
|
||||
responds the fastest.
|
||||
This mode of operation is useful for NIS clients on remote subnets
|
||||
where no local NIS servers are available. The
|
||||
.Fl m
|
||||
flag can only be used in conjunction with the
|
||||
.Fl S
|
||||
flag above (if used without the
|
||||
.Fl S
|
||||
flag, it has no effect). It causes
|
||||
.Nm ypbind
|
||||
to use a 'many-cast' rather than a broadcast for choosing a server
|
||||
from the restricted mode server list. In many-cast mode,
|
||||
.Nm ypbind
|
||||
will transmit directly to the YPPROC_DOMAIN_NONACK procedure of the
|
||||
servers specified in the restricted list and bind to the server that
|
||||
responds the fastest.
|
||||
This mode of operation is useful for NIS clients on remote subnets
|
||||
where no local NIS servers are available.
|
||||
flag, it has no effect).
|
||||
.El
|
||||
.Sh NOTES
|
||||
The
|
||||
@ -167,12 +164,12 @@ will try broadcasting again. By contrast,
|
||||
will automatically maintain a binding for the default domain whether
|
||||
client programs reference it ot not.
|
||||
.Sh FILES
|
||||
.Bl -tag -width Pa -compact
|
||||
.Bl -tag -width /etc/rc.conf -compact
|
||||
.It Pa /var/yp/binding/[domainname].[version]
|
||||
The files used to hold binding information for each NIS domain.
|
||||
.It Pa /etc/sysconfig
|
||||
System configuration file where the system default domain and
|
||||
ypbind startup options are specified.
|
||||
the files used to hold binding information for each NIS domain
|
||||
.It Pa /etc/rc.conf
|
||||
system configuration file where the system default domain and
|
||||
ypbind startup options are specified
|
||||
.El
|
||||
.Sh SEE ALSO
|
||||
.Xr domainname 1 ,
|
||||
@ -181,4 +178,4 @@ ypbind startup options are specified.
|
||||
.Xr ypserv 8 ,
|
||||
.Xr ypset 8
|
||||
.Sh AUTHOR
|
||||
Theo de Raadt <deraadt@fsa.ca>
|
||||
.An Theo de Raadt Aq deraadt@fsa.ca
|
||||
|
@ -27,9 +27,10 @@
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef LINT
|
||||
static char rcsid[] = "$Id: ypbind.c,v 1.24 1997/04/10 14:18:03 wpaul Exp $";
|
||||
#endif
|
||||
#ifndef lint
|
||||
static const char rcsid[] =
|
||||
"$Id$";
|
||||
#endif /* not lint */
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/types.h>
|
||||
@ -41,13 +42,17 @@ static char rcsid[] = "$Id: ypbind.c,v 1.24 1997/04/10 14:18:03 wpaul Exp $";
|
||||
#include <sys/fcntl.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/uio.h>
|
||||
#include <syslog.h>
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <ctype.h>
|
||||
#include <dirent.h>
|
||||
#include <err.h>
|
||||
#include <errno.h>
|
||||
#include <netdb.h>
|
||||
#include <signal.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <syslog.h>
|
||||
#include <unistd.h>
|
||||
#include <rpc/rpc.h>
|
||||
#include <rpc/xdr.h>
|
||||
#include <net/if.h>
|
||||
@ -56,8 +61,7 @@ static char rcsid[] = "$Id: ypbind.c,v 1.24 1997/04/10 14:18:03 wpaul Exp $";
|
||||
#include <rpc/pmap_clnt.h>
|
||||
#include <rpc/pmap_prot.h>
|
||||
#include <rpc/pmap_rmt.h>
|
||||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
#include <rpc/rpc_com.h>
|
||||
#include <rpcsvc/yp.h>
|
||||
struct dom_binding{};
|
||||
#include <rpcsvc/ypclnt.h>
|
||||
@ -247,7 +251,7 @@ CLIENT *clnt;
|
||||
if (strchr(argp->ypsetdom_domain, '/')) {
|
||||
syslog(LOG_WARNING, "Domain name '%s' has embedded slash -- \
|
||||
rejecting.", argp->ypsetdom_domain);
|
||||
return;
|
||||
return(NULL);
|
||||
}
|
||||
fromsin = svc_getcaller(transp);
|
||||
|
||||
@ -255,7 +259,7 @@ rejecting.", argp->ypsetdom_domain);
|
||||
case YPSET_LOCAL:
|
||||
if( fromsin->sin_addr.s_addr != htonl(INADDR_LOOPBACK)) {
|
||||
svcerr_noprog(transp);
|
||||
return;
|
||||
return(NULL);
|
||||
}
|
||||
break;
|
||||
case YPSET_ALL:
|
||||
@ -263,17 +267,17 @@ rejecting.", argp->ypsetdom_domain);
|
||||
case YPSET_NO:
|
||||
default:
|
||||
svcerr_noprog(transp);
|
||||
return;
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
if(ntohs(fromsin->sin_port) >= IPPORT_RESERVED) {
|
||||
svcerr_noprog(transp);
|
||||
return;
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
if(argp->ypsetdom_vers != YPVERS) {
|
||||
svcerr_noprog(transp);
|
||||
return;
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
bzero((char *)&bindsin, sizeof bindsin);
|
||||
@ -282,7 +286,7 @@ rejecting.", argp->ypsetdom_domain);
|
||||
bindsin.sin_port = *(u_short *)argp->ypsetdom_binding.ypbind_binding_port;
|
||||
rpc_received(argp->ypsetdom_domain, &bindsin, 1);
|
||||
|
||||
return;
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -385,7 +389,6 @@ main(argc, argv)
|
||||
int argc;
|
||||
char **argv;
|
||||
{
|
||||
char path[MAXPATHLEN];
|
||||
struct timeval tv;
|
||||
int i;
|
||||
DIR *dird;
|
||||
@ -393,22 +396,16 @@ char **argv;
|
||||
struct _dom_binding *ypdb;
|
||||
|
||||
/* Check that another ypbind isn't already running. */
|
||||
if ((yplockfd = (open(YPBINDLOCK, O_RDONLY|O_CREAT, 0444))) == -1) {
|
||||
perror(YPBINDLOCK);
|
||||
exit(1);
|
||||
}
|
||||
if ((yplockfd = (open(YPBINDLOCK, O_RDONLY|O_CREAT, 0444))) == -1)
|
||||
err(1, "%s", YPBINDLOCK);
|
||||
|
||||
if(flock(yplockfd, LOCK_EX|LOCK_NB) == -1 && errno == EWOULDBLOCK) {
|
||||
fprintf (stderr, "Another ypbind is already running. Aborting.\n");
|
||||
exit(1);
|
||||
}
|
||||
if(flock(yplockfd, LOCK_EX|LOCK_NB) == -1 && errno == EWOULDBLOCK)
|
||||
errx(1, "another ypbind is already running. Aborting");
|
||||
|
||||
/* XXX domainname will be overriden if we use restricted mode */
|
||||
yp_get_default_domain(&domain_name);
|
||||
if( domain_name[0] == '\0') {
|
||||
fprintf(stderr, "domainname not set. Aborting.\n");
|
||||
exit(1);
|
||||
}
|
||||
if( domain_name[0] == '\0')
|
||||
errx(1, "domainname not set. Aborting");
|
||||
|
||||
for(i=1; i<argc; i++) {
|
||||
if( strcmp("-ypset", argv[i]) == 0)
|
||||
@ -437,43 +434,31 @@ char **argv;
|
||||
}
|
||||
|
||||
#ifdef DAEMON
|
||||
if (daemon(0,0)) {
|
||||
perror("fork");
|
||||
exit(1);
|
||||
}
|
||||
if (daemon(0,0))
|
||||
err(1, "fork");
|
||||
#endif
|
||||
|
||||
pmap_unset(YPBINDPROG, YPBINDVERS);
|
||||
|
||||
udptransp = svcudp_create(RPC_ANYSOCK);
|
||||
if (udptransp == NULL) {
|
||||
fprintf(stderr, "cannot create udp service.\n");
|
||||
exit(1);
|
||||
}
|
||||
if (udptransp == NULL)
|
||||
errx(1, "cannot create udp service");
|
||||
if (!svc_register(udptransp, YPBINDPROG, YPBINDVERS, ypbindprog_2,
|
||||
IPPROTO_UDP)) {
|
||||
fprintf(stderr, "unable to register (YPBINDPROG, YPBINDVERS, udp).\n");
|
||||
exit(1);
|
||||
}
|
||||
IPPROTO_UDP))
|
||||
errx(1, "unable to register (YPBINDPROG, YPBINDVERS, udp)");
|
||||
|
||||
tcptransp = svctcp_create(RPC_ANYSOCK, 0, 0);
|
||||
if (tcptransp == NULL) {
|
||||
fprintf(stderr, "cannot create tcp service.\n");
|
||||
exit(1);
|
||||
}
|
||||
if (tcptransp == NULL)
|
||||
errx(1, "cannot create tcp service");
|
||||
|
||||
if (!svc_register(tcptransp, YPBINDPROG, YPBINDVERS, ypbindprog_2,
|
||||
IPPROTO_TCP)) {
|
||||
fprintf(stderr, "unable to register (YPBINDPROG, YPBINDVERS, tcp).\n");
|
||||
exit(1);
|
||||
}
|
||||
IPPROTO_TCP))
|
||||
errx(1, "unable to register (YPBINDPROG, YPBINDVERS, tcp)");
|
||||
|
||||
/* build initial domain binding, make it "unsuccessful" */
|
||||
ypbindlist = (struct _dom_binding *)malloc(sizeof *ypbindlist);
|
||||
if (ypbindlist == NULL) {
|
||||
perror("malloc");
|
||||
exit(1);
|
||||
}
|
||||
if (ypbindlist == NULL)
|
||||
errx(1, "malloc");
|
||||
bzero((char *)ypbindlist, sizeof *ypbindlist);
|
||||
strncpy(ypbindlist->dom_domain, domain_name, sizeof ypbindlist->dom_domain);
|
||||
ypbindlist->dom_vers = YPVERS;
|
||||
@ -683,7 +668,7 @@ struct _dom_binding *ypdb;
|
||||
return;
|
||||
}
|
||||
|
||||
if (ypdb->dom_vers = -1 && (long)ypdb->dom_server_addr.sin_addr.s_addr)
|
||||
if (ypdb->dom_vers == -1 && (long)ypdb->dom_server_addr.sin_addr.s_addr)
|
||||
syslog(LOG_WARNING, "NIS server [%s] for domain \"%s\" not responding",
|
||||
inet_ntoa(ypdb->dom_server_addr.sin_addr), ypdb->dom_domain);
|
||||
|
||||
@ -791,7 +776,6 @@ struct _dom_binding *ypdb;
|
||||
enum clnt_stat stat;
|
||||
int rpcsock = RPC_ANYSOCK;
|
||||
CLIENT *client_handle;
|
||||
time_t t;
|
||||
|
||||
interval.tv_sec = FAIL_THRESHOLD;
|
||||
interval.tv_usec = 0;
|
||||
@ -917,7 +901,7 @@ int force;
|
||||
}
|
||||
|
||||
/* We've recovered from a crash: inform the world. */
|
||||
if (ypdb->dom_vers = -1 && ypdb->dom_server_addr.sin_addr.s_addr)
|
||||
if (ypdb->dom_vers == -1 && ypdb->dom_server_addr.sin_addr.s_addr)
|
||||
syslog(LOG_WARNING, "NIS server [%s] for domain \"%s\" OK",
|
||||
inet_ntoa(raddrp->sin_addr), ypdb->dom_domain);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user