diff options
author | Karel Zak <kzak@redhat.com> | 2007-05-09 13:25:16 +0200 |
---|---|---|
committer | Karel Zak <kzak@redhat.com> | 2007-05-09 13:25:16 +0200 |
commit | 11d6b04773f9e55ebad4908d49c8404d82324e7a (patch) | |
tree | 33f4473fb27d44e6f93d21effa5567406dda7033 /mount | |
parent | e1bc6da937a2c96b3e8d06e491916a9be5f21a77 (diff) | |
download | util-linux-old-11d6b04773f9e55ebad4908d49c8404d82324e7a.tar.gz |
mount: remove all NFS code
Use /sbin/{u,}mount.nfs{,4} from nfs-utils! The mount command
will use these to mount nfs filesystems instead of internal code.
The /sbin/{u,}mount.nfs{,4} is supported from nfs-utils-1.1.0
(currently -rc1).
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'mount')
-rw-r--r-- | mount/Makefile.am | 9 | ||||
-rw-r--r-- | mount/mount.c | 23 | ||||
-rw-r--r-- | mount/nfs.5 | 225 | ||||
-rw-r--r-- | mount/nfs_mount4.h | 54 | ||||
-rw-r--r-- | mount/nfs_mount4.h.sv | 71 | ||||
-rw-r--r-- | mount/nfsmount.c | 883 | ||||
-rw-r--r-- | mount/nfsmount.h | 328 | ||||
-rw-r--r-- | mount/nfsmount.x | 336 | ||||
-rw-r--r-- | mount/nfsmount_clnt.c | 361 | ||||
-rw-r--r-- | mount/nfsmount_xdr.c | 329 | ||||
-rw-r--r-- | mount/rpcsvc/nfsmount.h | 328 | ||||
-rw-r--r-- | mount/rpcsvc/nfsmount.x | 336 | ||||
-rw-r--r-- | mount/rpcsvc/nfsmount_clnt.c | 361 | ||||
-rw-r--r-- | mount/rpcsvc/nfsmount_xdr.c | 329 | ||||
-rw-r--r-- | mount/sundries.c | 1 | ||||
-rw-r--r-- | mount/umount.c | 106 |
16 files changed, 3 insertions, 4077 deletions
diff --git a/mount/Makefile.am b/mount/Makefile.am index bd2ff1c2..95db3ddb 100644 --- a/mount/Makefile.am +++ b/mount/Makefile.am @@ -2,22 +2,19 @@ include $(top_srcdir)/config/include-Makefile.am EXTRA_DIST = README.mount swap.configure -AM_CPPFLAGS += -DHAVE_NFS - bin_PROGRAMS = mount umount sbin_PROGRAMS = losetup swapon -man_MANS = fstab.5 nfs.5 mount.8 swapoff.8 swapon.8 umount.8 losetup.8 +man_MANS = fstab.5 mount.8 swapoff.8 swapon.8 umount.8 losetup.8 MNTHDRS = fstab.h linux_fs.h mount_mntent.h mount_constants.h my_dev_t.h \ mount_paths.h get_label_uuid.h lomount.h mount_blkid.h \ - mount_guess_fstype.h nfs_mount4.h realpath.h xmalloc.h \ + mount_guess_fstype.h realpath.h xmalloc.h \ getusername.h loop.h mount_by_label.h mount_guess_rootdev.h \ - nfsmount.h sundries.h + sundries.h mount_SOURCES = mount.c fstab.c sundries.c xmalloc.c realpath.c mount_mntent.c \ get_label_uuid.c mount_by_label.c mount_blkid.c mount_guess_fstype.c \ getusername.c \ - nfsmount.c nfsmount_xdr.c nfsmount_clnt.c \ lomount.c \ $(MNTHDRS) diff --git a/mount/mount.c b/mount/mount.c index be2e4bfc..5058a7ec 100644 --- a/mount/mount.c +++ b/mount/mount.c @@ -941,7 +941,6 @@ try_mount_one (const char *spec0, const char *node0, const char *types0, int loop = 0; const char *loopdev = 0, *loopfile = 0; struct stat statbuf; - int nfs_mount_version = 0; /* any version */ /* copies for freeing on exit */ const char *opts1, *spec1, *node1, *types1, *extra_opts1; @@ -999,19 +998,6 @@ try_mount_one (const char *spec0, const char *node0, const char *types0, goto out; } - /* - * Also nfs requires a separate program, but it is built in. - */ - if (!fake && types && streq (types, "nfs")) { -retry_nfs: - mnt_err = nfsmount (spec, node, &flags, &extra_opts, &mount_opts, - &nfs_mount_version, bg); - if (mnt_err) { - res = mnt_err; - goto out; - } - } - block_signals (SIG_BLOCK); if (!fake) { @@ -1051,15 +1037,6 @@ retry_nfs: block_signals (SIG_UNBLOCK); - if (mnt_err && types && streq (types, "nfs")) { - if (nfs_mount_version == 4 && mnt_err != EBUSY && mnt_err != ENOENT) { - if (verbose) - printf(_("mount: failed with nfs mount version 4, trying 3..\n")); - nfs_mount_version = 3; - goto retry_nfs; - } - } - /* Mount failed, complain, but don't die. */ if (types == 0) { diff --git a/mount/nfs.5 b/mount/nfs.5 deleted file mode 100644 index 3f177660..00000000 --- a/mount/nfs.5 +++ /dev/null @@ -1,225 +0,0 @@ -.\" nfs.5 "Rick Sladkey" <jrs@world.std.com> -.\" Wed Feb 8 12:52:42 1995, faith@cs.unc.edu: updates for Ross Biro's -.\" patches. " -.TH NFS 5 "20 November 1993" "Linux 0.99" "Linux Programmer's Manual" -.SH NAME -nfs \- nfs fstab format and options -.SH SYNOPSIS -.B /etc/fstab -.SH DESCRIPTION -The -.I fstab -file contains information about which filesystems -to mount where and with what options. -For NFS mounts, it contains the server name and -exported server directory to mount from, -the local directory that is the mount point, -and the NFS specific options that control -the way the filesystem is mounted. -.P -Here is an example from an \fI/etc/fstab\fP file from an NFS mount. -.sp -.nf -.ta 2.5i +0.75i +0.75i +1.0i -server:/usr/local/pub /pub nfs rsize=8192,wsize=8192,timeo=14,intr -.fi -.DT -.SS Options -.TP 1.5i -.I rsize=n -The number of bytes NFS uses when reading files from an NFS server. -The default value is dependent on the kernel, currently 1024 bytes. -(However, throughput is improved greatly by asking for -.IR rsize=8192 .) -.TP 1.5i -.I wsize=n -The number of bytes NFS uses when writing files to an NFS server. -The default value is dependent on the kernel, currently 1024 bytes. -(However, throughput is improved greatly by asking for -.IR wsize=8192 .) -.TP 1.5i -.I timeo=n -The value in tenths of a second before sending the -first retransmission after an RPC timeout. -The default value is 7 tenths of a second. After the first timeout, -the timeout is doubled after each successive timeout until a maximum -timeout of 60 seconds is reached or the enough retransmissions -have occured to cause a major timeout. Then, if the filesystem -is hard mounted, each new timeout cascade restarts at twice the -initial value of the previous cascade, again doubling at each -retransmission. The maximum timeout is always 60 seconds. -Better overall performance may be achieved by increasing the -timeout when mounting on a busy network, to a slow server, or through -several routers or gateways. -.TP 1.5i -.I retrans=n -The number of minor timeouts and retransmissions that must occur before -a major timeout occurs. The default is 3 timeouts. When a major timeout -occurs, the file operation is either aborted or a "server not responding" -message is printed on the console. -.TP 1.5i -.I acregmin=n -The minimum time in seconds that attributes of a regular file should -be cached before requesting fresh information from a server. -The default is 3 seconds. -.TP 1.5i -.I acregmax=n -The maximum time in seconds that attributes of a regular file can -be cached before requesting fresh information from a server. -The default is 60 seconds. -.TP 1.5i -.I acdirmin=n -The minimum time in seconds that attributes of a directory should -be cached before requesting fresh information from a server. -The default is 30 seconds. -.TP 1.5i -.I acdirmax=n -The maximum time in seconds that attributes of a directory can -be cached before requesting fresh information from a server. -The default is 60 seconds. -.TP 1.5i -.I actimeo=n -Using actimeo sets all of -.I acregmin, -.I acregmax, -.I acdirmin, -and -.I acdirmax -to the same value. -There is no default value. -.TP 1.5i -.I retry=n -The number of minutes to retry an NFS mount operation -in the foreground or background before giving up. -The default value is 10000 minutes, which is roughly one week. -.TP 1.5i -.I namlen=n -When an NFS server does not support version two of the -RPC mount protocol, this option can be used to specify -the maximum length of a filename that is supported on -the remote filesystem. This is used to support the -POSIX pathconf functions. The default is 255 characters. -.TP 1.5i -.I port=n -The numeric value of the port to connect to the NFS server on. -If the port number is 0 (the default) then query the -remote host's portmapper for the port number to use. -If the remote host's NFS daemon is not registered with -its portmapper, the standard NFS port number 2049 is -used instead. -.TP 1.5i -.I mountport=n -The numeric value of the -.B mountd -port. -.TP 1.5i -.I mounthost=name -The name of the host running -.B mountd . -.TP 1.5i -.I mountprog=n -Use an alternate RPC program number to contact the -mount daemon on the remote host. This option is useful -for hosts that can run multiple NFS servers. -The default value is 100005 which is the standard RPC -mount daemon program number. -.TP 1.5i -.I mountvers=n -Use an alternate RPC version number to contact the -mount daemon on the remote host. This option is useful -for hosts that can run multiple NFS servers. -The default value is version 1. -.TP 1.5i -.I nfsprog=n -Use an alternate RPC program number to contact the -NFS daemon on the remote host. This option is useful -for hosts that can run multiple NFS servers. -The default value is 100003 which is the standard RPC -NFS daemon program number. -.TP 1.5i -.I nfsvers=n -Use an alternate RPC version number to contact the -NFS daemon on the remote host. This option is useful -for hosts that can run multiple NFS servers. -The default value is version 2. -.TP 1.5i -.I nolock -Disable NFS locking. Do not start lockd. -This has to be used with some old NFS servers -that don't support locking. -.TP 1.5i -.I bg -If the first NFS mount attempt times out, retry the mount -in the background. -After a mount operation is backgrounded, all subsequent mounts -on the same NFS server will be backgrounded immediately, without -first attempting the mount. -A missing mount point is treated as a timeout, -to allow for nested NFS mounts. -.TP 1.5i -.I fg -If the first NFS mount attempt times out, retry the mount -in the foreground. -This is the complement of the -.I bg -option, and also the default behavior. -.TP 1.5i -.I soft -If an NFS file operation has a major timeout then report an I/O error to -the calling program. -The default is to continue retrying NFS file operations indefinitely. -.TP 1.5i -.I hard -If an NFS file operation has a major timeout then report -"server not responding" on the console and continue retrying indefinitely. -This is the default. -.TP 1.5i -.I intr -If an NFS file operation has a major timeout and it is hard mounted, -then allow signals to interupt the file operation and cause it to -return EINTR to the calling program. The default is to not -allow file operations to be interrupted. -.TP 1.5i -.I posix -Mount the NFS filesystem using POSIX semantics. This allows -an NFS filesystem to properly support the POSIX pathconf -command by querying the mount server for the maximum length -of a filename. To do this, the remote host must support version -two of the RPC mount protocol. Many NFS servers support only -version one. -.TP 1.5i -.I nocto -Suppress the retrieval of new attributes when creating a file. -.TP 1.5i -.I noac -Disable all forms of attribute caching entirely. This extracts a -server performance penalty but it allows two different NFS clients -to get reasonable good results when both clients are actively -writing to common filesystem on the server. -.TP 1.5i -.I tcp -Mount the NFS filesystem using the TCP protocol instead of the -default UDP protocol. Many NFS servers only support UDP. -.TP 1.5i -.I udp -Mount the NFS filesystem using the UDP protocol. This -is the default. -.P -All of the non-value options have corresponding nooption forms. -For example, nointr means don't allow file operations to be -interrupted. -.SH FILES -.I /etc/fstab -.SH "SEE ALSO" -.BR fstab "(5), " mount "(8), " umount "(8), " exports (5) -.SH AUTHOR -"Rick Sladkey" <jrs@world.std.com> -.SH BUGS -The posix, and nocto options are parsed by mount -but currently are silently ignored. -.P -The tcp and namlen options are implemented but are not currently -supported by the Linux kernel. -.P -The umount command should notify the server -when an NFS filesystem is unmounted. diff --git a/mount/nfs_mount4.h b/mount/nfs_mount4.h deleted file mode 100644 index 85650773..00000000 --- a/mount/nfs_mount4.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * We want to be able to compile mount on old kernels in such a way - * that the binary will work well on more recent kernels. - * Thus, if necessary we teach nfsmount.c the structure of new fields - * that will come later. - * - * Moreover, the new kernel includes conflict with glibc includes - * so it is easiest to ignore the kernel altogether (at compile time). - */ - -#define NFS_MOUNT_VERSION 4 - -struct nfs2_fh { - char data[32]; -}; -struct nfs3_fh { - unsigned short size; - unsigned char data[64]; -}; - -struct nfs_mount_data { - int version; /* 1 */ - int fd; /* 1 */ - struct nfs2_fh old_root; /* 1 */ - int flags; /* 1 */ - int rsize; /* 1 */ - int wsize; /* 1 */ - int timeo; /* 1 */ - int retrans; /* 1 */ - int acregmin; /* 1 */ - int acregmax; /* 1 */ - int acdirmin; /* 1 */ - int acdirmax; /* 1 */ - struct sockaddr_in addr; /* 1 */ - char hostname[256]; /* 1 */ - int namlen; /* 2 */ - unsigned int bsize; /* 3 */ - struct nfs3_fh root; /* 4 */ -}; - -/* bits in the flags field */ - -#define NFS_MOUNT_SOFT 0x0001 /* 1 */ -#define NFS_MOUNT_INTR 0x0002 /* 1 */ -#define NFS_MOUNT_SECURE 0x0004 /* 1 */ -#define NFS_MOUNT_POSIX 0x0008 /* 1 */ -#define NFS_MOUNT_NOCTO 0x0010 /* 1 */ -#define NFS_MOUNT_NOAC 0x0020 /* 1 */ -#define NFS_MOUNT_TCP 0x0040 /* 2 */ -#define NFS_MOUNT_VER3 0x0080 /* 3 */ -#define NFS_MOUNT_KERBEROS 0x0100 /* 3 */ -#define NFS_MOUNT_NONLM 0x0200 /* 3 */ -#define NFS_MOUNT_BROKEN_SUID 0x0400 /* 4 */ - diff --git a/mount/nfs_mount4.h.sv b/mount/nfs_mount4.h.sv deleted file mode 100644 index f3111d78..00000000 --- a/mount/nfs_mount4.h.sv +++ /dev/null @@ -1,71 +0,0 @@ -/* - * We want to be able to compile mount on old kernels in such a way - * that the binary will work well on more recent kernels. - * Thus, if necessary we teach nfsmount.c the structure of new fields - * that will come later. - */ -#include "nfs_mountversion.h" - -#if KERNEL_NFS_MOUNT_VERSION >= 4 - -/* - * The kernel includes are at least as good as this file. - * Use them. - */ -#include <linux/nfs_mount.h> - -#define NFS_FHSIZE 32 -#define NFS_PORT 2049 -#define NFS_VERSION 2 - - -#else /* KERNEL_NFS_MOUNT_VERSION < 4 */ - -/* - * We know more than the kernel. Override the kernel defines. - * Check at runtime whether the running kernel can handle the new stuff. - */ -#define NFS_MOUNT_VERSION 4 - -struct nfs2_fh { - char data[32]; -}; -struct nfs3_fh { - unsigned short size; - unsigned char data[64]; -}; - -struct nfs_mount_data { - int version; /* 1 */ - int fd; /* 1 */ - struct nfs2_fh old_root; /* 1 */ - int flags; /* 1 */ - int rsize; /* 1 */ - int wsize; /* 1 */ - int timeo; /* 1 */ - int retrans; /* 1 */ - int acregmin; /* 1 */ - int acregmax; /* 1 */ - int acdirmin; /* 1 */ - int acdirmax; /* 1 */ - struct sockaddr_in addr; /* 1 */ - char hostname[256]; /* 1 */ - int namlen; /* 2 */ - unsigned int bsize; /* 3 */ - struct nfs3_fh root; /* 4 */ -}; - -/* bits in the flags field */ - -#define NFS_MOUNT_SOFT 0x0001 /* 1 */ -#define NFS_MOUNT_INTR 0x0002 /* 1 */ -#define NFS_MOUNT_SECURE 0x0004 /* 1 */ -#define NFS_MOUNT_POSIX 0x0008 /* 1 */ -#define NFS_MOUNT_NOCTO 0x0010 /* 1 */ -#define NFS_MOUNT_NOAC 0x0020 /* 1 */ -#define NFS_MOUNT_TCP 0x0040 /* 2 */ -#define NFS_MOUNT_VER3 0x0080 /* 3 */ -#define NFS_MOUNT_KERBEROS 0x0100 /* 3 */ -#define NFS_MOUNT_NONLM 0x0200 /* 3 */ - -#endif diff --git a/mount/nfsmount.c b/mount/nfsmount.c deleted file mode 100644 index 1e76f9dc..00000000 --- a/mount/nfsmount.c +++ /dev/null @@ -1,883 +0,0 @@ -/* - * nfsmount.c -- Linux NFS mount - * Copyright (C) 1993 Rick Sladkey <jrs@world.std.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * Wed Feb 8 12:51:48 1995, biro@yggdrasil.com (Ross Biro): allow all port - * numbers to be specified on the command line. - * - * Fri, 8 Mar 1996 18:01:39, Swen Thuemmler <swen@uni-paderborn.de>: - * Omit the call to connect() for Linux version 1.3.11 or later. - * - * Wed Oct 1 23:55:28 1997: Dick Streefland <dick_streefland@tasking.com> - * Implemented the "bg", "fg" and "retry" mount options for NFS. - * - * 1999-02-22 Arkadiusz Mi¶kiewicz <misiek@pld.ORG.PL> - * - added Native Language Support - * - * Modified by Olaf Kirch and Trond Myklebust for new NFS code, - * plus NFSv3 stuff. - */ - -/* - * nfsmount.c,v 1.1.1.1 1993/11/18 08:40:51 jrs Exp - */ - -#include <unistd.h> -#include <stdio.h> -#include <string.h> -#include <errno.h> -#include <netdb.h> -#include <time.h> -#include <rpc/rpc.h> -#include <rpc/pmap_prot.h> -#include <rpc/pmap_clnt.h> -#include <sys/socket.h> -#include <sys/time.h> -#include <sys/utsname.h> -#include <sys/stat.h> -#include <netinet/in.h> -#include <arpa/inet.h> - -#include "sundries.h" -#include "nfsmount.h" - -#ifdef HAVE_RPCSVC_NFS_PROT_H -#include <rpcsvc/nfs_prot.h> -#else -#include <linux/nfs.h> -#define nfsstat nfs_stat -#endif - -#include "mount_constants.h" -#include "nfs_mount4.h" - -#include "nls.h" - -#ifndef NFS_PORT -#define NFS_PORT 2049 -#endif -#ifndef NFS_FHSIZE -#define NFS_FHSIZE 32 -#endif - -static char *nfs_strerror(int stat); - -#define MAKE_VERSION(p,q,r) (65536*(p) + 256*(q) + (r)) - -#define MAX_NFSPROT ((nfs_mount_version >= 4) ? 3 : 2) - -static int -linux_version_code(void) { - struct utsname my_utsname; - int p, q, r; - - if (uname(&my_utsname) == 0) { - p = atoi(strtok(my_utsname.release, ".")); - q = atoi(strtok(NULL, ".")); - r = atoi(strtok(NULL, ".")); - return MAKE_VERSION(p,q,r); - } - return 0; -} - -/* - * Unfortunately, the kernel prints annoying console messages - * in case of an unexpected nfs mount version (instead of - * just returning some error). Therefore we'll have to try - * and figure out what version the kernel expects. - * - * Variables: - * NFS_MOUNT_VERSION: these nfsmount sources at compile time - * nfs_mount_version: version this source and running kernel can handle - */ -static int -find_kernel_nfs_mount_version(void) { - static int kernel_version = -1; - int nfs_mount_version = NFS_MOUNT_VERSION; - - if (kernel_version == -1) - kernel_version = linux_version_code(); - - if (kernel_version) { - if (kernel_version < MAKE_VERSION(2,1,32)) - nfs_mount_version = 1; - else if (kernel_version < MAKE_VERSION(2,2,18)) - nfs_mount_version = 3; - else if (kernel_version < MAKE_VERSION(2,3,0)) - nfs_mount_version = 4; /* since 2.2.18pre9 */ - else if (kernel_version < MAKE_VERSION(2,3,99)) - nfs_mount_version = 3; - else - nfs_mount_version = 4; /* since 2.3.99pre4 */ - } - if (nfs_mount_version > NFS_MOUNT_VERSION) - nfs_mount_version = NFS_MOUNT_VERSION; - return nfs_mount_version; -} - -static struct pmap * -get_mountport(struct sockaddr_in *server_addr, - long unsigned prog, - long unsigned version, - long unsigned proto, - long unsigned port, - int nfs_mount_version) -{ - struct pmaplist *pmap; - static struct pmap p = {0, 0, 0, 0}; - - if (version > MAX_NFSPROT) - version = MAX_NFSPROT; - if (!prog) - prog = MOUNTPROG; - p.pm_prog = prog; - p.pm_vers = version; - p.pm_prot = proto; - p.pm_port = port; - - server_addr->sin_port = PMAPPORT; - pmap = pmap_getmaps(server_addr); - - while (pmap) { - if (pmap->pml_map.pm_prog != prog) - goto next; - if (!version && p.pm_vers > pmap->pml_map.pm_vers) - goto next; - if (version > 2 && pmap->pml_map.pm_vers != version) - goto next; - if (version && version <= 2 && pmap->pml_map.pm_vers > 2) - goto next; - if (pmap->pml_map.pm_vers > MAX_NFSPROT || - (proto && p.pm_prot && pmap->pml_map.pm_prot != proto) || - (port && pmap->pml_map.pm_port != port)) - goto next; - memcpy(&p, &pmap->pml_map, sizeof(p)); - next: - pmap = pmap->pml_next; - } - if (!p.pm_vers) - p.pm_vers = MOUNTVERS; - if (!p.pm_prot) - p.pm_prot = IPPROTO_TCP; -#if 0 - if (!p.pm_port) { - p.pm_port = pmap_getport(server_addr, p.pm_prog, p.pm_vers, - p.pm_prot); - } -#endif -#if 0 -#define MOUNTPORT 635 - /* HJLu wants to remove all traces of the old default port. - Are there still people running a mount RPC service on this - port without having a portmapper? */ - if (!p.pm_port) - p.pm_port = MOUNTPORT; -#endif - return &p; -} - -int nfsmount(const char *spec, const char *node, int *flags, - char **extra_opts, char **mount_opts, int *nfs_mount_vers, - int running_bg) -{ - static char *prev_bg_host; - char hostdir[1024]; - CLIENT *mclient; - char *hostname, *dirname, *old_opts, *mounthost = NULL; - char new_opts[1024]; - struct timeval total_timeout; - enum clnt_stat clnt_stat; - static struct nfs_mount_data data; - char *opt, *opteq; - int nfs_mount_version; - int val; - struct hostent *hp; - struct sockaddr_in server_addr; - struct sockaddr_in mount_server_addr; - struct pmap *pm_mnt; - int msock, fsock; - struct timeval retry_timeout; - union { - struct fhstatus nfsv2; - struct mountres3 nfsv3; - } status; - struct stat statbuf; - char *s; - int port, mountport, proto, bg, soft, intr; - int posix, nocto, noac, nolock, broken_suid; - int retry, tcp; - int mountprog, mountvers, nfsprog, nfsvers; - int retval; - time_t t; - time_t prevt; - time_t timeout; - - /* The version to try is either specified or 0 - In case it is 0 we tell the caller what we tried */ - if (!*nfs_mount_vers) - *nfs_mount_vers = find_kernel_nfs_mount_version(); - nfs_mount_version = *nfs_mount_vers; - - retval = EX_FAIL; - msock = fsock = -1; - mclient = NULL; - if (strlen(spec) >= sizeof(hostdir)) { - fprintf(stderr, _("mount: " - "excessively long host:dir argument\n")); - goto fail; - } - strcpy(hostdir, spec); - if ((s = strchr(hostdir, ':'))) { - hostname = hostdir; - dirname = s + 1; - *s = '\0'; - /* Ignore all but first hostname in replicated mounts - until they can be fully supported. (mack@sgi.com) */ - if ((s = strchr(hostdir, ','))) { - *s = '\0'; - fprintf(stderr, - _("mount: warning: " - "multiple hostnames not supported\n")); - } - } else { - fprintf(stderr, - _("mount: " - "directory to mount not in host:dir format\n")); - goto fail; - } - - server_addr.sin_family = AF_INET; -#ifdef HAVE_INET_ATON - if (!inet_aton(hostname, &server_addr.sin_addr)) -#endif - { - if ((hp = gethostbyname(hostname)) == NULL) { - fprintf(stderr, _("mount: can't get address for %s\n"), - hostname); - goto fail; - } else { - if (hp->h_length > sizeof(struct in_addr)) { - fprintf(stderr, - _("mount: got bad hp->h_length\n")); - hp->h_length = sizeof(struct in_addr); - } - memcpy(&server_addr.sin_addr, - hp->h_addr, hp->h_length); - } - } - - memcpy (&mount_server_addr, &server_addr, sizeof (mount_server_addr)); - - /* add IP address to mtab options for use when unmounting */ - - s = inet_ntoa(server_addr.sin_addr); - old_opts = *extra_opts; - if (!old_opts) - old_opts = ""; - if (strlen(old_opts) + strlen(s) + 10 >= sizeof(new_opts)) { - fprintf(stderr, _("mount: " - "excessively long option argument\n")); - goto fail; - } - sprintf(new_opts, "%s%saddr=%s", - old_opts, *old_opts ? "," : "", s); - *extra_opts = xstrdup(new_opts); - - /* Set default options. - * rsize/wsize (and bsize, for ver >= 3) are left 0 in order to - * let the kernel decide. - * timeo is filled in after we know whether it'll be TCP or UDP. */ - memset(&data, 0, sizeof(data)); - data.retrans = 3; - data.acregmin = 3; - data.acregmax = 60; - data.acdirmin = 30; - data.acdirmax = 60; -#if NFS_MOUNT_VERSION >= 2 - data.namlen = NAME_MAX; -#endif - - bg = 0; - soft = 0; - intr = 0; - posix = 0; - nocto = 0; - nolock = 0; - broken_suid = 0; - noac = 0; - retry = 10000; /* 10000 minutes ~ 1 week */ - tcp = 0; - - mountprog = MOUNTPROG; - mountvers = 0; - port = 0; - mountport = 0; - nfsprog = NFS_PROGRAM; - nfsvers = 0; - - /* parse options */ - - for (opt = strtok(old_opts, ","); opt; opt = strtok(NULL, ",")) { - if ((opteq = strchr(opt, '='))) { - val = atoi(opteq + 1); - *opteq = '\0'; - if (!strcmp(opt, "rsize")) - data.rsize = val; - else if (!strcmp(opt, "wsize")) - data.wsize = val; - else if (!strcmp(opt, "timeo")) - data.timeo = val; - else if (!strcmp(opt, "retrans")) - data.retrans = val; - else if (!strcmp(opt, "acregmin")) - data.acregmin = val; - else if (!strcmp(opt, "acregmax")) - data.acregmax = val; - else if (!strcmp(opt, "acdirmin")) - data.acdirmin = val; - else if (!strcmp(opt, "acdirmax")) - data.acdirmax = val; - else if (!strcmp(opt, "actimeo")) { - data.acregmin = val; - data.acregmax = val; - data.acdirmin = val; - data.acdirmax = val; - } - else if (!strcmp(opt, "retry")) - retry = val; - else if (!strcmp(opt, "port")) - port = val; - else if (!strcmp(opt, "mountport")) - mountport = val; - else if (!strcmp(opt, "mounthost")) - mounthost=xstrndup(opteq+1, - strcspn(opteq+1," \t\n\r,")); - else if (!strcmp(opt, "mountprog")) - mountprog = val; - else if (!strcmp(opt, "mountvers")) - mountvers = val; - else if (!strcmp(opt, "nfsprog")) - nfsprog = val; - else if (!strcmp(opt, "nfsvers") || - !strcmp(opt, "vers")) - nfsvers = val; - else if (!strcmp(opt, "proto")) { - if (!strncmp(opteq+1, "tcp", 3)) - tcp = 1; - else if (!strncmp(opteq+1, "udp", 3)) - tcp = 0; - else - printf(_("Warning: Unrecognized proto= option.\n")); - } else if (!strcmp(opt, "namlen")) { -#if NFS_MOUNT_VERSION >= 2 - if (nfs_mount_version >= 2) - data.namlen = val; - else -#endif - printf(_("Warning: Option namlen is not supported.\n")); - } else if (!strcmp(opt, "addr")) { - /* ignore */; - } else { - printf(_("unknown nfs mount parameter: " - "%s=%d\n"), opt, val); - goto fail; - } - } else { - val = 1; - if (!strncmp(opt, "no", 2)) { - val = 0; - opt += 2; - } - if (!strcmp(opt, "bg")) - bg = val; - else if (!strcmp(opt, "fg")) - bg = !val; - else if (!strcmp(opt, "soft")) - soft = val; - else if (!strcmp(opt, "hard")) - soft = !val; - else if (!strcmp(opt, "intr")) - intr = val; - else if (!strcmp(opt, "posix")) - posix = val; - else if (!strcmp(opt, "cto")) - nocto = !val; - else if (!strcmp(opt, "ac")) - noac = !val; - else if (!strcmp(opt, "tcp")) - tcp = val; - else if (!strcmp(opt, "udp")) - tcp = !val; - else if (!strcmp(opt, "lock")) { - if (nfs_mount_version >= 3) - nolock = !val; - else - printf(_("Warning: option nolock is not supported.\n")); - } else if (!strcmp(opt, "broken_suid")) { - broken_suid = val; - } else { - if (!sloppy) { - printf(_("unknown nfs mount option: " - "%s%s\n"), val ? "" : "no", opt); - goto fail; - } - } - } - } - proto = (tcp) ? IPPROTO_TCP : IPPROTO_UDP; - - data.flags = (soft ? NFS_MOUNT_SOFT : 0) - | (intr ? NFS_MOUNT_INTR : 0) - | (posix ? NFS_MOUNT_POSIX : 0) - | (nocto ? NFS_MOUNT_NOCTO : 0) - | (noac ? NFS_MOUNT_NOAC : 0); -#if NFS_MOUNT_VERSION >= 2 - if (nfs_mount_version >= 2) - data.flags |= (tcp ? NFS_MOUNT_TCP : 0); -#endif -#if NFS_MOUNT_VERSION >= 3 - if (nfs_mount_version >= 3) - data.flags |= (nolock ? NFS_MOUNT_NONLM : 0); -#endif -#if NFS_MOUNT_VERSION >= 4 - if (nfs_mount_version >= 4) - data.flags |= (broken_suid ? NFS_MOUNT_BROKEN_SUID : 0); -#endif - if (nfsvers > MAX_NFSPROT) { - fprintf(stderr, "NFSv%d not supported!\n", nfsvers); - return 0; - } - if (mountvers > MAX_NFSPROT) { - fprintf(stderr, "NFSv%d not supported!\n", nfsvers); - return 0; - } - if (nfsvers && !mountvers) - mountvers = (nfsvers < 3) ? 1 : nfsvers; - if (nfsvers && nfsvers < mountvers) - mountvers = nfsvers; - - /* Adjust options if none specified */ - if (!data.timeo) - data.timeo = tcp ? 70 : 7; - -#ifdef NFS_MOUNT_DEBUG - printf("rsize = %d, wsize = %d, timeo = %d, retrans = %d\n", - data.rsize, data.wsize, data.timeo, data.retrans); - printf("acreg (min, max) = (%d, %d), acdir (min, max) = (%d, %d)\n", - data.acregmin, data.acregmax, data.acdirmin, data.acdirmax); - printf("port = %d, bg = %d, retry = %d, flags = %.8x\n", - port, bg, retry, data.flags); - printf("mountprog = %d, mountvers = %d, nfsprog = %d, nfsvers = %d\n", - mountprog, mountvers, nfsprog, nfsvers); - printf("soft = %d, intr = %d, posix = %d, nocto = %d, noac = %d\n", - (data.flags & NFS_MOUNT_SOFT) != 0, - (data.flags & NFS_MOUNT_INTR) != 0, - (data.flags & NFS_MOUNT_POSIX) != 0, - (data.flags & NFS_MOUNT_NOCTO) != 0, - (data.flags & NFS_MOUNT_NOAC) != 0); -#if NFS_MOUNT_VERSION >= 2 - printf("tcp = %d\n", - (data.flags & NFS_MOUNT_TCP) != 0); -#endif -#endif - - data.version = nfs_mount_version; - *mount_opts = (char *) &data; - - if (*flags & MS_REMOUNT) - return 0; - - /* - * If the previous mount operation on the same host was - * backgrounded, and the "bg" for this mount is also set, - * give up immediately, to avoid the initial timeout. - */ - if (bg && !running_bg && - prev_bg_host && strcmp(hostname, prev_bg_host) == 0) { - if (retry > 0) - retval = EX_BG; - return retval; - } - - /* create mount deamon client */ - /* See if the nfs host = mount host. */ - if (mounthost) { - if (mounthost[0] >= '0' && mounthost[0] <= '9') { - mount_server_addr.sin_family = AF_INET; - mount_server_addr.sin_addr.s_addr = inet_addr(hostname); - } else { - if ((hp = gethostbyname(mounthost)) == NULL) { - fprintf(stderr, _("mount: can't get address for %s\n"), - mounthost); - goto fail; - } else { - if (hp->h_length > sizeof(struct in_addr)) { - fprintf(stderr, - _("mount: got bad hp->h_length?\n")); - hp->h_length = sizeof(struct in_addr); - } - mount_server_addr.sin_family = AF_INET; - memcpy(&mount_server_addr.sin_addr, - hp->h_addr, hp->h_length); - } - } - } - - /* - * The following loop implements the mount retries. On the first - * call, "running_bg" is 0. When the mount times out, and the - * "bg" option is set, the exit status EX_BG will be returned. - * For a backgrounded mount, there will be a second call by the - * child process with "running_bg" set to 1. - * - * The case where the mount point is not present and the "bg" - * option is set, is treated as a timeout. This is done to - * support nested mounts. - * - * The "retry" count specified by the user is the number of - * minutes to retry before giving up. - * - * Only the first error message will be displayed. - */ - retry_timeout.tv_sec = 3; - retry_timeout.tv_usec = 0; - total_timeout.tv_sec = 20; - total_timeout.tv_usec = 0; - timeout = time(NULL) + 60 * retry; - prevt = 0; - t = 30; - val = 1; - - for (;;) { - if (bg && stat(node, &statbuf) == -1) { - /* no mount point yet - sleep */ - if (running_bg) { - sleep(val); /* 1, 2, 4, 8, 16, 30, ... */ - val *= 2; - if (val > 30) - val = 30; - } - } else { - /* be careful not to use too many CPU cycles */ - if (t - prevt < 30) - sleep(30); - - pm_mnt = get_mountport(&mount_server_addr, - mountprog, - mountvers, - proto, - mountport, - nfs_mount_version); - - /* contact the mount daemon via TCP */ - mount_server_addr.sin_port = htons(pm_mnt->pm_port); - msock = RPC_ANYSOCK; - - switch (pm_mnt->pm_prot) { - case IPPROTO_UDP: - mclient = clntudp_create(&mount_server_addr, - pm_mnt->pm_prog, - pm_mnt->pm_vers, - retry_timeout, - &msock); - if (mclient) - break; - mount_server_addr.sin_port = - htons(pm_mnt->pm_port); - msock = RPC_ANYSOCK; - case IPPROTO_TCP: - mclient = clnttcp_create(&mount_server_addr, - pm_mnt->pm_prog, - pm_mnt->pm_vers, - &msock, 0, 0); - break; - default: - mclient = 0; - } - - if (mclient) { - /* try to mount hostname:dirname */ - mclient->cl_auth = authunix_create_default(); - - /* make pointers in xdr_mountres3 NULL so - * that xdr_array allocates memory for us - */ - memset(&status, 0, sizeof(status)); - - if (pm_mnt->pm_vers == 3) - clnt_stat = clnt_call(mclient, - MOUNTPROC3_MNT, - (xdrproc_t) xdr_dirpath, - (caddr_t) &dirname, - (xdrproc_t) xdr_mountres3, - (caddr_t) &status, - total_timeout); - else - clnt_stat = clnt_call(mclient, - MOUNTPROC_MNT, - (xdrproc_t) xdr_dirpath, - (caddr_t) &dirname, - (xdrproc_t) xdr_fhstatus, - (caddr_t) &status, - total_timeout); - - if (clnt_stat == RPC_SUCCESS) - break; /* we're done */ -#if 0 - /* errno? who sets errno? */ - /* this fragment breaks bg mounting */ - if (errno != ECONNREFUSED) { - clnt_perror(mclient, "mount"); - goto fail; /* don't retry */ - } -#endif - if (!running_bg && prevt == 0) - clnt_perror(mclient, "mount"); - auth_destroy(mclient->cl_auth); - clnt_destroy(mclient); - mclient = 0; - close(msock); - } else { - if (!running_bg && prevt == 0) - clnt_pcreateerror("mount"); - } - prevt = t; - } - - if (!bg) - goto fail; - if (!running_bg) { - prev_bg_host = xstrdup(hostname); - if (retry > 0) - retval = EX_BG; - goto fail; - } - t = time(NULL); - if (t >= timeout) - goto fail; - } - nfsvers = (pm_mnt->pm_vers < 2) ? 2 : pm_mnt->pm_vers; - - if (nfsvers == 2) { - if (status.nfsv2.fhs_status != 0) { - fprintf(stderr, - "mount: %s:%s failed, reason given by server: %s\n", - hostname, dirname, - nfs_strerror(status.nfsv2.fhs_status)); - goto fail; - } - memcpy(data.root.data, - (char *) status.nfsv2.fhstatus_u.fhs_fhandle, - NFS_FHSIZE); -#if NFS_MOUNT_VERSION >= 4 - data.root.size = NFS_FHSIZE; - memcpy(data.old_root.data, - (char *) status.nfsv2.fhstatus_u.fhs_fhandle, - NFS_FHSIZE); -#endif - } else { -#if NFS_MOUNT_VERSION >= 4 - fhandle3 *fhandle; - if (status.nfsv3.fhs_status != 0) { - fprintf(stderr, - "mount: %s:%s failed, reason given by server: %s\n", - hostname, dirname, - nfs_strerror(status.nfsv3.fhs_status)); - goto fail; - } - fhandle = &status.nfsv3.mountres3_u.mountinfo.fhandle; - memset(data.old_root.data, 0, NFS_FHSIZE); - memset(&data.root, 0, sizeof(data.root)); - data.root.size = fhandle->fhandle3_len; - memcpy(data.root.data, - (char *) fhandle->fhandle3_val, - fhandle->fhandle3_len); - - data.flags |= NFS_MOUNT_VER3; -#endif - } - - /* create nfs socket for kernel */ - - if (tcp) { - if (nfs_mount_version < 3) { - printf(_("NFS over TCP is not supported.\n")); - goto fail; - } - fsock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); - } else - fsock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); - if (fsock < 0) { - perror(_("nfs socket")); - goto fail; - } - if (bindresvport(fsock, 0) < 0) { - perror(_("nfs bindresvport")); - goto fail; - } - if (port == 0) { - server_addr.sin_port = PMAPPORT; - port = pmap_getport(&server_addr, nfsprog, nfsvers, - tcp ? IPPROTO_TCP : IPPROTO_UDP); -#if 1 - /* Here we check to see if user is mounting with the - * tcp option. If so, and if the portmap returns a - * '0' for port (service unavailable), we then exit, - * notifying the user, rather than hanging up mount. - */ - if (port == 0 && tcp == 1) { - perror(_("nfs server reported service unavailable")); - goto fail; - } -#endif - - if (port == 0) - port = NFS_PORT; -#ifdef NFS_MOUNT_DEBUG - else - printf(_("used portmapper to find NFS port\n")); -#endif - } -#ifdef NFS_MOUNT_DEBUG - printf(_("using port %d for nfs deamon\n"), port); -#endif - server_addr.sin_port = htons(port); - /* - * connect() the socket for kernels 1.3.10 and below only, - * to avoid problems with multihomed hosts. - * --Swen - */ - if (linux_version_code() <= 66314 - && connect(fsock, (struct sockaddr *) &server_addr, - sizeof (server_addr)) < 0) { - perror(_("nfs connect")); - goto fail; - } - - /* prepare data structure for kernel */ - - data.fd = fsock; - memcpy((char *) &data.addr, (char *) &server_addr, sizeof(data.addr)); - strncpy(data.hostname, hostname, sizeof(data.hostname)); - - /* clean up */ - - auth_destroy(mclient->cl_auth); - clnt_destroy(mclient); - close(msock); - return 0; - - /* abort */ - - fail: - if (msock != -1) { - if (mclient) { - auth_destroy(mclient->cl_auth); - clnt_destroy(mclient); - } - close(msock); - } - if (fsock != -1) - close(fsock); - return retval; -} - -/* - * We need to translate between nfs status return values and - * the local errno values which may not be the same. - * - * Andreas Schwab <schwab@LS5.informatik.uni-dortmund.de>: change errno: - * "after #include <errno.h> the symbol errno is reserved for any use, - * it cannot even be used as a struct tag or field name". - */ - -#ifndef EDQUOT -#define EDQUOT ENOSPC -#endif - -static struct { - enum nfsstat stat; - int errnum; -} nfs_errtbl[] = { - { NFS_OK, 0 }, - { NFSERR_PERM, EPERM }, - { NFSERR_NOENT, ENOENT }, - { NFSERR_IO, EIO }, - { NFSERR_NXIO, ENXIO }, - { NFSERR_ACCES, EACCES }, - { NFSERR_EXIST, EEXIST }, - { NFSERR_NODEV, ENODEV }, - { NFSERR_NOTDIR, ENOTDIR }, - { NFSERR_ISDIR, EISDIR }, -#ifdef NFSERR_INVAL - { NFSERR_INVAL, EINVAL }, /* that Sun forgot */ -#endif - { NFSERR_FBIG, EFBIG }, - { NFSERR_NOSPC, ENOSPC }, - { NFSERR_ROFS, EROFS }, - { NFSERR_NAMETOOLONG, ENAMETOOLONG }, - { NFSERR_NOTEMPTY, ENOTEMPTY }, - { NFSERR_DQUOT, EDQUOT }, - { NFSERR_STALE, ESTALE }, -#ifdef EWFLUSH - { NFSERR_WFLUSH, EWFLUSH }, -#endif - /* Throw in some NFSv3 values for even more fun (HP returns these) */ - { 71, EREMOTE }, - - { -1, EIO } -}; - -static char *nfs_strerror(int stat) -{ - int i; - static char buf[256]; - - for (i = 0; nfs_errtbl[i].stat != -1; i++) { - if (nfs_errtbl[i].stat == stat) - return strerror(nfs_errtbl[i].errnum); - } - sprintf(buf, _("unknown nfs status return value: %d"), stat); - return buf; -} - -#if 0 -int -my_getport(struct in_addr server, struct timeval *timeo, ...) -{ - struct sockaddr_in sin; - struct pmap pmap; - CLIENT *clnt; - int sock = RPC_ANYSOCK, port; - - pmap.pm_prog = prog; - pmap.pm_vers = vers; - pmap.pm_prot = prot; - pmap.pm_port = 0; - sin.sin_family = AF_INET; - sin.sin_addr = server; - sin.sin_port = htons(111); - clnt = clntudp_create(&sin, 100000, 2, *timeo, &sock); - status = clnt_call(clnt, PMAP_GETPORT, - &pmap, (xdrproc_t) xdr_pmap, - &port, (xdrproc_t) xdr_uint); - if (status != SUCCESS) { - /* natter */ - port = 0; - } - - clnt_destroy(clnt); - close(sock); - return port; -} -#endif diff --git a/mount/nfsmount.h b/mount/nfsmount.h deleted file mode 100644 index aa4a93bd..00000000 --- a/mount/nfsmount.h +++ /dev/null @@ -1,328 +0,0 @@ -/* - * Please do not edit this file. - * It was generated using rpcgen. - */ - -#ifndef _NFSMOUNT_H_RPCGEN -#define _NFSMOUNT_H_RPCGEN - -#include <rpc/rpc.h> - - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user or with the express written consent of - * Sun Microsystems, Inc. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -/* - * Copyright (c) 1985, 1990 by Sun Microsystems, Inc. - */ - -/* from @(#)mount.x 1.3 91/03/11 TIRPC 1.0 */ -#ifndef _rpcsvc_mount_h -#define _rpcsvc_mount_h -#include <asm/types.h> -#define MNTPATHLEN 1024 -#define MNTNAMLEN 255 -#define FHSIZE 32 -#define FHSIZE3 64 - -typedef char fhandle[FHSIZE]; - -typedef struct { - u_int fhandle3_len; - char *fhandle3_val; -} fhandle3; - -enum mountstat3 { - MNT_OK = 0, - MNT3ERR_PERM = 1, - MNT3ERR_NOENT = 2, - MNT3ERR_IO = 5, - MNT3ERR_ACCES = 13, - MNT3ERR_NOTDIR = 20, - MNT3ERR_INVAL = 22, - MNT3ERR_NAMETOOLONG = 63, - MNT3ERR_NOTSUPP = 10004, - MNT3ERR_SERVERFAULT = 10006, -}; -typedef enum mountstat3 mountstat3; - -struct fhstatus { - u_int fhs_status; - union { - fhandle fhs_fhandle; - } fhstatus_u; -}; -typedef struct fhstatus fhstatus; - -struct mountres3_ok { - fhandle3 fhandle; - struct { - u_int auth_flavours_len; - int *auth_flavours_val; - } auth_flavours; -}; -typedef struct mountres3_ok mountres3_ok; - -struct mountres3 { - mountstat3 fhs_status; - union { - mountres3_ok mountinfo; - } mountres3_u; -}; -typedef struct mountres3 mountres3; - -typedef char *dirpath; - -typedef char *name; - -typedef struct mountbody *mountlist; - -struct mountbody { - name ml_hostname; - dirpath ml_directory; - mountlist ml_next; -}; -typedef struct mountbody mountbody; - -typedef struct groupnode *groups; - -struct groupnode { - name gr_name; - groups gr_next; -}; -typedef struct groupnode groupnode; - -typedef struct exportnode *exports; - -struct exportnode { - dirpath ex_dir; - groups ex_groups; - exports ex_next; -}; -typedef struct exportnode exportnode; - -struct ppathcnf { - int pc_link_max; - short pc_max_canon; - short pc_max_input; - short pc_name_max; - short pc_path_max; - short pc_pipe_buf; - u_char pc_vdisable; - char pc_xxx; - short pc_mask[2]; -}; -typedef struct ppathcnf ppathcnf; -#endif /*!_rpcsvc_mount_h*/ - -#define MOUNTPROG 100005 -#define MOUNTVERS 1 - -#if defined(__STDC__) || defined(__cplusplus) -#define MOUNTPROC_NULL 0 -extern void * mountproc_null_1(void *, CLIENT *); -extern void * mountproc_null_1_svc(void *, struct svc_req *); -#define MOUNTPROC_MNT 1 -extern fhstatus * mountproc_mnt_1(dirpath *, CLIENT *); -extern fhstatus * mountproc_mnt_1_svc(dirpath *, struct svc_req *); -#define MOUNTPROC_DUMP 2 -extern mountlist * mountproc_dump_1(void *, CLIENT *); -extern mountlist * mountproc_dump_1_svc(void *, struct svc_req *); -#define MOUNTPROC_UMNT 3 -extern void * mountproc_umnt_1(dirpath *, CLIENT *); -extern void * mountproc_umnt_1_svc(dirpath *, struct svc_req *); -#define MOUNTPROC_UMNTALL 4 -extern void * mountproc_umntall_1(void *, CLIENT *); -extern void * mountproc_umntall_1_svc(void *, struct svc_req *); -#define MOUNTPROC_EXPORT 5 -extern exports * mountproc_export_1(void *, CLIENT *); -extern exports * mountproc_export_1_svc(void *, struct svc_req *); -#define MOUNTPROC_EXPORTALL 6 -extern exports * mountproc_exportall_1(void *, CLIENT *); -extern exports * mountproc_exportall_1_svc(void *, struct svc_req *); -extern int mountprog_1_freeresult (SVCXPRT *, xdrproc_t, caddr_t); - -#else /* K&R C */ -#define MOUNTPROC_NULL 0 -extern void * mountproc_null_1(); -extern void * mountproc_null_1_svc(); -#define MOUNTPROC_MNT 1 -extern fhstatus * mountproc_mnt_1(); -extern fhstatus * mountproc_mnt_1_svc(); -#define MOUNTPROC_DUMP 2 -extern mountlist * mountproc_dump_1(); -extern mountlist * mountproc_dump_1_svc(); -#define MOUNTPROC_UMNT 3 -extern void * mountproc_umnt_1(); -extern void * mountproc_umnt_1_svc(); -#define MOUNTPROC_UMNTALL 4 -extern void * mountproc_umntall_1(); -extern void * mountproc_umntall_1_svc(); -#define MOUNTPROC_EXPORT 5 -extern exports * mountproc_export_1(); -extern exports * mountproc_export_1_svc(); -#define MOUNTPROC_EXPORTALL 6 -extern exports * mountproc_exportall_1(); -extern exports * mountproc_exportall_1_svc(); -extern int mountprog_1_freeresult (); -#endif /* K&R C */ -#define MOUNTVERS_POSIX 2 - -#if defined(__STDC__) || defined(__cplusplus) -extern void * mountproc_null_2(void *, CLIENT *); -extern void * mountproc_null_2_svc(void *, struct svc_req *); -extern fhstatus * mountproc_mnt_2(dirpath *, CLIENT *); -extern fhstatus * mountproc_mnt_2_svc(dirpath *, struct svc_req *); -extern mountlist * mountproc_dump_2(void *, CLIENT *); -extern mountlist * mountproc_dump_2_svc(void *, struct svc_req *); -extern void * mountproc_umnt_2(dirpath *, CLIENT *); -extern void * mountproc_umnt_2_svc(dirpath *, struct svc_req *); -extern void * mountproc_umntall_2(void *, CLIENT *); -extern void * mountproc_umntall_2_svc(void *, struct svc_req *); -extern exports * mountproc_export_2(void *, CLIENT *); -extern exports * mountproc_export_2_svc(void *, struct svc_req *); -extern exports * mountproc_exportall_2(void *, CLIENT *); -extern exports * mountproc_exportall_2_svc(void *, struct svc_req *); -#define MOUNTPROC_PATHCONF 7 -extern ppathcnf * mountproc_pathconf_2(dirpath *, CLIENT *); -extern ppathcnf * mountproc_pathconf_2_svc(dirpath *, struct svc_req *); -extern int mountprog_2_freeresult (SVCXPRT *, xdrproc_t, caddr_t); - -#else /* K&R C */ -extern void * mountproc_null_2(); -extern void * mountproc_null_2_svc(); -extern fhstatus * mountproc_mnt_2(); -extern fhstatus * mountproc_mnt_2_svc(); -extern mountlist * mountproc_dump_2(); -extern mountlist * mountproc_dump_2_svc(); -extern void * mountproc_umnt_2(); -extern void * mountproc_umnt_2_svc(); -extern void * mountproc_umntall_2(); -extern void * mountproc_umntall_2_svc(); -extern exports * mountproc_export_2(); -extern exports * mountproc_export_2_svc(); -extern exports * mountproc_exportall_2(); -extern exports * mountproc_exportall_2_svc(); -#define MOUNTPROC_PATHCONF 7 -extern ppathcnf * mountproc_pathconf_2(); -extern ppathcnf * mountproc_pathconf_2_svc(); -extern int mountprog_2_freeresult (); -#endif /* K&R C */ -#define MOUNT_V3 3 - -#if defined(__STDC__) || defined(__cplusplus) -#define MOUNTPROC3_NULL 0 -extern void * mountproc3_null_3(void *, CLIENT *); -extern void * mountproc3_null_3_svc(void *, struct svc_req *); -#define MOUNTPROC3_MNT 1 -extern mountres3 * mountproc3_mnt_3(dirpath *, CLIENT *); -extern mountres3 * mountproc3_mnt_3_svc(dirpath *, struct svc_req *); -#define MOUNTPROC3_DUMP 2 -extern mountlist * mountproc3_dump_3(void *, CLIENT *); -extern mountlist * mountproc3_dump_3_svc(void *, struct svc_req *); -#define MOUNTPROC3_UMNT 3 -extern void * mountproc3_umnt_3(dirpath *, CLIENT *); -extern void * mountproc3_umnt_3_svc(dirpath *, struct svc_req *); -#define MOUNTPROC3_UMNTALL 4 -extern void * mountproc3_umntall_3(void *, CLIENT *); -extern void * mountproc3_umntall_3_svc(void *, struct svc_req *); -#define MOUNTPROC3_EXPORT 5 -extern exports * mountproc3_export_3(void *, CLIENT *); -extern exports * mountproc3_export_3_svc(void *, struct svc_req *); -extern int mountprog_3_freeresult (SVCXPRT *, xdrproc_t, caddr_t); - -#else /* K&R C */ -#define MOUNTPROC3_NULL 0 -extern void * mountproc3_null_3(); -extern void * mountproc3_null_3_svc(); -#define MOUNTPROC3_MNT 1 -extern mountres3 * mountproc3_mnt_3(); -extern mountres3 * mountproc3_mnt_3_svc(); -#define MOUNTPROC3_DUMP 2 -extern mountlist * mountproc3_dump_3(); -extern mountlist * mountproc3_dump_3_svc(); -#define MOUNTPROC3_UMNT 3 -extern void * mountproc3_umnt_3(); -extern void * mountproc3_umnt_3_svc(); -#define MOUNTPROC3_UMNTALL 4 -extern void * mountproc3_umntall_3(); -extern void * mountproc3_umntall_3_svc(); -#define MOUNTPROC3_EXPORT 5 -extern exports * mountproc3_export_3(); -extern exports * mountproc3_export_3_svc(); -extern int mountprog_3_freeresult (); -#endif /* K&R C */ - -/* the xdr functions */ - -#if defined(__STDC__) || defined(__cplusplus) -extern bool_t xdr_fhandle (XDR *, fhandle); -extern bool_t xdr_fhandle3 (XDR *, fhandle3*); -extern bool_t xdr_mountstat3 (XDR *, mountstat3*); -extern bool_t xdr_fhstatus (XDR *, fhstatus*); -extern bool_t xdr_mountres3_ok (XDR *, mountres3_ok*); -extern bool_t xdr_mountres3 (XDR *, mountres3*); -extern bool_t xdr_dirpath (XDR *, dirpath*); -extern bool_t xdr_name (XDR *, name*); -extern bool_t xdr_mountlist (XDR *, mountlist*); -extern bool_t xdr_mountbody (XDR *, mountbody*); -extern bool_t xdr_groups (XDR *, groups*); -extern bool_t xdr_groupnode (XDR *, groupnode*); -extern bool_t xdr_exports (XDR *, exports*); -extern bool_t xdr_exportnode (XDR *, exportnode*); -extern bool_t xdr_ppathcnf (XDR *, ppathcnf*); - -#else /* K&R C */ -extern bool_t xdr_fhandle (); -extern bool_t xdr_fhandle3 (); -extern bool_t xdr_mountstat3 (); -extern bool_t xdr_fhstatus (); -extern bool_t xdr_mountres3_ok (); -extern bool_t xdr_mountres3 (); -extern bool_t xdr_dirpath (); -extern bool_t xdr_name (); -extern bool_t xdr_mountlist (); -extern bool_t xdr_mountbody (); -extern bool_t xdr_groups (); -extern bool_t xdr_groupnode (); -extern bool_t xdr_exports (); -extern bool_t xdr_exportnode (); -extern bool_t xdr_ppathcnf (); - -#endif /* K&R C */ - -#ifdef __cplusplus -} -#endif - -#endif /* !_NFSMOUNT_H_RPCGEN */ diff --git a/mount/nfsmount.x b/mount/nfsmount.x deleted file mode 100644 index ad4bf998..00000000 --- a/mount/nfsmount.x +++ /dev/null @@ -1,336 +0,0 @@ -%/* -% * Sun RPC is a product of Sun Microsystems, Inc. and is provided for -% * unrestricted use provided that this legend is included on all tape -% * media and as a part of the software program in whole or part. Users -% * may copy or modify Sun RPC without charge, but are not authorized -% * to license or distribute it to anyone else except as part of a product or -% * program developed by the user or with the express written consent of -% * Sun Microsystems, Inc. -% * -% * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE -% * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR -% * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. -% * -% * Sun RPC is provided with no support and without any obligation on the -% * part of Sun Microsystems, Inc. to assist in its use, correction, -% * modification or enhancement. -% * -% * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE -% * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC -% * OR ANY PART THEREOF. -% * -% * In no event will Sun Microsystems, Inc. be liable for any lost revenue -% * or profits or other special, indirect and consequential damages, even if -% * Sun has been advised of the possibility of such damages. -% * -% * Sun Microsystems, Inc. -% * 2550 Garcia Avenue -% * Mountain View, California 94043 -% */ - -%/* -% * Copyright (c) 1985, 1990 by Sun Microsystems, Inc. -% */ -% -%/* from @(#)mount.x 1.3 91/03/11 TIRPC 1.0 */ - -/* - * Protocol description for the mount program - */ - -#ifdef RPC_HDR -%#ifndef _rpcsvc_mount_h -%#define _rpcsvc_mount_h -#endif - -#ifdef RPC_CLNT -%#include <string.h> /* for memset() */ -#endif -%#include <asm/types.h> - -const MNTPATHLEN = 1024; /* maximum bytes in a pathname argument */ -const MNTNAMLEN = 255; /* maximum bytes in a name argument */ -const FHSIZE = 32; /* size in bytes of a file handle */ -const FHSIZE3 = 64; /* size in bytes of a file handle */ - -/* - * The fhandle is the file handle that the server passes to the client. - * All file operations are done using the file handles to refer to a file - * or a directory. The file handle can contain whatever information the - * server needs to distinguish an individual file. - */ -typedef opaque fhandle[FHSIZE]; -typedef opaque fhandle3<FHSIZE3>; - -enum mountstat3 { - MNT_OK = 0, /* no error */ - MNT3ERR_PERM = 1, /* not owner */ - MNT3ERR_NOENT = 2, /* No such file or directory */ - MNT3ERR_IO = 5, /* I/O error */ - MNT3ERR_ACCES = 13, /* Permission denied */ - MNT3ERR_NOTDIR = 20, /* Not a directory */ - MNT3ERR_INVAL = 22, /* Invalid argument */ - MNT3ERR_NAMETOOLONG = 63, /* File name too long */ - MNT3ERR_NOTSUPP = 10004, /* Operation not supported */ - MNT3ERR_SERVERFAULT = 10006 /* A failure on the server */ -}; - -/* - * If a status of zero is returned, the call completed successfully, and - * a file handle for the directory follows. A non-zero status indicates - * some sort of error. The status corresponds with UNIX error numbers. - */ -union fhstatus switch (unsigned fhs_status) { -case 0: - fhandle fhs_fhandle; -default: - void; -}; - -struct mountres3_ok { - fhandle3 fhandle; - int auth_flavours<>; -}; - -union mountres3 switch (mountstat3 fhs_status) { -case MNT_OK: - mountres3_ok mountinfo; -default: - void; -}; - -/* - * The type dirpath is the pathname of a directory - */ -typedef string dirpath<MNTPATHLEN>; - -/* - * The type name is used for arbitrary names (hostnames, groupnames) - */ -typedef string name<MNTNAMLEN>; - -/* - * A list of who has what mounted - */ -typedef struct mountbody *mountlist; -struct mountbody { - name ml_hostname; - dirpath ml_directory; - mountlist ml_next; -}; - -/* - * A list of netgroups - */ -typedef struct groupnode *groups; -struct groupnode { - name gr_name; - groups gr_next; -}; - -/* - * A list of what is exported and to whom - */ -typedef struct exportnode *exports; -struct exportnode { - dirpath ex_dir; - groups ex_groups; - exports ex_next; -}; - -/* - * POSIX pathconf information - */ -struct ppathcnf { - int pc_link_max; /* max links allowed */ - short pc_max_canon; /* max line len for a tty */ - short pc_max_input; /* input a tty can eat all at once */ - short pc_name_max; /* max file name length (dir entry) */ - short pc_path_max; /* max path name length (/x/y/x/.. ) */ - short pc_pipe_buf; /* size of a pipe (bytes) */ - u_char pc_vdisable; /* safe char to turn off c_cc[i] */ - char pc_xxx; /* alignment padding; cc_t == char */ - short pc_mask[2]; /* validity and boolean bits */ -}; - -program MOUNTPROG { - /* - * Version one of the mount protocol communicates with version two - * of the NFS protocol. The only connecting point is the fhandle - * structure, which is the same for both protocols. - */ - version MOUNTVERS { - /* - * Does no work. It is made available in all RPC services - * to allow server reponse testing and timing - */ - void - MOUNTPROC_NULL(void) = 0; - - /* - * If fhs_status is 0, then fhs_fhandle contains the - * file handle for the directory. This file handle may - * be used in the NFS protocol. This procedure also adds - * a new entry to the mount list for this client mounting - * the directory. - * Unix authentication required. - */ - fhstatus - MOUNTPROC_MNT(dirpath) = 1; - - /* - * Returns the list of remotely mounted filesystems. The - * mountlist contains one entry for each hostname and - * directory pair. - */ - mountlist - MOUNTPROC_DUMP(void) = 2; - - /* - * Removes the mount list entry for the directory - * Unix authentication required. - */ - void - MOUNTPROC_UMNT(dirpath) = 3; - - /* - * Removes all of the mount list entries for this client - * Unix authentication required. - */ - void - MOUNTPROC_UMNTALL(void) = 4; - - /* - * Returns a list of all the exported filesystems, and which - * machines are allowed to import it. - */ - exports - MOUNTPROC_EXPORT(void) = 5; - - /* - * Identical to MOUNTPROC_EXPORT above - */ - exports - MOUNTPROC_EXPORTALL(void) = 6; - } = 1; - - /* - * Version two of the mount protocol communicates with version two - * of the NFS protocol. - * The only difference from version one is the addition of a POSIX - * pathconf call. - */ - version MOUNTVERS_POSIX { - /* - * Does no work. It is made available in all RPC services - * to allow server reponse testing and timing - */ - void - MOUNTPROC_NULL(void) = 0; - - /* - * If fhs_status is 0, then fhs_fhandle contains the - * file handle for the directory. This file handle may - * be used in the NFS protocol. This procedure also adds - * a new entry to the mount list for this client mounting - * the directory. - * Unix authentication required. - */ - fhstatus - MOUNTPROC_MNT(dirpath) = 1; - - /* - * Returns the list of remotely mounted filesystems. The - * mountlist contains one entry for each hostname and - * directory pair. - */ - mountlist - MOUNTPROC_DUMP(void) = 2; - - /* - * Removes the mount list entry for the directory - * Unix authentication required. - */ - void - MOUNTPROC_UMNT(dirpath) = 3; - - /* - * Removes all of the mount list entries for this client - * Unix authentication required. - */ - void - MOUNTPROC_UMNTALL(void) = 4; - - /* - * Returns a list of all the exported filesystems, and which - * machines are allowed to import it. - */ - exports - MOUNTPROC_EXPORT(void) = 5; - - /* - * Identical to MOUNTPROC_EXPORT above - */ - exports - MOUNTPROC_EXPORTALL(void) = 6; - - /* - * POSIX pathconf info (Sun hack) - */ - ppathcnf - MOUNTPROC_PATHCONF(dirpath) = 7; - } = 2; - version MOUNT_V3 { - /* - * Does no work. It is made available in all RPC services - * to allow server reponse testing and timing - */ - void - MOUNTPROC3_NULL(void) = 0; - - /* - * If fhs_status is 0, then fhs_fhandle contains the - * file handle for the directory. This file handle may - * be used in the NFS protocol. This procedure also adds - * a new entry to the mount list for this client mounting - * the directory. - * Unix authentication required. - */ - mountres3 - MOUNTPROC3_MNT(dirpath) = 1; - - /* - * Returns the list of remotely mounted filesystems. The - * mountlist contains one entry for each hostname and - * directory pair. - */ - mountlist - MOUNTPROC3_DUMP(void) = 2; - - /* - * Removes the mount list entry for the directory - * Unix authentication required. - */ - void - MOUNTPROC3_UMNT(dirpath) = 3; - - /* - * Removes all of the mount list entries for this client - * Unix authentication required. - */ - void - MOUNTPROC3_UMNTALL(void) = 4; - - /* - * Returns a list of all the exported filesystems, and which - * machines are allowed to import it. - */ - exports - MOUNTPROC3_EXPORT(void) = 5; - - } = 3; -} = 100005; - -#ifdef RPC_HDR -%#endif /*!_rpcsvc_mount_h*/ -#endif diff --git a/mount/nfsmount_clnt.c b/mount/nfsmount_clnt.c deleted file mode 100644 index b518f60b..00000000 --- a/mount/nfsmount_clnt.c +++ /dev/null @@ -1,361 +0,0 @@ -/* - * Please do not edit this file. - * It was generated using rpcgen. - */ - -#include <memory.h> /* for memset */ -#include "nfsmount.h" -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user or with the express written consent of - * Sun Microsystems, Inc. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -/* - * Copyright (c) 1985, 1990 by Sun Microsystems, Inc. - */ - -/* from @(#)mount.x 1.3 91/03/11 TIRPC 1.0 */ -#include <string.h> /* for memset() */ -#include <asm/types.h> - -/* Default timeout can be changed using clnt_control() */ -static struct timeval TIMEOUT = { 25, 0 }; - -void * -mountproc_null_1(void *argp, CLIENT *clnt) -{ - static char clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC_NULL, - (xdrproc_t) xdr_void, (caddr_t) argp, - (xdrproc_t) xdr_void, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return ((void *)&clnt_res); -} - -fhstatus * -mountproc_mnt_1(dirpath *argp, CLIENT *clnt) -{ - static fhstatus clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC_MNT, - (xdrproc_t) xdr_dirpath, (caddr_t) argp, - (xdrproc_t) xdr_fhstatus, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return (&clnt_res); -} - -mountlist * -mountproc_dump_1(void *argp, CLIENT *clnt) -{ - static mountlist clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC_DUMP, - (xdrproc_t) xdr_void, (caddr_t) argp, - (xdrproc_t) xdr_mountlist, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return (&clnt_res); -} - -void * -mountproc_umnt_1(dirpath *argp, CLIENT *clnt) -{ - static char clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC_UMNT, - (xdrproc_t) xdr_dirpath, (caddr_t) argp, - (xdrproc_t) xdr_void, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return ((void *)&clnt_res); -} - -void * -mountproc_umntall_1(void *argp, CLIENT *clnt) -{ - static char clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC_UMNTALL, - (xdrproc_t) xdr_void, (caddr_t) argp, - (xdrproc_t) xdr_void, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return ((void *)&clnt_res); -} - -exports * -mountproc_export_1(void *argp, CLIENT *clnt) -{ - static exports clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC_EXPORT, - (xdrproc_t) xdr_void, (caddr_t) argp, - (xdrproc_t) xdr_exports, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return (&clnt_res); -} - -exports * -mountproc_exportall_1(void *argp, CLIENT *clnt) -{ - static exports clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC_EXPORTALL, - (xdrproc_t) xdr_void, (caddr_t) argp, - (xdrproc_t) xdr_exports, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return (&clnt_res); -} - -void * -mountproc_null_2(void *argp, CLIENT *clnt) -{ - static char clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC_NULL, - (xdrproc_t) xdr_void, (caddr_t) argp, - (xdrproc_t) xdr_void, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return ((void *)&clnt_res); -} - -fhstatus * -mountproc_mnt_2(dirpath *argp, CLIENT *clnt) -{ - static fhstatus clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC_MNT, - (xdrproc_t) xdr_dirpath, (caddr_t) argp, - (xdrproc_t) xdr_fhstatus, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return (&clnt_res); -} - -mountlist * -mountproc_dump_2(void *argp, CLIENT *clnt) -{ - static mountlist clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC_DUMP, - (xdrproc_t) xdr_void, (caddr_t) argp, - (xdrproc_t) xdr_mountlist, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return (&clnt_res); -} - -void * -mountproc_umnt_2(dirpath *argp, CLIENT *clnt) -{ - static char clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC_UMNT, - (xdrproc_t) xdr_dirpath, (caddr_t) argp, - (xdrproc_t) xdr_void, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return ((void *)&clnt_res); -} - -void * -mountproc_umntall_2(void *argp, CLIENT *clnt) -{ - static char clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC_UMNTALL, - (xdrproc_t) xdr_void, (caddr_t) argp, - (xdrproc_t) xdr_void, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return ((void *)&clnt_res); -} - -exports * -mountproc_export_2(void *argp, CLIENT *clnt) -{ - static exports clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC_EXPORT, - (xdrproc_t) xdr_void, (caddr_t) argp, - (xdrproc_t) xdr_exports, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return (&clnt_res); -} - -exports * -mountproc_exportall_2(void *argp, CLIENT *clnt) -{ - static exports clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC_EXPORTALL, - (xdrproc_t) xdr_void, (caddr_t) argp, - (xdrproc_t) xdr_exports, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return (&clnt_res); -} - -ppathcnf * -mountproc_pathconf_2(dirpath *argp, CLIENT *clnt) -{ - static ppathcnf clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC_PATHCONF, - (xdrproc_t) xdr_dirpath, (caddr_t) argp, - (xdrproc_t) xdr_ppathcnf, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return (&clnt_res); -} - -void * -mountproc3_null_3(void *argp, CLIENT *clnt) -{ - static char clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC3_NULL, - (xdrproc_t) xdr_void, (caddr_t) argp, - (xdrproc_t) xdr_void, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return ((void *)&clnt_res); -} - -mountres3 * -mountproc3_mnt_3(dirpath *argp, CLIENT *clnt) -{ - static mountres3 clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC3_MNT, - (xdrproc_t) xdr_dirpath, (caddr_t) argp, - (xdrproc_t) xdr_mountres3, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return (&clnt_res); -} - -mountlist * -mountproc3_dump_3(void *argp, CLIENT *clnt) -{ - static mountlist clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC3_DUMP, - (xdrproc_t) xdr_void, (caddr_t) argp, - (xdrproc_t) xdr_mountlist, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return (&clnt_res); -} - -void * -mountproc3_umnt_3(dirpath *argp, CLIENT *clnt) -{ - static char clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC3_UMNT, - (xdrproc_t) xdr_dirpath, (caddr_t) argp, - (xdrproc_t) xdr_void, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return ((void *)&clnt_res); -} - -void * -mountproc3_umntall_3(void *argp, CLIENT *clnt) -{ - static char clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC3_UMNTALL, - (xdrproc_t) xdr_void, (caddr_t) argp, - (xdrproc_t) xdr_void, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return ((void *)&clnt_res); -} - -exports * -mountproc3_export_3(void *argp, CLIENT *clnt) -{ - static exports clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC3_EXPORT, - (xdrproc_t) xdr_void, (caddr_t) argp, - (xdrproc_t) xdr_exports, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return (&clnt_res); -} diff --git a/mount/nfsmount_xdr.c b/mount/nfsmount_xdr.c deleted file mode 100644 index e91fcbfd..00000000 --- a/mount/nfsmount_xdr.c +++ /dev/null @@ -1,329 +0,0 @@ -/* - * Please do not edit this file. - * It was generated using rpcgen. - */ - -#include "nfsmount.h" -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user or with the express written consent of - * Sun Microsystems, Inc. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -/* - * Copyright (c) 1985, 1990 by Sun Microsystems, Inc. - */ - -/* from @(#)mount.x 1.3 91/03/11 TIRPC 1.0 */ -#include <asm/types.h> - -bool_t -xdr_fhandle (XDR *xdrs, fhandle objp) -{ - register int32_t *buf; - - if (!xdr_opaque (xdrs, objp, FHSIZE)) - return FALSE; - return TRUE; -} - -bool_t -xdr_fhandle3 (XDR *xdrs, fhandle3 *objp) -{ - register int32_t *buf; - - if (!xdr_bytes (xdrs, (char **)&objp->fhandle3_val, (u_int *) &objp->fhandle3_len, FHSIZE3)) - return FALSE; - return TRUE; -} - -bool_t -xdr_mountstat3 (XDR *xdrs, mountstat3 *objp) -{ - register int32_t *buf; - - if (!xdr_enum (xdrs, (enum_t *) objp)) - return FALSE; - return TRUE; -} - -bool_t -xdr_fhstatus (XDR *xdrs, fhstatus *objp) -{ - register int32_t *buf; - - if (!xdr_u_int (xdrs, &objp->fhs_status)) - return FALSE; - switch (objp->fhs_status) { - case 0: - if (!xdr_fhandle (xdrs, objp->fhstatus_u.fhs_fhandle)) - return FALSE; - break; - default: - break; - } - return TRUE; -} - -bool_t -xdr_mountres3_ok (XDR *xdrs, mountres3_ok *objp) -{ - register int32_t *buf; - - if (!xdr_fhandle3 (xdrs, &objp->fhandle)) - return FALSE; - if (!xdr_array (xdrs, (char **)&objp->auth_flavours.auth_flavours_val, (u_int *) &objp->auth_flavours.auth_flavours_len, ~0, - sizeof (int), (xdrproc_t) xdr_int)) - return FALSE; - return TRUE; -} - -bool_t -xdr_mountres3 (XDR *xdrs, mountres3 *objp) -{ - register int32_t *buf; - - if (!xdr_mountstat3 (xdrs, &objp->fhs_status)) - return FALSE; - switch (objp->fhs_status) { - case MNT_OK: - if (!xdr_mountres3_ok (xdrs, &objp->mountres3_u.mountinfo)) - return FALSE; - break; - default: - break; - } - return TRUE; -} - -bool_t -xdr_dirpath (XDR *xdrs, dirpath *objp) -{ - register int32_t *buf; - - if (!xdr_string (xdrs, objp, MNTPATHLEN)) - return FALSE; - return TRUE; -} - -bool_t -xdr_name (XDR *xdrs, name *objp) -{ - register int32_t *buf; - - if (!xdr_string (xdrs, objp, MNTNAMLEN)) - return FALSE; - return TRUE; -} - -bool_t -xdr_mountlist (XDR *xdrs, mountlist *objp) -{ - register int32_t *buf; - - if (!xdr_pointer (xdrs, (char **)objp, sizeof (struct mountbody), (xdrproc_t) xdr_mountbody)) - return FALSE; - return TRUE; -} - -bool_t -xdr_mountbody (XDR *xdrs, mountbody *objp) -{ - register int32_t *buf; - - if (!xdr_name (xdrs, &objp->ml_hostname)) - return FALSE; - if (!xdr_dirpath (xdrs, &objp->ml_directory)) - return FALSE; - if (!xdr_mountlist (xdrs, &objp->ml_next)) - return FALSE; - return TRUE; -} - -bool_t -xdr_groups (XDR *xdrs, groups *objp) -{ - register int32_t *buf; - - if (!xdr_pointer (xdrs, (char **)objp, sizeof (struct groupnode), (xdrproc_t) xdr_groupnode)) - return FALSE; - return TRUE; -} - -bool_t -xdr_groupnode (XDR *xdrs, groupnode *objp) -{ - register int32_t *buf; - - if (!xdr_name (xdrs, &objp->gr_name)) - return FALSE; - if (!xdr_groups (xdrs, &objp->gr_next)) - return FALSE; - return TRUE; -} - -bool_t -xdr_exports (XDR *xdrs, exports *objp) -{ - register int32_t *buf; - - if (!xdr_pointer (xdrs, (char **)objp, sizeof (struct exportnode), (xdrproc_t) xdr_exportnode)) - return FALSE; - return TRUE; -} - -bool_t -xdr_exportnode (XDR *xdrs, exportnode *objp) -{ - register int32_t *buf; - - if (!xdr_dirpath (xdrs, &objp->ex_dir)) - return FALSE; - if (!xdr_groups (xdrs, &objp->ex_groups)) - return FALSE; - if (!xdr_exports (xdrs, &objp->ex_next)) - return FALSE; - return TRUE; -} - -bool_t -xdr_ppathcnf (XDR *xdrs, ppathcnf *objp) -{ - register int32_t *buf; - - int i; - - if (xdrs->x_op == XDR_ENCODE) { - buf = XDR_INLINE (xdrs, 6 * BYTES_PER_XDR_UNIT); - if (buf == NULL) { - if (!xdr_int (xdrs, &objp->pc_link_max)) - return FALSE; - if (!xdr_short (xdrs, &objp->pc_max_canon)) - return FALSE; - if (!xdr_short (xdrs, &objp->pc_max_input)) - return FALSE; - if (!xdr_short (xdrs, &objp->pc_name_max)) - return FALSE; - if (!xdr_short (xdrs, &objp->pc_path_max)) - return FALSE; - if (!xdr_short (xdrs, &objp->pc_pipe_buf)) - return FALSE; - - } else { - IXDR_PUT_LONG(buf, objp->pc_link_max); - IXDR_PUT_SHORT(buf, objp->pc_max_canon); - IXDR_PUT_SHORT(buf, objp->pc_max_input); - IXDR_PUT_SHORT(buf, objp->pc_name_max); - IXDR_PUT_SHORT(buf, objp->pc_path_max); - IXDR_PUT_SHORT(buf, objp->pc_pipe_buf); - } - if (!xdr_u_char (xdrs, &objp->pc_vdisable)) - return FALSE; - if (!xdr_char (xdrs, &objp->pc_xxx)) - return FALSE; - buf = XDR_INLINE (xdrs, ( 2 ) * BYTES_PER_XDR_UNIT); - if (buf == NULL) { - if (!xdr_vector (xdrs, (char *)objp->pc_mask, 2, - sizeof (short), (xdrproc_t) xdr_short)) - return FALSE; - } else { - { - register short *genp; - - for (i = 0, genp = objp->pc_mask; - i < 2; ++i) { - IXDR_PUT_SHORT(buf, *genp++); - } - } - } - return TRUE; - } else if (xdrs->x_op == XDR_DECODE) { - buf = XDR_INLINE (xdrs, 6 * BYTES_PER_XDR_UNIT); - if (buf == NULL) { - if (!xdr_int (xdrs, &objp->pc_link_max)) - return FALSE; - if (!xdr_short (xdrs, &objp->pc_max_canon)) - return FALSE; - if (!xdr_short (xdrs, &objp->pc_max_input)) - return FALSE; - if (!xdr_short (xdrs, &objp->pc_name_max)) - return FALSE; - if (!xdr_short (xdrs, &objp->pc_path_max)) - return FALSE; - if (!xdr_short (xdrs, &objp->pc_pipe_buf)) - return FALSE; - - } else { - objp->pc_link_max = IXDR_GET_LONG(buf); - objp->pc_max_canon = IXDR_GET_SHORT(buf); - objp->pc_max_input = IXDR_GET_SHORT(buf); - objp->pc_name_max = IXDR_GET_SHORT(buf); - objp->pc_path_max = IXDR_GET_SHORT(buf); - objp->pc_pipe_buf = IXDR_GET_SHORT(buf); - } - if (!xdr_u_char (xdrs, &objp->pc_vdisable)) - return FALSE; - if (!xdr_char (xdrs, &objp->pc_xxx)) - return FALSE; - buf = XDR_INLINE (xdrs, ( 2 ) * BYTES_PER_XDR_UNIT); - if (buf == NULL) { - if (!xdr_vector (xdrs, (char *)objp->pc_mask, 2, - sizeof (short), (xdrproc_t) xdr_short)) - return FALSE; - } else { - { - register short *genp; - - for (i = 0, genp = objp->pc_mask; - i < 2; ++i) { - *genp++ = IXDR_GET_SHORT(buf); - } - } - } - return TRUE; - } - - if (!xdr_int (xdrs, &objp->pc_link_max)) - return FALSE; - if (!xdr_short (xdrs, &objp->pc_max_canon)) - return FALSE; - if (!xdr_short (xdrs, &objp->pc_max_input)) - return FALSE; - if (!xdr_short (xdrs, &objp->pc_name_max)) - return FALSE; - if (!xdr_short (xdrs, &objp->pc_path_max)) - return FALSE; - if (!xdr_short (xdrs, &objp->pc_pipe_buf)) - return FALSE; - if (!xdr_u_char (xdrs, &objp->pc_vdisable)) - return FALSE; - if (!xdr_char (xdrs, &objp->pc_xxx)) - return FALSE; - if (!xdr_vector (xdrs, (char *)objp->pc_mask, 2, - sizeof (short), (xdrproc_t) xdr_short)) - return FALSE; - return TRUE; -} diff --git a/mount/rpcsvc/nfsmount.h b/mount/rpcsvc/nfsmount.h deleted file mode 100644 index aa4a93bd..00000000 --- a/mount/rpcsvc/nfsmount.h +++ /dev/null @@ -1,328 +0,0 @@ -/* - * Please do not edit this file. - * It was generated using rpcgen. - */ - -#ifndef _NFSMOUNT_H_RPCGEN -#define _NFSMOUNT_H_RPCGEN - -#include <rpc/rpc.h> - - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user or with the express written consent of - * Sun Microsystems, Inc. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -/* - * Copyright (c) 1985, 1990 by Sun Microsystems, Inc. - */ - -/* from @(#)mount.x 1.3 91/03/11 TIRPC 1.0 */ -#ifndef _rpcsvc_mount_h -#define _rpcsvc_mount_h -#include <asm/types.h> -#define MNTPATHLEN 1024 -#define MNTNAMLEN 255 -#define FHSIZE 32 -#define FHSIZE3 64 - -typedef char fhandle[FHSIZE]; - -typedef struct { - u_int fhandle3_len; - char *fhandle3_val; -} fhandle3; - -enum mountstat3 { - MNT_OK = 0, - MNT3ERR_PERM = 1, - MNT3ERR_NOENT = 2, - MNT3ERR_IO = 5, - MNT3ERR_ACCES = 13, - MNT3ERR_NOTDIR = 20, - MNT3ERR_INVAL = 22, - MNT3ERR_NAMETOOLONG = 63, - MNT3ERR_NOTSUPP = 10004, - MNT3ERR_SERVERFAULT = 10006, -}; -typedef enum mountstat3 mountstat3; - -struct fhstatus { - u_int fhs_status; - union { - fhandle fhs_fhandle; - } fhstatus_u; -}; -typedef struct fhstatus fhstatus; - -struct mountres3_ok { - fhandle3 fhandle; - struct { - u_int auth_flavours_len; - int *auth_flavours_val; - } auth_flavours; -}; -typedef struct mountres3_ok mountres3_ok; - -struct mountres3 { - mountstat3 fhs_status; - union { - mountres3_ok mountinfo; - } mountres3_u; -}; -typedef struct mountres3 mountres3; - -typedef char *dirpath; - -typedef char *name; - -typedef struct mountbody *mountlist; - -struct mountbody { - name ml_hostname; - dirpath ml_directory; - mountlist ml_next; -}; -typedef struct mountbody mountbody; - -typedef struct groupnode *groups; - -struct groupnode { - name gr_name; - groups gr_next; -}; -typedef struct groupnode groupnode; - -typedef struct exportnode *exports; - -struct exportnode { - dirpath ex_dir; - groups ex_groups; - exports ex_next; -}; -typedef struct exportnode exportnode; - -struct ppathcnf { - int pc_link_max; - short pc_max_canon; - short pc_max_input; - short pc_name_max; - short pc_path_max; - short pc_pipe_buf; - u_char pc_vdisable; - char pc_xxx; - short pc_mask[2]; -}; -typedef struct ppathcnf ppathcnf; -#endif /*!_rpcsvc_mount_h*/ - -#define MOUNTPROG 100005 -#define MOUNTVERS 1 - -#if defined(__STDC__) || defined(__cplusplus) -#define MOUNTPROC_NULL 0 -extern void * mountproc_null_1(void *, CLIENT *); -extern void * mountproc_null_1_svc(void *, struct svc_req *); -#define MOUNTPROC_MNT 1 -extern fhstatus * mountproc_mnt_1(dirpath *, CLIENT *); -extern fhstatus * mountproc_mnt_1_svc(dirpath *, struct svc_req *); -#define MOUNTPROC_DUMP 2 -extern mountlist * mountproc_dump_1(void *, CLIENT *); -extern mountlist * mountproc_dump_1_svc(void *, struct svc_req *); -#define MOUNTPROC_UMNT 3 -extern void * mountproc_umnt_1(dirpath *, CLIENT *); -extern void * mountproc_umnt_1_svc(dirpath *, struct svc_req *); -#define MOUNTPROC_UMNTALL 4 -extern void * mountproc_umntall_1(void *, CLIENT *); -extern void * mountproc_umntall_1_svc(void *, struct svc_req *); -#define MOUNTPROC_EXPORT 5 -extern exports * mountproc_export_1(void *, CLIENT *); -extern exports * mountproc_export_1_svc(void *, struct svc_req *); -#define MOUNTPROC_EXPORTALL 6 -extern exports * mountproc_exportall_1(void *, CLIENT *); -extern exports * mountproc_exportall_1_svc(void *, struct svc_req *); -extern int mountprog_1_freeresult (SVCXPRT *, xdrproc_t, caddr_t); - -#else /* K&R C */ -#define MOUNTPROC_NULL 0 -extern void * mountproc_null_1(); -extern void * mountproc_null_1_svc(); -#define MOUNTPROC_MNT 1 -extern fhstatus * mountproc_mnt_1(); -extern fhstatus * mountproc_mnt_1_svc(); -#define MOUNTPROC_DUMP 2 -extern mountlist * mountproc_dump_1(); -extern mountlist * mountproc_dump_1_svc(); -#define MOUNTPROC_UMNT 3 -extern void * mountproc_umnt_1(); -extern void * mountproc_umnt_1_svc(); -#define MOUNTPROC_UMNTALL 4 -extern void * mountproc_umntall_1(); -extern void * mountproc_umntall_1_svc(); -#define MOUNTPROC_EXPORT 5 -extern exports * mountproc_export_1(); -extern exports * mountproc_export_1_svc(); -#define MOUNTPROC_EXPORTALL 6 -extern exports * mountproc_exportall_1(); -extern exports * mountproc_exportall_1_svc(); -extern int mountprog_1_freeresult (); -#endif /* K&R C */ -#define MOUNTVERS_POSIX 2 - -#if defined(__STDC__) || defined(__cplusplus) -extern void * mountproc_null_2(void *, CLIENT *); -extern void * mountproc_null_2_svc(void *, struct svc_req *); -extern fhstatus * mountproc_mnt_2(dirpath *, CLIENT *); -extern fhstatus * mountproc_mnt_2_svc(dirpath *, struct svc_req *); -extern mountlist * mountproc_dump_2(void *, CLIENT *); -extern mountlist * mountproc_dump_2_svc(void *, struct svc_req *); -extern void * mountproc_umnt_2(dirpath *, CLIENT *); -extern void * mountproc_umnt_2_svc(dirpath *, struct svc_req *); -extern void * mountproc_umntall_2(void *, CLIENT *); -extern void * mountproc_umntall_2_svc(void *, struct svc_req *); -extern exports * mountproc_export_2(void *, CLIENT *); -extern exports * mountproc_export_2_svc(void *, struct svc_req *); -extern exports * mountproc_exportall_2(void *, CLIENT *); -extern exports * mountproc_exportall_2_svc(void *, struct svc_req *); -#define MOUNTPROC_PATHCONF 7 -extern ppathcnf * mountproc_pathconf_2(dirpath *, CLIENT *); -extern ppathcnf * mountproc_pathconf_2_svc(dirpath *, struct svc_req *); -extern int mountprog_2_freeresult (SVCXPRT *, xdrproc_t, caddr_t); - -#else /* K&R C */ -extern void * mountproc_null_2(); -extern void * mountproc_null_2_svc(); -extern fhstatus * mountproc_mnt_2(); -extern fhstatus * mountproc_mnt_2_svc(); -extern mountlist * mountproc_dump_2(); -extern mountlist * mountproc_dump_2_svc(); -extern void * mountproc_umnt_2(); -extern void * mountproc_umnt_2_svc(); -extern void * mountproc_umntall_2(); -extern void * mountproc_umntall_2_svc(); -extern exports * mountproc_export_2(); -extern exports * mountproc_export_2_svc(); -extern exports * mountproc_exportall_2(); -extern exports * mountproc_exportall_2_svc(); -#define MOUNTPROC_PATHCONF 7 -extern ppathcnf * mountproc_pathconf_2(); -extern ppathcnf * mountproc_pathconf_2_svc(); -extern int mountprog_2_freeresult (); -#endif /* K&R C */ -#define MOUNT_V3 3 - -#if defined(__STDC__) || defined(__cplusplus) -#define MOUNTPROC3_NULL 0 -extern void * mountproc3_null_3(void *, CLIENT *); -extern void * mountproc3_null_3_svc(void *, struct svc_req *); -#define MOUNTPROC3_MNT 1 -extern mountres3 * mountproc3_mnt_3(dirpath *, CLIENT *); -extern mountres3 * mountproc3_mnt_3_svc(dirpath *, struct svc_req *); -#define MOUNTPROC3_DUMP 2 -extern mountlist * mountproc3_dump_3(void *, CLIENT *); -extern mountlist * mountproc3_dump_3_svc(void *, struct svc_req *); -#define MOUNTPROC3_UMNT 3 -extern void * mountproc3_umnt_3(dirpath *, CLIENT *); -extern void * mountproc3_umnt_3_svc(dirpath *, struct svc_req *); -#define MOUNTPROC3_UMNTALL 4 -extern void * mountproc3_umntall_3(void *, CLIENT *); -extern void * mountproc3_umntall_3_svc(void *, struct svc_req *); -#define MOUNTPROC3_EXPORT 5 -extern exports * mountproc3_export_3(void *, CLIENT *); -extern exports * mountproc3_export_3_svc(void *, struct svc_req *); -extern int mountprog_3_freeresult (SVCXPRT *, xdrproc_t, caddr_t); - -#else /* K&R C */ -#define MOUNTPROC3_NULL 0 -extern void * mountproc3_null_3(); -extern void * mountproc3_null_3_svc(); -#define MOUNTPROC3_MNT 1 -extern mountres3 * mountproc3_mnt_3(); -extern mountres3 * mountproc3_mnt_3_svc(); -#define MOUNTPROC3_DUMP 2 -extern mountlist * mountproc3_dump_3(); -extern mountlist * mountproc3_dump_3_svc(); -#define MOUNTPROC3_UMNT 3 -extern void * mountproc3_umnt_3(); -extern void * mountproc3_umnt_3_svc(); -#define MOUNTPROC3_UMNTALL 4 -extern void * mountproc3_umntall_3(); -extern void * mountproc3_umntall_3_svc(); -#define MOUNTPROC3_EXPORT 5 -extern exports * mountproc3_export_3(); -extern exports * mountproc3_export_3_svc(); -extern int mountprog_3_freeresult (); -#endif /* K&R C */ - -/* the xdr functions */ - -#if defined(__STDC__) || defined(__cplusplus) -extern bool_t xdr_fhandle (XDR *, fhandle); -extern bool_t xdr_fhandle3 (XDR *, fhandle3*); -extern bool_t xdr_mountstat3 (XDR *, mountstat3*); -extern bool_t xdr_fhstatus (XDR *, fhstatus*); -extern bool_t xdr_mountres3_ok (XDR *, mountres3_ok*); -extern bool_t xdr_mountres3 (XDR *, mountres3*); -extern bool_t xdr_dirpath (XDR *, dirpath*); -extern bool_t xdr_name (XDR *, name*); -extern bool_t xdr_mountlist (XDR *, mountlist*); -extern bool_t xdr_mountbody (XDR *, mountbody*); -extern bool_t xdr_groups (XDR *, groups*); -extern bool_t xdr_groupnode (XDR *, groupnode*); -extern bool_t xdr_exports (XDR *, exports*); -extern bool_t xdr_exportnode (XDR *, exportnode*); -extern bool_t xdr_ppathcnf (XDR *, ppathcnf*); - -#else /* K&R C */ -extern bool_t xdr_fhandle (); -extern bool_t xdr_fhandle3 (); -extern bool_t xdr_mountstat3 (); -extern bool_t xdr_fhstatus (); -extern bool_t xdr_mountres3_ok (); -extern bool_t xdr_mountres3 (); -extern bool_t xdr_dirpath (); -extern bool_t xdr_name (); -extern bool_t xdr_mountlist (); -extern bool_t xdr_mountbody (); -extern bool_t xdr_groups (); -extern bool_t xdr_groupnode (); -extern bool_t xdr_exports (); -extern bool_t xdr_exportnode (); -extern bool_t xdr_ppathcnf (); - -#endif /* K&R C */ - -#ifdef __cplusplus -} -#endif - -#endif /* !_NFSMOUNT_H_RPCGEN */ diff --git a/mount/rpcsvc/nfsmount.x b/mount/rpcsvc/nfsmount.x deleted file mode 100644 index ad4bf998..00000000 --- a/mount/rpcsvc/nfsmount.x +++ /dev/null @@ -1,336 +0,0 @@ -%/* -% * Sun RPC is a product of Sun Microsystems, Inc. and is provided for -% * unrestricted use provided that this legend is included on all tape -% * media and as a part of the software program in whole or part. Users -% * may copy or modify Sun RPC without charge, but are not authorized -% * to license or distribute it to anyone else except as part of a product or -% * program developed by the user or with the express written consent of -% * Sun Microsystems, Inc. -% * -% * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE -% * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR -% * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. -% * -% * Sun RPC is provided with no support and without any obligation on the -% * part of Sun Microsystems, Inc. to assist in its use, correction, -% * modification or enhancement. -% * -% * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE -% * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC -% * OR ANY PART THEREOF. -% * -% * In no event will Sun Microsystems, Inc. be liable for any lost revenue -% * or profits or other special, indirect and consequential damages, even if -% * Sun has been advised of the possibility of such damages. -% * -% * Sun Microsystems, Inc. -% * 2550 Garcia Avenue -% * Mountain View, California 94043 -% */ - -%/* -% * Copyright (c) 1985, 1990 by Sun Microsystems, Inc. -% */ -% -%/* from @(#)mount.x 1.3 91/03/11 TIRPC 1.0 */ - -/* - * Protocol description for the mount program - */ - -#ifdef RPC_HDR -%#ifndef _rpcsvc_mount_h -%#define _rpcsvc_mount_h -#endif - -#ifdef RPC_CLNT -%#include <string.h> /* for memset() */ -#endif -%#include <asm/types.h> - -const MNTPATHLEN = 1024; /* maximum bytes in a pathname argument */ -const MNTNAMLEN = 255; /* maximum bytes in a name argument */ -const FHSIZE = 32; /* size in bytes of a file handle */ -const FHSIZE3 = 64; /* size in bytes of a file handle */ - -/* - * The fhandle is the file handle that the server passes to the client. - * All file operations are done using the file handles to refer to a file - * or a directory. The file handle can contain whatever information the - * server needs to distinguish an individual file. - */ -typedef opaque fhandle[FHSIZE]; -typedef opaque fhandle3<FHSIZE3>; - -enum mountstat3 { - MNT_OK = 0, /* no error */ - MNT3ERR_PERM = 1, /* not owner */ - MNT3ERR_NOENT = 2, /* No such file or directory */ - MNT3ERR_IO = 5, /* I/O error */ - MNT3ERR_ACCES = 13, /* Permission denied */ - MNT3ERR_NOTDIR = 20, /* Not a directory */ - MNT3ERR_INVAL = 22, /* Invalid argument */ - MNT3ERR_NAMETOOLONG = 63, /* File name too long */ - MNT3ERR_NOTSUPP = 10004, /* Operation not supported */ - MNT3ERR_SERVERFAULT = 10006 /* A failure on the server */ -}; - -/* - * If a status of zero is returned, the call completed successfully, and - * a file handle for the directory follows. A non-zero status indicates - * some sort of error. The status corresponds with UNIX error numbers. - */ -union fhstatus switch (unsigned fhs_status) { -case 0: - fhandle fhs_fhandle; -default: - void; -}; - -struct mountres3_ok { - fhandle3 fhandle; - int auth_flavours<>; -}; - -union mountres3 switch (mountstat3 fhs_status) { -case MNT_OK: - mountres3_ok mountinfo; -default: - void; -}; - -/* - * The type dirpath is the pathname of a directory - */ -typedef string dirpath<MNTPATHLEN>; - -/* - * The type name is used for arbitrary names (hostnames, groupnames) - */ -typedef string name<MNTNAMLEN>; - -/* - * A list of who has what mounted - */ -typedef struct mountbody *mountlist; -struct mountbody { - name ml_hostname; - dirpath ml_directory; - mountlist ml_next; -}; - -/* - * A list of netgroups - */ -typedef struct groupnode *groups; -struct groupnode { - name gr_name; - groups gr_next; -}; - -/* - * A list of what is exported and to whom - */ -typedef struct exportnode *exports; -struct exportnode { - dirpath ex_dir; - groups ex_groups; - exports ex_next; -}; - -/* - * POSIX pathconf information - */ -struct ppathcnf { - int pc_link_max; /* max links allowed */ - short pc_max_canon; /* max line len for a tty */ - short pc_max_input; /* input a tty can eat all at once */ - short pc_name_max; /* max file name length (dir entry) */ - short pc_path_max; /* max path name length (/x/y/x/.. ) */ - short pc_pipe_buf; /* size of a pipe (bytes) */ - u_char pc_vdisable; /* safe char to turn off c_cc[i] */ - char pc_xxx; /* alignment padding; cc_t == char */ - short pc_mask[2]; /* validity and boolean bits */ -}; - -program MOUNTPROG { - /* - * Version one of the mount protocol communicates with version two - * of the NFS protocol. The only connecting point is the fhandle - * structure, which is the same for both protocols. - */ - version MOUNTVERS { - /* - * Does no work. It is made available in all RPC services - * to allow server reponse testing and timing - */ - void - MOUNTPROC_NULL(void) = 0; - - /* - * If fhs_status is 0, then fhs_fhandle contains the - * file handle for the directory. This file handle may - * be used in the NFS protocol. This procedure also adds - * a new entry to the mount list for this client mounting - * the directory. - * Unix authentication required. - */ - fhstatus - MOUNTPROC_MNT(dirpath) = 1; - - /* - * Returns the list of remotely mounted filesystems. The - * mountlist contains one entry for each hostname and - * directory pair. - */ - mountlist - MOUNTPROC_DUMP(void) = 2; - - /* - * Removes the mount list entry for the directory - * Unix authentication required. - */ - void - MOUNTPROC_UMNT(dirpath) = 3; - - /* - * Removes all of the mount list entries for this client - * Unix authentication required. - */ - void - MOUNTPROC_UMNTALL(void) = 4; - - /* - * Returns a list of all the exported filesystems, and which - * machines are allowed to import it. - */ - exports - MOUNTPROC_EXPORT(void) = 5; - - /* - * Identical to MOUNTPROC_EXPORT above - */ - exports - MOUNTPROC_EXPORTALL(void) = 6; - } = 1; - - /* - * Version two of the mount protocol communicates with version two - * of the NFS protocol. - * The only difference from version one is the addition of a POSIX - * pathconf call. - */ - version MOUNTVERS_POSIX { - /* - * Does no work. It is made available in all RPC services - * to allow server reponse testing and timing - */ - void - MOUNTPROC_NULL(void) = 0; - - /* - * If fhs_status is 0, then fhs_fhandle contains the - * file handle for the directory. This file handle may - * be used in the NFS protocol. This procedure also adds - * a new entry to the mount list for this client mounting - * the directory. - * Unix authentication required. - */ - fhstatus - MOUNTPROC_MNT(dirpath) = 1; - - /* - * Returns the list of remotely mounted filesystems. The - * mountlist contains one entry for each hostname and - * directory pair. - */ - mountlist - MOUNTPROC_DUMP(void) = 2; - - /* - * Removes the mount list entry for the directory - * Unix authentication required. - */ - void - MOUNTPROC_UMNT(dirpath) = 3; - - /* - * Removes all of the mount list entries for this client - * Unix authentication required. - */ - void - MOUNTPROC_UMNTALL(void) = 4; - - /* - * Returns a list of all the exported filesystems, and which - * machines are allowed to import it. - */ - exports - MOUNTPROC_EXPORT(void) = 5; - - /* - * Identical to MOUNTPROC_EXPORT above - */ - exports - MOUNTPROC_EXPORTALL(void) = 6; - - /* - * POSIX pathconf info (Sun hack) - */ - ppathcnf - MOUNTPROC_PATHCONF(dirpath) = 7; - } = 2; - version MOUNT_V3 { - /* - * Does no work. It is made available in all RPC services - * to allow server reponse testing and timing - */ - void - MOUNTPROC3_NULL(void) = 0; - - /* - * If fhs_status is 0, then fhs_fhandle contains the - * file handle for the directory. This file handle may - * be used in the NFS protocol. This procedure also adds - * a new entry to the mount list for this client mounting - * the directory. - * Unix authentication required. - */ - mountres3 - MOUNTPROC3_MNT(dirpath) = 1; - - /* - * Returns the list of remotely mounted filesystems. The - * mountlist contains one entry for each hostname and - * directory pair. - */ - mountlist - MOUNTPROC3_DUMP(void) = 2; - - /* - * Removes the mount list entry for the directory - * Unix authentication required. - */ - void - MOUNTPROC3_UMNT(dirpath) = 3; - - /* - * Removes all of the mount list entries for this client - * Unix authentication required. - */ - void - MOUNTPROC3_UMNTALL(void) = 4; - - /* - * Returns a list of all the exported filesystems, and which - * machines are allowed to import it. - */ - exports - MOUNTPROC3_EXPORT(void) = 5; - - } = 3; -} = 100005; - -#ifdef RPC_HDR -%#endif /*!_rpcsvc_mount_h*/ -#endif diff --git a/mount/rpcsvc/nfsmount_clnt.c b/mount/rpcsvc/nfsmount_clnt.c deleted file mode 100644 index b518f60b..00000000 --- a/mount/rpcsvc/nfsmount_clnt.c +++ /dev/null @@ -1,361 +0,0 @@ -/* - * Please do not edit this file. - * It was generated using rpcgen. - */ - -#include <memory.h> /* for memset */ -#include "nfsmount.h" -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user or with the express written consent of - * Sun Microsystems, Inc. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -/* - * Copyright (c) 1985, 1990 by Sun Microsystems, Inc. - */ - -/* from @(#)mount.x 1.3 91/03/11 TIRPC 1.0 */ -#include <string.h> /* for memset() */ -#include <asm/types.h> - -/* Default timeout can be changed using clnt_control() */ -static struct timeval TIMEOUT = { 25, 0 }; - -void * -mountproc_null_1(void *argp, CLIENT *clnt) -{ - static char clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC_NULL, - (xdrproc_t) xdr_void, (caddr_t) argp, - (xdrproc_t) xdr_void, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return ((void *)&clnt_res); -} - -fhstatus * -mountproc_mnt_1(dirpath *argp, CLIENT *clnt) -{ - static fhstatus clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC_MNT, - (xdrproc_t) xdr_dirpath, (caddr_t) argp, - (xdrproc_t) xdr_fhstatus, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return (&clnt_res); -} - -mountlist * -mountproc_dump_1(void *argp, CLIENT *clnt) -{ - static mountlist clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC_DUMP, - (xdrproc_t) xdr_void, (caddr_t) argp, - (xdrproc_t) xdr_mountlist, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return (&clnt_res); -} - -void * -mountproc_umnt_1(dirpath *argp, CLIENT *clnt) -{ - static char clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC_UMNT, - (xdrproc_t) xdr_dirpath, (caddr_t) argp, - (xdrproc_t) xdr_void, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return ((void *)&clnt_res); -} - -void * -mountproc_umntall_1(void *argp, CLIENT *clnt) -{ - static char clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC_UMNTALL, - (xdrproc_t) xdr_void, (caddr_t) argp, - (xdrproc_t) xdr_void, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return ((void *)&clnt_res); -} - -exports * -mountproc_export_1(void *argp, CLIENT *clnt) -{ - static exports clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC_EXPORT, - (xdrproc_t) xdr_void, (caddr_t) argp, - (xdrproc_t) xdr_exports, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return (&clnt_res); -} - -exports * -mountproc_exportall_1(void *argp, CLIENT *clnt) -{ - static exports clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC_EXPORTALL, - (xdrproc_t) xdr_void, (caddr_t) argp, - (xdrproc_t) xdr_exports, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return (&clnt_res); -} - -void * -mountproc_null_2(void *argp, CLIENT *clnt) -{ - static char clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC_NULL, - (xdrproc_t) xdr_void, (caddr_t) argp, - (xdrproc_t) xdr_void, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return ((void *)&clnt_res); -} - -fhstatus * -mountproc_mnt_2(dirpath *argp, CLIENT *clnt) -{ - static fhstatus clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC_MNT, - (xdrproc_t) xdr_dirpath, (caddr_t) argp, - (xdrproc_t) xdr_fhstatus, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return (&clnt_res); -} - -mountlist * -mountproc_dump_2(void *argp, CLIENT *clnt) -{ - static mountlist clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC_DUMP, - (xdrproc_t) xdr_void, (caddr_t) argp, - (xdrproc_t) xdr_mountlist, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return (&clnt_res); -} - -void * -mountproc_umnt_2(dirpath *argp, CLIENT *clnt) -{ - static char clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC_UMNT, - (xdrproc_t) xdr_dirpath, (caddr_t) argp, - (xdrproc_t) xdr_void, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return ((void *)&clnt_res); -} - -void * -mountproc_umntall_2(void *argp, CLIENT *clnt) -{ - static char clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC_UMNTALL, - (xdrproc_t) xdr_void, (caddr_t) argp, - (xdrproc_t) xdr_void, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return ((void *)&clnt_res); -} - -exports * -mountproc_export_2(void *argp, CLIENT *clnt) -{ - static exports clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC_EXPORT, - (xdrproc_t) xdr_void, (caddr_t) argp, - (xdrproc_t) xdr_exports, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return (&clnt_res); -} - -exports * -mountproc_exportall_2(void *argp, CLIENT *clnt) -{ - static exports clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC_EXPORTALL, - (xdrproc_t) xdr_void, (caddr_t) argp, - (xdrproc_t) xdr_exports, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return (&clnt_res); -} - -ppathcnf * -mountproc_pathconf_2(dirpath *argp, CLIENT *clnt) -{ - static ppathcnf clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC_PATHCONF, - (xdrproc_t) xdr_dirpath, (caddr_t) argp, - (xdrproc_t) xdr_ppathcnf, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return (&clnt_res); -} - -void * -mountproc3_null_3(void *argp, CLIENT *clnt) -{ - static char clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC3_NULL, - (xdrproc_t) xdr_void, (caddr_t) argp, - (xdrproc_t) xdr_void, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return ((void *)&clnt_res); -} - -mountres3 * -mountproc3_mnt_3(dirpath *argp, CLIENT *clnt) -{ - static mountres3 clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC3_MNT, - (xdrproc_t) xdr_dirpath, (caddr_t) argp, - (xdrproc_t) xdr_mountres3, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return (&clnt_res); -} - -mountlist * -mountproc3_dump_3(void *argp, CLIENT *clnt) -{ - static mountlist clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC3_DUMP, - (xdrproc_t) xdr_void, (caddr_t) argp, - (xdrproc_t) xdr_mountlist, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return (&clnt_res); -} - -void * -mountproc3_umnt_3(dirpath *argp, CLIENT *clnt) -{ - static char clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC3_UMNT, - (xdrproc_t) xdr_dirpath, (caddr_t) argp, - (xdrproc_t) xdr_void, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return ((void *)&clnt_res); -} - -void * -mountproc3_umntall_3(void *argp, CLIENT *clnt) -{ - static char clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC3_UMNTALL, - (xdrproc_t) xdr_void, (caddr_t) argp, - (xdrproc_t) xdr_void, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return ((void *)&clnt_res); -} - -exports * -mountproc3_export_3(void *argp, CLIENT *clnt) -{ - static exports clnt_res; - - memset((char *)&clnt_res, 0, sizeof(clnt_res)); - if (clnt_call (clnt, MOUNTPROC3_EXPORT, - (xdrproc_t) xdr_void, (caddr_t) argp, - (xdrproc_t) xdr_exports, (caddr_t) &clnt_res, - TIMEOUT) != RPC_SUCCESS) { - return (NULL); - } - return (&clnt_res); -} diff --git a/mount/rpcsvc/nfsmount_xdr.c b/mount/rpcsvc/nfsmount_xdr.c deleted file mode 100644 index e91fcbfd..00000000 --- a/mount/rpcsvc/nfsmount_xdr.c +++ /dev/null @@ -1,329 +0,0 @@ -/* - * Please do not edit this file. - * It was generated using rpcgen. - */ - -#include "nfsmount.h" -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user or with the express written consent of - * Sun Microsystems, Inc. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -/* - * Copyright (c) 1985, 1990 by Sun Microsystems, Inc. - */ - -/* from @(#)mount.x 1.3 91/03/11 TIRPC 1.0 */ -#include <asm/types.h> - -bool_t -xdr_fhandle (XDR *xdrs, fhandle objp) -{ - register int32_t *buf; - - if (!xdr_opaque (xdrs, objp, FHSIZE)) - return FALSE; - return TRUE; -} - -bool_t -xdr_fhandle3 (XDR *xdrs, fhandle3 *objp) -{ - register int32_t *buf; - - if (!xdr_bytes (xdrs, (char **)&objp->fhandle3_val, (u_int *) &objp->fhandle3_len, FHSIZE3)) - return FALSE; - return TRUE; -} - -bool_t -xdr_mountstat3 (XDR *xdrs, mountstat3 *objp) -{ - register int32_t *buf; - - if (!xdr_enum (xdrs, (enum_t *) objp)) - return FALSE; - return TRUE; -} - -bool_t -xdr_fhstatus (XDR *xdrs, fhstatus *objp) -{ - register int32_t *buf; - - if (!xdr_u_int (xdrs, &objp->fhs_status)) - return FALSE; - switch (objp->fhs_status) { - case 0: - if (!xdr_fhandle (xdrs, objp->fhstatus_u.fhs_fhandle)) - return FALSE; - break; - default: - break; - } - return TRUE; -} - -bool_t -xdr_mountres3_ok (XDR *xdrs, mountres3_ok *objp) -{ - register int32_t *buf; - - if (!xdr_fhandle3 (xdrs, &objp->fhandle)) - return FALSE; - if (!xdr_array (xdrs, (char **)&objp->auth_flavours.auth_flavours_val, (u_int *) &objp->auth_flavours.auth_flavours_len, ~0, - sizeof (int), (xdrproc_t) xdr_int)) - return FALSE; - return TRUE; -} - -bool_t -xdr_mountres3 (XDR *xdrs, mountres3 *objp) -{ - register int32_t *buf; - - if (!xdr_mountstat3 (xdrs, &objp->fhs_status)) - return FALSE; - switch (objp->fhs_status) { - case MNT_OK: - if (!xdr_mountres3_ok (xdrs, &objp->mountres3_u.mountinfo)) - return FALSE; - break; - default: - break; - } - return TRUE; -} - -bool_t -xdr_dirpath (XDR *xdrs, dirpath *objp) -{ - register int32_t *buf; - - if (!xdr_string (xdrs, objp, MNTPATHLEN)) - return FALSE; - return TRUE; -} - -bool_t -xdr_name (XDR *xdrs, name *objp) -{ - register int32_t *buf; - - if (!xdr_string (xdrs, objp, MNTNAMLEN)) - return FALSE; - return TRUE; -} - -bool_t -xdr_mountlist (XDR *xdrs, mountlist *objp) -{ - register int32_t *buf; - - if (!xdr_pointer (xdrs, (char **)objp, sizeof (struct mountbody), (xdrproc_t) xdr_mountbody)) - return FALSE; - return TRUE; -} - -bool_t -xdr_mountbody (XDR *xdrs, mountbody *objp) -{ - register int32_t *buf; - - if (!xdr_name (xdrs, &objp->ml_hostname)) - return FALSE; - if (!xdr_dirpath (xdrs, &objp->ml_directory)) - return FALSE; - if (!xdr_mountlist (xdrs, &objp->ml_next)) - return FALSE; - return TRUE; -} - -bool_t -xdr_groups (XDR *xdrs, groups *objp) -{ - register int32_t *buf; - - if (!xdr_pointer (xdrs, (char **)objp, sizeof (struct groupnode), (xdrproc_t) xdr_groupnode)) - return FALSE; - return TRUE; -} - -bool_t -xdr_groupnode (XDR *xdrs, groupnode *objp) -{ - register int32_t *buf; - - if (!xdr_name (xdrs, &objp->gr_name)) - return FALSE; - if (!xdr_groups (xdrs, &objp->gr_next)) - return FALSE; - return TRUE; -} - -bool_t -xdr_exports (XDR *xdrs, exports *objp) -{ - register int32_t *buf; - - if (!xdr_pointer (xdrs, (char **)objp, sizeof (struct exportnode), (xdrproc_t) xdr_exportnode)) - return FALSE; - return TRUE; -} - -bool_t -xdr_exportnode (XDR *xdrs, exportnode *objp) -{ - register int32_t *buf; - - if (!xdr_dirpath (xdrs, &objp->ex_dir)) - return FALSE; - if (!xdr_groups (xdrs, &objp->ex_groups)) - return FALSE; - if (!xdr_exports (xdrs, &objp->ex_next)) - return FALSE; - return TRUE; -} - -bool_t -xdr_ppathcnf (XDR *xdrs, ppathcnf *objp) -{ - register int32_t *buf; - - int i; - - if (xdrs->x_op == XDR_ENCODE) { - buf = XDR_INLINE (xdrs, 6 * BYTES_PER_XDR_UNIT); - if (buf == NULL) { - if (!xdr_int (xdrs, &objp->pc_link_max)) - return FALSE; - if (!xdr_short (xdrs, &objp->pc_max_canon)) - return FALSE; - if (!xdr_short (xdrs, &objp->pc_max_input)) - return FALSE; - if (!xdr_short (xdrs, &objp->pc_name_max)) - return FALSE; - if (!xdr_short (xdrs, &objp->pc_path_max)) - return FALSE; - if (!xdr_short (xdrs, &objp->pc_pipe_buf)) - return FALSE; - - } else { - IXDR_PUT_LONG(buf, objp->pc_link_max); - IXDR_PUT_SHORT(buf, objp->pc_max_canon); - IXDR_PUT_SHORT(buf, objp->pc_max_input); - IXDR_PUT_SHORT(buf, objp->pc_name_max); - IXDR_PUT_SHORT(buf, objp->pc_path_max); - IXDR_PUT_SHORT(buf, objp->pc_pipe_buf); - } - if (!xdr_u_char (xdrs, &objp->pc_vdisable)) - return FALSE; - if (!xdr_char (xdrs, &objp->pc_xxx)) - return FALSE; - buf = XDR_INLINE (xdrs, ( 2 ) * BYTES_PER_XDR_UNIT); - if (buf == NULL) { - if (!xdr_vector (xdrs, (char *)objp->pc_mask, 2, - sizeof (short), (xdrproc_t) xdr_short)) - return FALSE; - } else { - { - register short *genp; - - for (i = 0, genp = objp->pc_mask; - i < 2; ++i) { - IXDR_PUT_SHORT(buf, *genp++); - } - } - } - return TRUE; - } else if (xdrs->x_op == XDR_DECODE) { - buf = XDR_INLINE (xdrs, 6 * BYTES_PER_XDR_UNIT); - if (buf == NULL) { - if (!xdr_int (xdrs, &objp->pc_link_max)) - return FALSE; - if (!xdr_short (xdrs, &objp->pc_max_canon)) - return FALSE; - if (!xdr_short (xdrs, &objp->pc_max_input)) - return FALSE; - if (!xdr_short (xdrs, &objp->pc_name_max)) - return FALSE; - if (!xdr_short (xdrs, &objp->pc_path_max)) - return FALSE; - if (!xdr_short (xdrs, &objp->pc_pipe_buf)) - return FALSE; - - } else { - objp->pc_link_max = IXDR_GET_LONG(buf); - objp->pc_max_canon = IXDR_GET_SHORT(buf); - objp->pc_max_input = IXDR_GET_SHORT(buf); - objp->pc_name_max = IXDR_GET_SHORT(buf); - objp->pc_path_max = IXDR_GET_SHORT(buf); - objp->pc_pipe_buf = IXDR_GET_SHORT(buf); - } - if (!xdr_u_char (xdrs, &objp->pc_vdisable)) - return FALSE; - if (!xdr_char (xdrs, &objp->pc_xxx)) - return FALSE; - buf = XDR_INLINE (xdrs, ( 2 ) * BYTES_PER_XDR_UNIT); - if (buf == NULL) { - if (!xdr_vector (xdrs, (char *)objp->pc_mask, 2, - sizeof (short), (xdrproc_t) xdr_short)) - return FALSE; - } else { - { - register short *genp; - - for (i = 0, genp = objp->pc_mask; - i < 2; ++i) { - *genp++ = IXDR_GET_SHORT(buf); - } - } - } - return TRUE; - } - - if (!xdr_int (xdrs, &objp->pc_link_max)) - return FALSE; - if (!xdr_short (xdrs, &objp->pc_max_canon)) - return FALSE; - if (!xdr_short (xdrs, &objp->pc_max_input)) - return FALSE; - if (!xdr_short (xdrs, &objp->pc_name_max)) - return FALSE; - if (!xdr_short (xdrs, &objp->pc_path_max)) - return FALSE; - if (!xdr_short (xdrs, &objp->pc_pipe_buf)) - return FALSE; - if (!xdr_u_char (xdrs, &objp->pc_vdisable)) - return FALSE; - if (!xdr_char (xdrs, &objp->pc_xxx)) - return FALSE; - if (!xdr_vector (xdrs, (char *)objp->pc_mask, 2, - sizeof (short), (xdrproc_t) xdr_short)) - return FALSE; - return TRUE; -} diff --git a/mount/sundries.c b/mount/sundries.c index e6208e43..cdfbb42e 100644 --- a/mount/sundries.c +++ b/mount/sundries.c @@ -16,7 +16,6 @@ #include "sundries.h" #include "realpath.h" #include "xmalloc.h" -#include "nfsmount.h" #include "nls.h" char * diff --git a/mount/umount.c b/mount/umount.c index 98ebc77a..081f3127 100644 --- a/mount/umount.c +++ b/mount/umount.c @@ -20,15 +20,6 @@ #include "env.h" #include "nls.h" -#include <sys/socket.h> -#include <sys/time.h> -#include <netdb.h> -#include <rpc/rpc.h> -#include <rpc/pmap_clnt.h> -#include <rpc/pmap_prot.h> -#include "nfsmount.h" -#include <arpa/inet.h> - #if defined(MNT_FORCE) /* Interesting ... it seems libc knows about MNT_FORCE and presumably about umount2 as well -- need not do anything */ @@ -144,98 +135,6 @@ check_special_umountprog(const char *spec, const char *node, return 0; } -static int xdr_dir(XDR *xdrsp, char *dirp) -{ - return (xdr_string(xdrsp, &dirp, MNTPATHLEN)); -} - -static int -nfs_umount_rpc_call(const char *spec, const char *opts) -{ - register CLIENT *clp; - struct sockaddr_in saddr; - struct timeval pertry, try; - enum clnt_stat clnt_stat; - int port = 0; - int so = RPC_ANYSOCK; - struct hostent *hostp; - char *hostname; - char *dirname; - char *p; - - if (spec == NULL || (p = strchr(spec,':')) == NULL) - return 0; - hostname = xstrndup(spec, p-spec); - dirname = xstrdup(p+1); -#ifdef DEBUG - printf(_("host: %s, directory: %s\n"), hostname, dirname); -#endif - - if (opts && (p = strstr(opts, "addr="))) { - char *q; - - free(hostname); - p += 5; - q = p; - while (*q && *q != ',') q++; - hostname = xstrndup(p,q-p); - } - - if (opts && (p = strstr(opts, "mountport=")) && isdigit(*(p+10))) - port = atoi(p+10); - - if (hostname[0] >= '0' && hostname[0] <= '9') - saddr.sin_addr.s_addr = inet_addr(hostname); - else { - if ((hostp = gethostbyname(hostname)) == NULL) { - fprintf(stderr, _("umount: can't get address for %s\n"), - hostname); - return 1; - } - if (hostp->h_length > sizeof(struct in_addr)) { - fprintf(stderr, _("umount: got bad hostp->h_length\n")); - hostp->h_length = sizeof(struct in_addr); - } - memcpy(&saddr.sin_addr, hostp->h_addr, hostp->h_length); - } - - saddr.sin_family = AF_INET; - saddr.sin_port = htons(port); - pertry.tv_sec = 3; - pertry.tv_usec = 0; - if (opts && (p = strstr(opts, "tcp"))) { - /* possibly: make sure option is not "notcp" - possibly: try udp if tcp fails */ - if ((clp = clnttcp_create(&saddr, MOUNTPROG, MOUNTVERS, - &so, 0, 0)) == NULL) { - clnt_pcreateerror("Cannot MOUNTPROG RPC (tcp)"); - return 1; - } - } else { - if ((clp = clntudp_create(&saddr, MOUNTPROG, MOUNTVERS, - pertry, &so)) == NULL) { - clnt_pcreateerror("Cannot MOUNTPROG RPC"); - return 1; - } - } - clp->cl_auth = authunix_create_default(); - try.tv_sec = 20; - try.tv_usec = 0; - clnt_stat = clnt_call(clp, MOUNTPROC_UMNT, - (xdrproc_t) xdr_dir, dirname, - (xdrproc_t) xdr_void, (caddr_t) 0, - try); - - if (clnt_stat != RPC_SUCCESS) { - clnt_perror(clp, "Bad UMNT RPC"); - return 1; - } - auth_destroy(clp->cl_auth); - clnt_destroy(clp); - - return 0; -} - /* complain about a failed umount */ static void complain(int err, const char *dev) { switch (err) { @@ -289,11 +188,6 @@ umount_one (const char *spec, const char *node, const char *type, if (check_special_umountprog(spec, node, type, &status)) return status; - /* Ignore any RPC errors, so that you can umount the filesystem - if the server is down. */ - if (strcasecmp(type, "nfs") == 0) - nfs_umount_rpc_call(spec, opts); - umnt_err = umnt_err2 = 0; if (lazy) { res = umount2 (node, MNT_DETACH); |