diff options
author | Philip Guenther <guenther@cvs.openbsd.org> | 2015-01-21 08:24:42 +0000 |
---|---|---|
committer | Philip Guenther <guenther@cvs.openbsd.org> | 2015-01-21 08:24:42 +0000 |
commit | 6940a6bb6b4138cdf3ab0376eb8cd926b8637d3b (patch) | |
tree | 40cca83314d2e5fc9cba75b238a54348a5500d0a /usr.sbin/amd/rpcx/amq_svc.c | |
parent | cbd81d83646bab2761557075c6c163a0d4ade90d (diff) |
Regenerate the amq RPC stubs with a -current rpcgen, with some
post-processing of the server stub to match previous local changes.
This corrects the type handling of mt_mounttime, so "amq /mountpoint"
doesn't segv trying to treat a time_t as a pointer.
With the file (re)generation fixed, we can more easily update the
protocol to support 64bit time_t...
Diffstat (limited to 'usr.sbin/amd/rpcx/amq_svc.c')
-rw-r--r-- | usr.sbin/amd/rpcx/amq_svc.c | 141 |
1 files changed, 67 insertions, 74 deletions
diff --git a/usr.sbin/amd/rpcx/amq_svc.c b/usr.sbin/amd/rpcx/amq_svc.c index d9d3a98b61c..fff6090fd08 100644 --- a/usr.sbin/amd/rpcx/amq_svc.c +++ b/usr.sbin/amd/rpcx/amq_svc.c @@ -1,50 +1,42 @@ /* - * Copyright (c) 1990 Jan-Simon Pendry - * Copyright (c) 1990 Imperial College of Science, Technology & Medicine - * Copyright (c) 1990, 1993 - * The Regents of the University of California. All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * Jan-Simon Pendry at Imperial College, London. - * - * 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. Neither the name of the University 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 REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. - * - * from: @(#)amq_svc.c 8.1 (Berkeley) 6/6/93 - * $Id: amq_svc.c,v 1.8 2014/10/26 03:03:34 guenther Exp $ - * + * Please do not edit this file. + * It was generated using rpcgen. */ -#include <sys/types.h> +#include "amq.h" +#include "am.h" +#include <arpa/inet.h> +#include <unistd.h> +#include <stdio.h> +#include <stdlib.h>/* getenv, exit */ +#include <rpc/pmap_clnt.h> /* for pmap_unset */ +#include <string.h> /* strcmp */ +#include <netdb.h> +#include <signal.h> +#include <sys/ttycom.h>/* TIOCNOTTY */ +#ifdef __cplusplus +#include <sysent.h> /* getdtablesize, open */ +#endif /* __cplusplus */ +#include <memory.h> #include <sys/socket.h> #include <netinet/in.h> -#include <arpa/inet.h> #include <syslog.h> +#include <errno.h> -#include "am.h" -#include "amq.h" -extern bool_t xdr_amq_mount_info_qelem(); +#ifdef __STDC__ +#define SIG_PF void(*)(int) +#endif + +#ifdef DEBUG +#define RPC_SVC_FG +#endif + +#define _RPCSVC_CLOSEDOWN 120 +extern int _rpcpmstart; /* Started by a port monitor ? */ +extern int _rpcfdtype; /* Whether Stream or Datagram ? */ + + +void amq_program_1(struct svc_req *rqstp, SVCXPRT *transp); void amq_program_1(struct svc_req *rqstp, SVCXPRT *transp) @@ -56,8 +48,8 @@ amq_program_1(struct svc_req *rqstp, SVCXPRT *transp) amq_string amqproc_mount_1_arg; } argument; char *result; - bool_t (*xdr_argument)(), (*xdr_result)(); - char *(*local)(); + xdrproc_t xdr_argument, xdr_result; + char *(*local)(char *, struct svc_req *); extern SVCXPRT *lamqp; if (transp != lamqp) { @@ -72,74 +64,75 @@ amq_program_1(struct svc_req *rqstp, SVCXPRT *transp) switch (rqstp->rq_proc) { case AMQPROC_NULL: - xdr_argument = xdr_void; - xdr_result = xdr_void; - local = (char *(*)()) amqproc_null_1_svc; + xdr_argument = (xdrproc_t) xdr_void; + xdr_result = (xdrproc_t) xdr_void; + local = (char *(*)(char *, struct svc_req *)) amqproc_null_1_svc; break; case AMQPROC_MNTTREE: - xdr_argument = xdr_amq_string; - xdr_result = xdr_amq_mount_tree_p; - local = (char *(*)()) amqproc_mnttree_1_svc; + xdr_argument = (xdrproc_t) xdr_amq_string; + xdr_result = (xdrproc_t) xdr_amq_mount_tree_p; + local = (char *(*)(char *, struct svc_req *)) amqproc_mnttree_1_svc; break; case AMQPROC_UMNT: - xdr_argument = xdr_amq_string; - xdr_result = xdr_void; - local = (char *(*)()) amqproc_umnt_1_svc; + xdr_argument = (xdrproc_t) xdr_amq_string; + xdr_result = (xdrproc_t) xdr_void; + local = (char *(*)(char *, struct svc_req *)) amqproc_umnt_1_svc; break; case AMQPROC_STATS: - xdr_argument = xdr_void; - xdr_result = xdr_amq_mount_stats; - local = (char *(*)()) amqproc_stats_1_svc; + xdr_argument = (xdrproc_t) xdr_void; + xdr_result = (xdrproc_t) xdr_amq_mount_stats; + local = (char *(*)(char *, struct svc_req *)) amqproc_stats_1_svc; break; case AMQPROC_EXPORT: - xdr_argument = xdr_void; - xdr_result = xdr_amq_mount_tree_list; - local = (char *(*)()) amqproc_export_1_svc; + xdr_argument = (xdrproc_t) xdr_void; + xdr_result = (xdrproc_t) xdr_amq_mount_tree_list; + local = (char *(*)(char *, struct svc_req *)) amqproc_export_1_svc; break; case AMQPROC_SETOPT: - xdr_argument = xdr_amq_setopt; - xdr_result = xdr_int; - local = (char *(*)()) amqproc_setopt_1_svc; + xdr_argument = (xdrproc_t) xdr_amq_setopt; + xdr_result = (xdrproc_t) xdr_int; + local = (char *(*)(char *, struct svc_req *)) amqproc_setopt_1_svc; break; case AMQPROC_GETMNTFS: - xdr_argument = xdr_void; - xdr_result = xdr_amq_mount_info_qelem; - local = (char *(*)()) amqproc_getmntfs_1_svc; + xdr_argument = (xdrproc_t) xdr_void; + xdr_result = (xdrproc_t) xdr_amq_mount_info_list; + local = (char *(*)(char *, struct svc_req *)) amqproc_getmntfs_1_svc; break; case AMQPROC_MOUNT: - xdr_argument = xdr_amq_string; - xdr_result = xdr_int; - local = (char *(*)()) amqproc_mount_1_svc; + xdr_argument = (xdrproc_t) xdr_amq_string; + xdr_result = (xdrproc_t) xdr_int; + local = (char *(*)(char *, struct svc_req *)) amqproc_mount_1_svc; break; case AMQPROC_GETVERS: - xdr_argument = xdr_void; - xdr_result = xdr_amq_string; - local = (char *(*)()) amqproc_getvers_1_svc; + xdr_argument = (xdrproc_t) xdr_void; + xdr_result = (xdrproc_t) xdr_amq_string; + local = (char *(*)(char *, struct svc_req *)) amqproc_getvers_1_svc; break; default: svcerr_noproc(transp); return; } - bzero((char *)&argument, sizeof(argument)); - if (!svc_getargs(transp, xdr_argument, (char *)&argument)) { + (void) memset((char *)&argument, 0, sizeof (argument)); + if (!svc_getargs(transp, xdr_argument, (caddr_t) &argument)) { svcerr_decode(transp); return; } - result = (*local)(&argument, rqstp); + result = (*local)((char *)&argument, rqstp); if (result != NULL && !svc_sendreply(transp, xdr_result, result)) { svcerr_systemerr(transp); } - if (!svc_freeargs(transp, xdr_argument, (char *)&argument)) { - plog(XLOG_FATAL, "unable to free rpc arguments in amqprog_1"); + if (!svc_freeargs(transp, xdr_argument, (caddr_t) &argument)) { + plog(XLOG_FATAL, "unable to free rpc arguments in amqprog"); going_down(1); } + return; } |