summaryrefslogtreecommitdiff
path: root/usr.sbin/yppoll
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>1995-10-18 08:53:40 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>1995-10-18 08:53:40 +0000
commitd6583bb2a13f329cf0332ef2570eb8bb8fc0e39c (patch)
treeece253b876159b39c620e62b6c9b1174642e070e /usr.sbin/yppoll
initial import of NetBSD tree
Diffstat (limited to 'usr.sbin/yppoll')
-rw-r--r--usr.sbin/yppoll/Makefile7
-rw-r--r--usr.sbin/yppoll/yppoll.877
-rw-r--r--usr.sbin/yppoll/yppoll.c187
3 files changed, 271 insertions, 0 deletions
diff --git a/usr.sbin/yppoll/Makefile b/usr.sbin/yppoll/Makefile
new file mode 100644
index 00000000000..3e84bbe450b
--- /dev/null
+++ b/usr.sbin/yppoll/Makefile
@@ -0,0 +1,7 @@
+# from: @(#)Makefile 5.8 (Berkeley) 7/28/90
+# $Id: Makefile,v 1.1 1995/10/18 08:48:32 deraadt Exp $
+
+PROG= yppoll
+MAN= yppoll.8
+
+.include <bsd.prog.mk>
diff --git a/usr.sbin/yppoll/yppoll.8 b/usr.sbin/yppoll/yppoll.8
new file mode 100644
index 00000000000..d57500c0faa
--- /dev/null
+++ b/usr.sbin/yppoll/yppoll.8
@@ -0,0 +1,77 @@
+.\"
+.\" Copyright (c) 1994 Jason R. Thorpe
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by Jason Thorpe.
+.\" 4. Neither the name of the author nor the names of its contributors
+.\" may 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 OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" 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: yppoll.8,v 1.1 1995/10/18 08:48:32 deraadt Exp $
+.\"
+.Dd October 25, 1994
+.Dt YPPOLL 8
+.Os
+.Sh NAME
+.Nm yppoll
+.Nd ask version of YP map from YP server
+.Sh SYNOPSIS
+.Nm yppoll
+.Op Fl h Ar host
+.Op Fl d Ar domain
+.Ar mapname
+.Sh DESCRIPTION
+.Nm Yppoll
+asks a YP server process for the order number and which host is the master
+server for
+.Ar mapname .
+.Pp
+The options are as follows:
+.Bl -tag -width indent
+.It Fl h Ar host
+Ask the YP server process running on
+.Ar host
+for information about
+.Ar mapname .
+If
+.Ar host
+is not specified, the server polled is the default server returned by
+.Xr ypwhich 1 .
+.It Fl d Ar domain
+Use the YP domain
+.Ar domain
+instead of the default domain as returned by
+.Xr domainname 1 .
+.El
+.Sh SEE ALSO
+.Xr domainname 1 ,
+.Xr ypbind 8 ,
+.Xr ypcat 1 ,
+.Xr ypmatch 1 ,
+.Xr ypset 8 ,
+.Xr ypwhich 1 ,
+.Xr yp 8
+.Sh AUTHORS
+Theo De Raadt and John Brezak
diff --git a/usr.sbin/yppoll/yppoll.c b/usr.sbin/yppoll/yppoll.c
new file mode 100644
index 00000000000..2c9eedcf18b
--- /dev/null
+++ b/usr.sbin/yppoll/yppoll.c
@@ -0,0 +1,187 @@
+/*
+ * Copyright (c) 1992, 1993 Theo de Raadt <deraadt@fsa.ca>
+ * Copyright (c) 1992, 1993 John Brezak
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Theo de Raadt and
+ * John Brezak.
+ * 4. 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
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * 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.
+ */
+
+#ifndef lint
+static char rcsid[] = "$Id: yppoll.c,v 1.1 1995/10/18 08:48:32 deraadt Exp $";
+#endif /* not lint */
+
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <stdio.h>
+#include <time.h>
+#include <netdb.h>
+#include <unistd.h>
+#include <string.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+
+#include <rpc/rpc.h>
+#include <rpc/xdr.h>
+#include <rpcsvc/yp_prot.h>
+#include <rpcsvc/ypclnt.h>
+
+void
+usage()
+{
+ fprintf(stderr, "Usage:\n");
+ fprintf(stderr, "\typpoll [-h host] [-d domainname] mapname\n");
+ exit(1);
+}
+
+int
+get_remote_info(indomain, inmap, server, outorder, outname)
+ char *indomain;
+ char *inmap;
+ char *server;
+ int *outorder;
+ char **outname;
+{
+ struct ypresp_order ypro;
+ struct ypresp_master yprm;
+ struct ypreq_nokey yprnk;
+ struct timeval tv;
+ int r;
+ struct sockaddr_in rsrv_sin;
+ int rsrv_sock;
+ CLIENT *client;
+ struct hostent *h;
+
+ bzero((char *)&rsrv_sin, sizeof rsrv_sin);
+ rsrv_sin.sin_len = sizeof rsrv_sin;
+ rsrv_sin.sin_family = AF_INET;
+ rsrv_sock = RPC_ANYSOCK;
+
+ h = gethostbyname(server);
+ if (h == NULL) {
+ if (inet_aton(server, &rsrv_sin.sin_addr) == 0) {
+ fprintf(stderr, "unknown host %s\n", server);
+ exit(1);
+ }
+ } else {
+ rsrv_sin.sin_addr.s_addr = *(u_long *)h->h_addr;
+ }
+
+ tv.tv_sec = 10;
+ tv.tv_usec = 0;
+
+ client = clntudp_create(&rsrv_sin, YPPROG, YPVERS, tv, &rsrv_sock);
+ if (client == NULL) {
+ fprintf(stderr, "clntudp_create: no contact with host %s.\n",
+ server);
+ exit(1);
+ }
+
+ yprnk.domain = indomain;
+ yprnk.map = inmap;
+
+ bzero((char *)(char *)&ypro, sizeof ypro);
+
+ r = clnt_call(client, YPPROC_ORDER, xdr_ypreq_nokey, &yprnk,
+ xdr_ypresp_order, &ypro, tv);
+ if (r != RPC_SUCCESS)
+ clnt_perror(client, "yp_order: clnt_call");
+
+ *outorder = ypro.ordernum;
+ xdr_free(xdr_ypresp_order, (char *)&ypro);
+
+ r = ypprot_err(ypro.status);
+ if (r == RPC_SUCCESS) {
+ bzero((char *)&yprm, sizeof yprm);
+
+ r = clnt_call(client, YPPROC_MASTER, xdr_ypreq_nokey,
+ &yprnk, xdr_ypresp_master, &yprm, tv);
+ if (r != RPC_SUCCESS)
+ clnt_perror(client, "yp_master: clnt_call");
+ r = ypprot_err(yprm.status);
+ if (r==0)
+ *outname = (char *)strdup(yprm.master);
+ xdr_free(xdr_ypresp_master, (char *)&yprm);
+ }
+ clnt_destroy(client);
+ return r;
+}
+
+int
+main(argc, argv)
+ int argc;
+ char **argv;
+{
+ char *domainname;
+ char *hostname = NULL;
+ char *inmap, *master;
+ int order;
+ extern char *optarg;
+ extern int optind;
+ int c, r;
+
+ yp_get_default_domain(&domainname);
+
+ while ((c=getopt(argc, argv, "h:d:?")) != -1)
+ switch (c) {
+ case 'd':
+ domainname = optarg;
+ break;
+ case 'h':
+ hostname = optarg;
+ break;
+ default:
+ usage();
+ /*NOTREACHED*/
+ }
+
+ if (optind + 1 != argc )
+ usage();
+ inmap = argv[optind];
+
+ if (hostname != NULL) {
+ r = get_remote_info(domainname, inmap, hostname,
+ &order, &master);
+ } else {
+ r = yp_order(domainname, inmap, &order);
+ if (r == 0)
+ r = yp_master(domainname, inmap, &master);
+ }
+
+ if (r != 0) {
+ fprintf(stderr, "No such map %s. Reason: %s\n",
+ inmap, yperr_string(r));
+ exit(1);
+ }
+
+ printf("Map %s has order number %d. %s", inmap, order,
+ ctime((time_t *)&order));
+ printf("The master server is %s.\n", master);
+ exit(0);
+}