1 /* $NetBSD: amq_clnt.c,v 1.1.1.3 2015/01/17 16:34:15 christos Exp $ */ 2 3 /* 4 * Copyright (c) 1997-2014 Erez Zadok 5 * Copyright (c) 1990 Jan-Simon Pendry 6 * Copyright (c) 1990 Imperial College of Science, Technology & Medicine 7 * Copyright (c) 1990 The Regents of the University of California. 8 * All rights reserved. 9 * 10 * This code is derived from software contributed to Berkeley by 11 * Jan-Simon Pendry at Imperial College, London. 12 * 13 * Redistribution and use in source and binary forms, with or without 14 * modification, are permitted provided that the following conditions 15 * are met: 16 * 1. Redistributions of source code must retain the above copyright 17 * notice, this list of conditions and the following disclaimer. 18 * 2. Redistributions in binary form must reproduce the above copyright 19 * notice, this list of conditions and the following disclaimer in the 20 * documentation and/or other materials provided with the distribution. 21 * 3. Neither the name of the University nor the names of its contributors 22 * may be used to endorse or promote products derived from this software 23 * without specific prior written permission. 24 * 25 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 26 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 28 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 31 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 32 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 33 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 34 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 35 * SUCH DAMAGE. 36 * 37 * 38 * File: am-utils/amq/amq_clnt.c 39 * 40 */ 41 42 #ifdef HAVE_CONFIG_H 43 # include <config.h> 44 #endif /* HAVE_CONFIG_H */ 45 #include <am_defs.h> 46 #include <amq.h> 47 48 49 static struct timeval TIMEOUT = {ALLOWED_MOUNT_TIME, 0}; 50 51 52 voidp 53 amqproc_null_1(voidp argp, CLIENT *clnt) 54 { 55 static char res; 56 57 memset((char *) &res, 0, sizeof(res)); 58 if (clnt_call(clnt, AMQPROC_NULL, 59 (XDRPROC_T_TYPE) xdr_void, argp, 60 (XDRPROC_T_TYPE) xdr_void, &res, TIMEOUT) 61 != RPC_SUCCESS) { 62 return (NULL); 63 } 64 return ((voidp) &res); 65 } 66 67 68 amq_mount_tree_p * 69 amqproc_mnttree_1(amq_string *argp, CLIENT *clnt) 70 { 71 static amq_mount_tree_p res; 72 73 memset((char *) &res, 0, sizeof(res)); 74 if (clnt_call(clnt, AMQPROC_MNTTREE, 75 (XDRPROC_T_TYPE) xdr_amq_string, (SVC_IN_ARG_TYPE) argp, 76 (XDRPROC_T_TYPE) xdr_amq_mount_tree_p, (SVC_IN_ARG_TYPE) &res, 77 TIMEOUT) != RPC_SUCCESS) { 78 return (NULL); 79 } 80 return (&res); 81 } 82 83 84 voidp 85 amqproc_umnt_1(amq_string *argp, CLIENT *clnt) 86 { 87 static char res; 88 89 memset((char *) &res, 0, sizeof(res)); 90 if (clnt_call(clnt, AMQPROC_UMNT, 91 (XDRPROC_T_TYPE) xdr_amq_string, (SVC_IN_ARG_TYPE) argp, 92 (XDRPROC_T_TYPE) xdr_void, &res, 93 TIMEOUT) != RPC_SUCCESS) { 94 return (NULL); 95 } 96 return ((voidp) &res); 97 } 98 99 100 amq_sync_umnt * 101 amqproc_sync_umnt_1(amq_string *argp, CLIENT *clnt) 102 { 103 static amq_sync_umnt res; 104 enum clnt_stat rv; 105 106 memset((char *) &res, 0, sizeof(res)); 107 if ((rv = clnt_call(clnt, AMQPROC_SYNC_UMNT, 108 (XDRPROC_T_TYPE) xdr_amq_string, (SVC_IN_ARG_TYPE) argp, 109 (XDRPROC_T_TYPE) xdr_amq_sync_umnt, (SVC_IN_ARG_TYPE) &res, 110 TIMEOUT)) != RPC_SUCCESS) { 111 return (NULL); 112 } 113 return &res; 114 } 115 116 117 amq_mount_stats * 118 amqproc_stats_1(voidp argp, CLIENT *clnt) 119 { 120 static amq_mount_stats res; 121 122 memset((char *) &res, 0, sizeof(res)); 123 if (clnt_call(clnt, AMQPROC_STATS, 124 (XDRPROC_T_TYPE) xdr_void, argp, 125 (XDRPROC_T_TYPE) xdr_amq_mount_stats, 126 (SVC_IN_ARG_TYPE) &res, 127 TIMEOUT) != RPC_SUCCESS) { 128 return (NULL); 129 } 130 return (&res); 131 } 132 133 134 amq_mount_tree_list * 135 amqproc_export_1(voidp argp, CLIENT *clnt) 136 { 137 static amq_mount_tree_list res; 138 139 memset((char *) &res, 0, sizeof(res)); 140 if (clnt_call(clnt, AMQPROC_EXPORT, 141 (XDRPROC_T_TYPE) xdr_void, argp, 142 (XDRPROC_T_TYPE) xdr_amq_mount_tree_list, 143 (SVC_IN_ARG_TYPE) &res, TIMEOUT) != RPC_SUCCESS) { 144 return (NULL); 145 } 146 return (&res); 147 } 148 149 150 int * 151 amqproc_setopt_1(amq_setopt *argp, CLIENT *clnt) 152 { 153 static int res; 154 155 memset((char *) &res, 0, sizeof(res)); 156 if (clnt_call(clnt, AMQPROC_SETOPT, (XDRPROC_T_TYPE) xdr_amq_setopt, 157 (SVC_IN_ARG_TYPE) argp, (XDRPROC_T_TYPE) xdr_int, 158 (SVC_IN_ARG_TYPE) &res, TIMEOUT) != RPC_SUCCESS) { 159 return (NULL); 160 } 161 return (&res); 162 } 163 164 165 amq_mount_info_list * 166 amqproc_getmntfs_1(voidp argp, CLIENT *clnt) 167 { 168 static amq_mount_info_list res; 169 170 memset((char *) &res, 0, sizeof(res)); 171 if (clnt_call(clnt, AMQPROC_GETMNTFS, (XDRPROC_T_TYPE) xdr_void, argp, 172 (XDRPROC_T_TYPE) xdr_amq_mount_info_list, 173 (SVC_IN_ARG_TYPE) &res, TIMEOUT) != RPC_SUCCESS) { 174 return (NULL); 175 } 176 return (&res); 177 } 178 179 amq_map_info_list * 180 amqproc_getmapinfo_1(voidp argp, CLIENT *clnt) 181 { 182 static amq_map_info_list res; 183 184 memset((char *) &res, 0, sizeof(res)); 185 if (clnt_call(clnt, AMQPROC_GETMAPINFO, (XDRPROC_T_TYPE) xdr_void, argp, 186 (XDRPROC_T_TYPE) xdr_amq_map_info_list, 187 (SVC_IN_ARG_TYPE) &res, TIMEOUT) != RPC_SUCCESS) { 188 return (NULL); 189 } 190 return (&res); 191 } 192 193 194 int * 195 amqproc_mount_1(voidp argp, CLIENT *clnt) 196 { 197 static int res; 198 199 memset((char *) &res, 0, sizeof(res)); 200 if (clnt_call(clnt, AMQPROC_MOUNT, (XDRPROC_T_TYPE) xdr_amq_string, argp, 201 (XDRPROC_T_TYPE) xdr_int, (SVC_IN_ARG_TYPE) &res, 202 TIMEOUT) != RPC_SUCCESS) { 203 return (NULL); 204 } 205 return (&res); 206 } 207 208 209 amq_string * 210 amqproc_getvers_1(voidp argp, CLIENT *clnt) 211 { 212 static amq_string res; 213 214 memset((char *) &res, 0, sizeof(res)); 215 if (clnt_call(clnt, AMQPROC_GETVERS, (XDRPROC_T_TYPE) xdr_void, argp, 216 (XDRPROC_T_TYPE) xdr_amq_string, (SVC_IN_ARG_TYPE) &res, 217 TIMEOUT) != RPC_SUCCESS) { 218 return (NULL); 219 } 220 return (&res); 221 } 222 223 224 int * 225 amqproc_getpid_1(voidp argp, CLIENT *clnt) 226 { 227 static int res; 228 229 memset((char *) &res, 0, sizeof(res)); 230 if (clnt_call(clnt, AMQPROC_GETPID, (XDRPROC_T_TYPE) xdr_void, argp, 231 (XDRPROC_T_TYPE) xdr_int, (SVC_IN_ARG_TYPE) &res, 232 TIMEOUT) != RPC_SUCCESS) { 233 return (NULL); 234 } 235 return (&res); 236 } 237 238 239 amq_string * 240 amqproc_pawd_1(amq_string *argp, CLIENT *clnt) 241 { 242 static amq_string res; 243 244 memset((char *) &res, 0, sizeof(res)); 245 if (clnt_call(clnt, AMQPROC_PAWD, 246 (XDRPROC_T_TYPE) xdr_amq_string, (SVC_IN_ARG_TYPE) argp, 247 (XDRPROC_T_TYPE) xdr_amq_string, (SVC_IN_ARG_TYPE) &res, 248 TIMEOUT) != RPC_SUCCESS) { 249 return (NULL); 250 } 251 return (&res); 252 } 253