From 7d0df748b4c59651751f156e408f856a02073b69 Mon Sep 17 00:00:00 2001 From: mbr Date: Tue, 2 Sep 2003 15:27:38 +0000 Subject: Virgin import of AMD (am-utils) 20030828 (6.0.9) --- contrib/amd/conf/checkmount/checkmount_bsd44.c | 4 +- contrib/amd/conf/mount/mount_default.c | 46 +++ contrib/amd/conf/mtab/mtab_bsd.c | 10 +- contrib/amd/conf/nfs_prot/nfs_prot_aix5_1.h | 315 ++++++++++++++++++ contrib/amd/conf/nfs_prot/nfs_prot_darwin.h | 6 +- contrib/amd/conf/nfs_prot/nfs_prot_freebsd2.h | 4 +- contrib/amd/conf/nfs_prot/nfs_prot_freebsd3.h | 12 +- contrib/amd/conf/nfs_prot/nfs_prot_osf5.h | 431 +++++++++++++++++++++++++ contrib/amd/conf/nfs_prot/nfs_prot_sunos5_8.h | 388 ++++++++++++++++++++++ contrib/amd/conf/transp/transp_sockets.c | 43 +-- contrib/amd/conf/umount/umount_bsd44.c | 4 +- 11 files changed, 1220 insertions(+), 43 deletions(-) create mode 100644 contrib/amd/conf/mount/mount_default.c create mode 100644 contrib/amd/conf/nfs_prot/nfs_prot_aix5_1.h create mode 100644 contrib/amd/conf/nfs_prot/nfs_prot_osf5.h create mode 100644 contrib/amd/conf/nfs_prot/nfs_prot_sunos5_8.h (limited to 'contrib/amd/conf') diff --git a/contrib/amd/conf/checkmount/checkmount_bsd44.c b/contrib/amd/conf/checkmount/checkmount_bsd44.c index 2021513..b449ec4 100644 --- a/contrib/amd/conf/checkmount/checkmount_bsd44.c +++ b/contrib/amd/conf/checkmount/checkmount_bsd44.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997-2001 Erez Zadok + * Copyright (c) 1997-2003 Erez Zadok * Copyright (c) 1990 Jan-Simon Pendry * Copyright (c) 1990 Imperial College of Science, Technology & Medicine * Copyright (c) 1990 The Regents of the University of California. @@ -38,7 +38,7 @@ * * %W% (Berkeley) %G% * - * $Id: checkmount_bsd44.c,v 1.3.2.1 2001/01/10 03:23:15 ezk Exp $ + * $Id: checkmount_bsd44.c,v 1.3.2.3 2002/12/27 22:44:47 ezk Exp $ * */ diff --git a/contrib/amd/conf/mount/mount_default.c b/contrib/amd/conf/mount/mount_default.c new file mode 100644 index 0000000..1bdf522 --- /dev/null +++ b/contrib/amd/conf/mount/mount_default.c @@ -0,0 +1,46 @@ +/* + * Copyright (c) 1997-2003 Erez Zadok + * Copyright (c) 1990 Jan-Simon Pendry + * Copyright (c) 1990 Imperial College of Science, Technology & Medicine + * Copyright (c) 1990 The Regents of the University of California. + * All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Jan-Simon Pendry at Imperial College, London. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgment: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * %W% (Berkeley) %G% + * + * $Id: mount_default.c,v 1.1.2.3 2002/12/27 22:44:48 ezk Exp $ + */ + +/* + * Default mount helper (currently empty) + */ diff --git a/contrib/amd/conf/mtab/mtab_bsd.c b/contrib/amd/conf/mtab/mtab_bsd.c index 8a7c09e..30ec419 100644 --- a/contrib/amd/conf/mtab/mtab_bsd.c +++ b/contrib/amd/conf/mtab/mtab_bsd.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997-2001 Erez Zadok + * Copyright (c) 1997-2003 Erez Zadok * Copyright (c) 1990 Jan-Simon Pendry * Copyright (c) 1990 Imperial College of Science, Technology & Medicine * Copyright (c) 1990 The Regents of the University of California. @@ -38,7 +38,7 @@ * * %W% (Berkeley) %G% * - * $Id: mtab_bsd.c,v 1.3.2.1 2001/01/10 03:23:18 ezk Exp $ + * $Id: mtab_bsd.c,v 1.3.2.4 2002/12/27 22:44:50 ezk Exp $ * */ @@ -64,9 +64,9 @@ mnt_dup(struct statfs *mp) new_mp->mnt_fsname = strdup(mp->f_mntfromname); new_mp->mnt_dir = strdup(mp->f_mntonname); -#ifdef HAVE_FIELD_STRUCT_STATFS_F_FSTYPENAME +#ifdef HAVE_STRUCT_STATFS_F_FSTYPENAME ty = mp->f_fstypename; -#else /* not HAVE_FIELD_STRUCT_STATFS_F_FSTYPENAME */ +#else /* not HAVE_STRUCT_STATFS_F_FSTYPENAME */ switch (mp->f_type) { # if defined(MOUNT_UFS) && defined(MNTTAB_TYPE_UFS) @@ -92,7 +92,7 @@ mnt_dup(struct statfs *mp) break; } -#endif /* not HAVE_FIELD_STRUCT_STATFS_F_FSTYPENAME */ +#endif /* not HAVE_STRUCT_STATFS_F_FSTYPENAME */ new_mp->mnt_type = strdup(ty); new_mp->mnt_opts = strdup("unset"); diff --git a/contrib/amd/conf/nfs_prot/nfs_prot_aix5_1.h b/contrib/amd/conf/nfs_prot/nfs_prot_aix5_1.h new file mode 100644 index 0000000..e7fb478 --- /dev/null +++ b/contrib/amd/conf/nfs_prot/nfs_prot_aix5_1.h @@ -0,0 +1,315 @@ +/* + * Copyright (c) 1997-2003 Erez Zadok + * Copyright (c) 1990 Jan-Simon Pendry + * Copyright (c) 1990 Imperial College of Science, Technology & Medicine + * Copyright (c) 1990 The Regents of the University of California. + * All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Jan-Simon Pendry at Imperial College, London. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgment: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * %W% (Berkeley) %G% + * + * $Id: nfs_prot_aix5_1.h,v 1.1.2.3 2002/12/27 22:44:53 ezk Exp $ + * + */ + +#ifndef _AMU_NFS_PROT_H +#define _AMU_NFS_PROT_H + + +/* + * AIX 5.1 has a different aix51_nfs_args structure, hence the separate header. + */ + +#ifdef HAVE_RPCSVC_NFS_PROT_H +# include +#endif /* HAVE_RPCSVC_NFS_PROT_H */ +#ifdef HAVE_NFS_NFSV2_H +# include +#endif /* HAVE_NFS_NFSV2_H */ +#ifdef HAVE_NFS_RPCV2_H +# include +#endif /* HAVE_NFS_RPCV2_H */ +#ifdef HAVE_SYS_FS_NFS_H +# include +#endif /* HAVE_SYS_FS_NFS_H */ +#ifdef HAVE_RPCSVC_MOUNT_H +# include +#endif /* HAVE_RPCSVC_MOUNT_H */ + + +/* + * MACROS + */ + +#ifndef MNTPATHLEN +# define MNTPATHLEN 1024 +#endif /* not MNTPATHLEN */ +#ifndef MNTNAMLEN +# define MNTNAMLEN 255 +#endif /* not MNTNAMLEN */ + +/* map field names */ +#define ex_dir ex_name +#define gr_name g_name +#define gr_next g_next +#define ml_directory ml_path +#define ml_hostname ml_name +#define ml_next ml_nxt + +#define dr_drok_u diropres +#define ca_attributes attributes +#define ca_where where +#define da_fhandle dir +#define da_name name +#define dl_entries entries +#define dl_eof eof +#define dr_status status +#define dr_u diropres_u +#define drok_attributes attributes +#define drok_fhandle file +#define fh_data data +#define la_fhandle from +#define la_to to +#define na_atime atime +#define na_blocks blocks +#define na_blocksize blocksize +#define na_ctime ctime +#define na_fileid fileid +#define na_fsid fsid +#define na_gid gid +#define na_mode mode +#define na_mtime mtime +#define na_nlink nlink +#define na_rdev rdev +#define na_size size +#define na_type type +#define na_uid uid +#define ne_cookie cookie +#define ne_fileid fileid +#define ne_name name +#define ne_nextentry nextentry +#define ns_attr_u attributes +#define ns_status status +#define ns_u attrstat_u +#define nt_seconds seconds +#define nt_useconds useconds +#define ra_count count +#define ra_fhandle file +#define ra_offset offset +#define ra_totalcount totalcount +#define raok_attributes attributes +#define raok_len_u data_len +#define raok_u data +#define raok_val_u data_val +#define rda_cookie cookie +#define rda_count count +#define rda_fhandle dir +#define rdr_reply_u reply +#define rdr_status status +#define rdr_u readdirres_u +#define rlr_data_u data +#define rlr_status status +#define rlr_u readlinkres_u +#define rna_from from +#define rna_to to +#define rr_reply_u reply +#define rr_status status +#define rr_u readres_u +#define sa_atime atime +#define sa_gid gid +#define sa_mode mode +#define sa_mtime mtime +#define sa_size size +#define sa_uid uid +#define sag_attributes attributes +#define sag_fhandle file +#define sfr_reply_u reply +#define sfr_status status +#define sfr_u statfsres_u +#define sfrok_bavail bavail +#define sfrok_bfree bfree +#define sfrok_blocks blocks +#define sfrok_bsize bsize +#define sfrok_tsize tsize +#define sla_attributes attributes +#define sla_from from +#define sla_to to +#define wra_beginoffset beginoffset +#define wra_fhandle file +#define wra_len_u data_len +#define wra_offset offset +#define wra_totalcount totalcount +#define wra_u data +#define wra_val_u data_val + + +/* + * TYPEDEFS: + */ +typedef char *dirpath; +typedef char *name; +typedef struct exports *exports; +typedef struct exports exportnode; +typedef struct groups *groups; +typedef struct groups groupnode; +typedef struct mountlist *mountlist; + +typedef attrstat nfsattrstat; +typedef createargs nfscreateargs; +typedef dirlist nfsdirlist; +typedef diropargs nfsdiropargs; +typedef diropokres nfsdiropokres; +typedef diropres nfsdiropres; +typedef entry nfsentry; +typedef fattr nfsfattr; +typedef ftype nfsftype; +typedef linkargs nfslinkargs; +typedef readargs nfsreadargs; +typedef readdirargs nfsreaddirargs; +typedef readdirres nfsreaddirres; +typedef readlinkres nfsreadlinkres; +typedef readokres nfsreadokres; +typedef readres nfsreadres; +typedef renameargs nfsrenameargs; +typedef sattr nfssattr; +typedef sattrargs nfssattrargs; +typedef statfsokres nfsstatfsokres; +typedef statfsres nfsstatfsres; +typedef symlinkargs nfssymlinkargs; +typedef writeargs nfswriteargs; + + +/* + * EXTERNALS: + */ + + +/* + * STRUCTURES: + */ + +/* + * AIX 5.1 has NFS V3, but it is undefined in the header files. + * so I define everything that's needed for NFS V3 here. + */ +#ifdef MNT_NFS3 + +#define FHSIZE3 64 /* size in bytes of a file handle (v3) */ +#define NFS3_FHSIZE 64 +#define MOUNTVERS3 ((unsigned long)(3)) +#define NFS_V3 ((unsigned long)(3)) + +#if 0 +struct nfs_fh3 { + u_int len; + char val[64]; /* !!! */ +}; +#endif + +struct aix51_nfs_args { + struct sockaddr_in addr; /* server address and port */ + caddr_t u0; /* ??? UNKNOWN ??? */ + unsigned long proto; /* IPPROTO_TCP/IPPROTO_UDP */ + char *hostname; /* pointer to hostname? */ + char *netname; /* pointer to netname? */ + caddr_t fh; /* pointer to NFS v3 fh? */ + unsigned long u5; /* IBM sux, IBM sux, IBM sux... */ + unsigned long flags; /* flags */ + unsigned long wsize; /* wsize */ + unsigned long rsize; /* rsize */ + unsigned long timeo; /* timeo */ + unsigned long retrans; /* retrans */ + unsigned long acregmin; /* acregmin */ + unsigned long acregmax; /* acregmax */ + unsigned long acdirmin; /* acdirmin */ + unsigned long acdirmax; /* acdirmax */ + unsigned long u15; /* ??? UNKNOWN ??? */ + struct pathcnf *pathconf; /* pathconf */ +}; + +typedef struct { + u_int fhandle3_len; + char *fhandle3_val; +} fhandle3; + +enum mountstat3 { + MNT3_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 mountres3_ok { + fhandle3 fhandle; + struct { + u_int auth_flavors_len; + int *auth_flavors_val; + } auth_flavors; +}; +typedef struct mountres3_ok mountres3_ok; + +struct mountres3 { + mountstat3 fhs_status; + union { + mountres3_ok mountinfo; + } mountres3_u; +}; +typedef struct mountres3 mountres3; + +struct nfs_fh3 { + u_int fh3_length; + union nfs_fh3_u { + struct nfs_fh3_i { + fhandle_t fh3_i; + } nfs_fh3_i; + char data[NFS3_FHSIZE]; + } fh3_u; +}; +typedef struct nfs_fh3 nfs_fh3; + +#endif /* MNT_NFS3 */ + +/* + * EXTERNALS: + */ +extern bool_t xdr_groups(XDR *xdrs, groups *objp); +extern char *yperr_string (int incode); + +#endif /* not _AMU_NFS_PROT_H */ diff --git a/contrib/amd/conf/nfs_prot/nfs_prot_darwin.h b/contrib/amd/conf/nfs_prot/nfs_prot_darwin.h index 83c65f7..9ef1e72 100644 --- a/contrib/amd/conf/nfs_prot/nfs_prot_darwin.h +++ b/contrib/amd/conf/nfs_prot/nfs_prot_darwin.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997-2001 Erez Zadok + * Copyright (c) 1997-2003 Erez Zadok * Copyright (c) 1990 Jan-Simon Pendry * Copyright (c) 1990 Imperial College of Science, Technology & Medicine * Copyright (c) 1990 The Regents of the University of California. @@ -38,7 +38,7 @@ * * %W% (Berkeley) %G% * - * $Id: nfs_prot_darwin.h,v 1.1.2.1 2001/02/10 03:52:57 ib42 Exp $ + * $Id: nfs_prot_darwin.h,v 1.1.2.4 2002/12/27 22:44:54 ezk Exp $ * */ @@ -236,7 +236,7 @@ typedef writeargs nfswriteargs; /* * as of 3.0-RELEASE the nfs_fh3 that is defined in the system headers * (or the one generated by rpcgen) lacks the proper full definition, - * listed below. A special macro (aux/macros/struct_nfs_fh3.m4) searches + * listed below. A special macro (m4/macros/struct_nfs_fh3.m4) searches * for this special name before other names. */ diff --git a/contrib/amd/conf/nfs_prot/nfs_prot_freebsd2.h b/contrib/amd/conf/nfs_prot/nfs_prot_freebsd2.h index 4c8590b..53bb906 100644 --- a/contrib/amd/conf/nfs_prot/nfs_prot_freebsd2.h +++ b/contrib/amd/conf/nfs_prot/nfs_prot_freebsd2.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997-2001 Erez Zadok + * Copyright (c) 1997-2003 Erez Zadok * Copyright (c) 1990 Jan-Simon Pendry * Copyright (c) 1990 Imperial College of Science, Technology & Medicine * Copyright (c) 1990 The Regents of the University of California. @@ -38,7 +38,7 @@ * * %W% (Berkeley) %G% * - * $Id: nfs_prot_freebsd2.h,v 1.3.2.1 2001/01/10 03:23:21 ezk Exp $ + * $Id: nfs_prot_freebsd2.h,v 1.3.2.3 2002/12/27 22:44:54 ezk Exp $ * */ diff --git a/contrib/amd/conf/nfs_prot/nfs_prot_freebsd3.h b/contrib/amd/conf/nfs_prot/nfs_prot_freebsd3.h index db66c74..edecdf7 100644 --- a/contrib/amd/conf/nfs_prot/nfs_prot_freebsd3.h +++ b/contrib/amd/conf/nfs_prot/nfs_prot_freebsd3.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997-2001 Erez Zadok + * Copyright (c) 1997-2003 Erez Zadok * Copyright (c) 1990 Jan-Simon Pendry * Copyright (c) 1990 Imperial College of Science, Technology & Medicine * Copyright (c) 1990 The Regents of the University of California. @@ -38,7 +38,7 @@ * * %W% (Berkeley) %G% * - * $Id: nfs_prot_freebsd3.h,v 1.5.2.1 2001/01/10 03:23:22 ezk Exp $ + * $Id: nfs_prot_freebsd3.h,v 1.5.2.6 2003/08/27 19:35:16 ib42 Exp $ * */ @@ -58,6 +58,11 @@ # include #endif /* HAVE_UFS_UFS_UFSMOUNT_H */ +/* nfsclient/nfsargs.h was introduced in FreeBSD 5.0, and is needed */ +#ifdef HAVE_NFSCLIENT_NFSARGS_H +# include +#endif /* HAVE_NFSCLIENT_NFSARGS_H */ + /* * MACROS: */ @@ -83,6 +88,7 @@ #define na_nlink nlink #define na_size size #define na_type type +#define na_uid uid #define ne_cookie cookie #define ne_fileid fileid #define ne_name name @@ -163,7 +169,7 @@ typedef writeargs nfswriteargs; /* * as of 3.0-RELEASE the nfs_fh3 that is defined in the system headers * (or the one generated by rpcgen) lacks the proper full definition, - * listed below. A special macro (aux/macros/struct_nfs_fh3.m4) searches + * listed below. A special macro (m4/macros/struct_nfs_fh3.m4) searches * for this special name before other names. */ struct nfs_fh3_freebsd3 { diff --git a/contrib/amd/conf/nfs_prot/nfs_prot_osf5.h b/contrib/amd/conf/nfs_prot/nfs_prot_osf5.h new file mode 100644 index 0000000..655e98d --- /dev/null +++ b/contrib/amd/conf/nfs_prot/nfs_prot_osf5.h @@ -0,0 +1,431 @@ +/* + * Copyright (c) 1997-2003 Erez Zadok + * Copyright (c) 1990 Jan-Simon Pendry + * Copyright (c) 1990 Imperial College of Science, Technology & Medicine + * Copyright (c) 1990 The Regents of the University of California. + * All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Jan-Simon Pendry at Imperial College, London. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgment: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * %W% (Berkeley) %G% + * + * $Id: nfs_prot_osf5.h,v 1.1.2.4 2002/12/27 22:44:57 ezk Exp $ + * + */ + +#ifndef _AMU_NFS_PROT_H +#define _AMU_NFS_PROT_H + +#ifdef HAVE_RPCSVC_NFS_PROT_H +# include +#endif /* HAVE_RPCSVC_NFS_PROT_H */ +#ifdef HAVE_NFS_NFS_H +# include +#endif /* HAVE_NFS_NFS_H */ +#ifdef HAVE_RPCSVC_MOUNTV3_H +# include +#endif /* HAVE_RPCSVC_MOUNTV3_H */ +#ifdef HAVE_RPC_RPC_H +# include +#endif /* HAVE_RPC_RPC_H */ + +/* avoid conflicts with Irix's EFS */ +#undef MOUNT_EFS /* DCE Episode FS */ + +/* + * The NFSMNT_AUTO flag in Tru64 UNIX V5 has two effects: it causes df and + * mount not to display this mount point without the -e switch, as it did in + * previous releases. Unfortunately it also ignores the timeo mount option, + * disables the usual timeout backof and enforces a timeout of NFS_MAXTIMO + * (20 seconds) instead. This breaks amd which can sometimes take longer to + * respond to an NFS request, causing `nfs server not responding still trying' + * messages. + * + * To avoid this, we need to completely disable this flag on automount points, + * with the unfortunate side effect that they are no longer hidden in df and + * mount output. + */ +#undef MNT2_NFS_OPT_AUTO + +/* + * MACROS + */ + +#define NFS_PORT 2049 +#define NFS_MAXDATA 8192 +#define NFS_MAXPATHLEN 1024 +#define NFS_MAXNAMLEN 255 +#define NFS_FHSIZE 32 +#define NFS_COOKIESIZE 4 +#define MNTPATHLEN 1024 +#define MNTNAMLEN 255 + +#define NFSMODE_FMT 0170000 +#define NFSMODE_DIR 0040000 +#define NFSMODE_CHR 0020000 +#define NFSMODE_BLK 0060000 +#define NFSMODE_REG 0100000 +#define NFSMODE_LNK 0120000 +#define NFSMODE_SOCK 0140000 +#define NFSMODE_FIFO 0010000 + +#ifndef NFS_PROGRAM +# define NFS_PROGRAM ((u_long)100003) +#endif /* not NFS_PROGRAM */ +#ifndef NFS_VERSION +# define NFS_VERSION ((u_long)2) +#endif /* not NFS_VERSION */ + +#define NFSPROC_NULL ((u_long)0) +#define NFSPROC_GETATTR ((u_long)1) +#define NFSPROC_SETATTR ((u_long)2) +#define NFSPROC_ROOT ((u_long)3) +#define NFSPROC_LOOKUP ((u_long)4) +#define NFSPROC_READLINK ((u_long)5) +#define NFSPROC_READ ((u_long)6) +#define NFSPROC_WRITECACHE ((u_long)7) +#define NFSPROC_WRITE ((u_long)8) +#define NFSPROC_CREATE ((u_long)9) +#define NFSPROC_REMOVE ((u_long)10) +#define NFSPROC_RENAME ((u_long)11) +#define NFSPROC_LINK ((u_long)12) +#define NFSPROC_SYMLINK ((u_long)13) +#define NFSPROC_MKDIR ((u_long)14) +#define NFSPROC_RMDIR ((u_long)15) +#define NFSPROC_READDIR ((u_long)16) +#define NFSPROC_STATFS ((u_long)17) + +/* map field names */ +#define ml_hostname ml_name +#define ml_directory ml_path +#define ml_next ml_nxt +#define gr_next g_next +#define gr_name g_name +#define ex_dir ex_name + +#define drok_attributes drok_attr +#define na_fileid na_nodeid +#define la_fhandle la_from +#define nt_seconds tv_sec +#define nt_useconds tv_usec +#define ra_totalcount ra_totcount +#define sla_to sla_tnm +#define sla_attributes sla_sa +#define sag_fhandle saa_fh +#define sag_attributes saa_sa +#define sfrok_tsize fsok_tsize +#define sfrok_bsize fsok_bsize +#define sfrok_blocks fsok_blocks +#define sfrok_bfree fsok_bfree +#define sfrok_bavail fsok_bavail +#define sfr_status fs_status +#define sfr_u fs_u +#define sfr_reply_u fs_fsok_u +#define wra_fhandle wa_fhandle +#define wra_beginoffset wa_begoff +#define wra_offset wa_offset +#define wra_totalcount wa_totcount +#define wra_u wa_mbuf->m_hdr +#define wra_val_u mh_data +#define wra_len_u mh_len + + +/* + * TYPEDEFS: + */ +typedef char *dirpath; +typedef char *filename; +typedef char *name; +typedef char *nfspath; +typedef char nfscookie[NFS_COOKIESIZE]; +typedef enum nfsftype nfsftype; +typedef enum nfsstat nfsstat; +typedef struct nfssvcfh fhandle; +typedef struct nfsattrstat nfsattrstat; +typedef struct nfscreateargs nfscreateargs; +typedef struct nfsdirlist nfsdirlist; +typedef struct nfsdiropargs nfsdiropargs; +typedef struct nfsdrok nfsdiropokres; +typedef struct nfsdiropres nfsdiropres; +typedef struct nfsentry nfsentry; +typedef struct exports *exports; +typedef struct exports exportnode; +typedef struct nfsfattr nfsfattr; +typedef struct fhstatus fhstatus; +typedef struct groups *groups; +typedef struct groups groupnode; +typedef struct nfslinkargs nfslinkargs; +typedef struct mountlist *mountlist; +typedef struct mountlist mountbody; +typedef struct _nfs_fh _nfs_fh; +typedef struct timeval nfstime; +typedef struct nfsreadargs nfsreadargs; +typedef struct nfsreaddirargs nfsreaddirargs; +typedef struct nfsreaddirres nfsreaddirres; +typedef struct nfsreadlinkres nfsreadlinkres; +typedef struct nfsreadokres nfsreadokres; +typedef struct nfsreadres nfsreadres; +typedef struct nfsrenameargs nfsrenameargs; +typedef struct nfssattr nfssattr; +typedef struct nfssaargs nfssattrargs; +typedef struct nfsstatfsok nfsstatfsokres; +typedef struct nfsstatfs nfsstatfsres; +typedef struct nfsslargs nfssymlinkargs; +typedef struct nfswriteargs nfswriteargs; + + +/* + * EXTERNALS: + */ + +extern void *nfsproc_null_2_svc(void *, struct svc_req *); +extern nfsattrstat *nfsproc_getattr_2_svc(struct nfssvcfh *, struct svc_req *); +extern nfsattrstat *nfsproc_setattr_2_svc(nfssattrargs *, struct svc_req *); +extern void *nfsproc_root_2_svc(void *, struct svc_req *); +extern nfsdiropres *nfsproc_lookup_2_svc(nfsdiropargs *, struct svc_req *); +extern nfsreadlinkres *nfsproc_readlink_2_svc(struct nfssvcfh *, struct svc_req *); +extern nfsreadres *nfsproc_read_2_svc(nfsreadargs *, struct svc_req *); +extern void *nfsproc_writecache_2_svc(void *, struct svc_req *); +extern nfsattrstat *nfsproc_write_2_svc(nfswriteargs *, struct svc_req *); +extern nfsdiropres *nfsproc_create_2_svc(nfscreateargs *, struct svc_req *); +extern nfsstat *nfsproc_remove_2_svc(nfsdiropargs *, struct svc_req *); +extern nfsstat *nfsproc_rename_2_svc(nfsrenameargs *, struct svc_req *); +extern nfsstat *nfsproc_link_2_svc(nfslinkargs *, struct svc_req *); +extern nfsstat *nfsproc_symlink_2_svc(nfssymlinkargs *, struct svc_req *); +extern nfsdiropres *nfsproc_mkdir_2_svc(nfscreateargs *, struct svc_req *); +extern nfsstat *nfsproc_rmdir_2_svc(nfsdiropargs *, struct svc_req *); +extern nfsreaddirres *nfsproc_readdir_2_svc(nfsreaddirargs *, struct svc_req *); +extern nfsstatfsres *nfsproc_statfs_2_svc(struct nfssvcfh *, struct svc_req *); + +extern bool_t xdr_nfsstat(XDR *, nfsstat*); +extern bool_t xdr_ftype(XDR *, nfsftype*); +extern bool_t xdr_nfs_fh(XDR *, struct nfssvcfh*); +extern bool_t xdr_nfstime(XDR *, nfstime*); +extern bool_t xdr_fattr(XDR *, nfsfattr*); +extern bool_t xdr_sattr(XDR *, nfssattr*); +extern bool_t xdr_filename(XDR *, filename*); +extern bool_t xdr_nfspath(XDR *, nfspath*); +extern bool_t xdr_attrstat(XDR *, nfsattrstat*); +extern bool_t xdr_sattrargs(XDR *, nfssattrargs*); +extern bool_t xdr_diropargs(XDR *, nfsdiropargs*); +extern bool_t xdr_diropokres(XDR *, nfsdiropokres*); +extern bool_t xdr_diropres(XDR *, nfsdiropres*); +extern bool_t xdr_readlinkres(XDR *, nfsreadlinkres*); +extern bool_t xdr_readargs(XDR *, nfsreadargs*); +extern bool_t xdr_readokres(XDR *, nfsreadokres*); +extern bool_t xdr_readres(XDR *, nfsreadres*); +extern bool_t xdr_writeargs(XDR *, nfswriteargs*); +extern bool_t xdr_createargs(XDR *, nfscreateargs*); +extern bool_t xdr_renameargs(XDR *, nfsrenameargs*); +extern bool_t xdr_linkargs(XDR *, nfslinkargs*); +extern bool_t xdr_symlinkargs(XDR *, nfssymlinkargs*); +extern bool_t xdr_nfscookie(XDR *, nfscookie); +extern bool_t xdr_readdirargs(XDR *, nfsreaddirargs*); +extern bool_t xdr_entry(XDR *, nfsentry*); +extern bool_t xdr_dirlist(XDR *, nfsdirlist*); +extern bool_t xdr_readdirres(XDR *, nfsreaddirres*); +extern bool_t xdr_statfsokres(XDR *, nfsstatfsokres*); +extern bool_t xdr_statfsres(XDR *, nfsstatfsres*); + + +/* + * STRUCTURES: + */ + +struct _nfs_fh { + char data[NFS_FHSIZE]; +}; + +struct nfstime { + u_int nt_seconds; + u_int nt_useconds; +}; + +struct _fattr { + nfsftype na_type; + u_int na_mode; + u_int na_nlink; + u_int na_uid; + u_int na_gid; + u_int na_size; + u_int na_blocksize; + u_int na_rdev; + u_int na_blocks; + u_int na_fsid; + u_int na_fileid; + nfstime na_atime; + nfstime na_mtime; + nfstime na_ctime; +}; + +struct _sattr { + u_int sa_mode; + u_int sa_uid; + u_int sa_gid; + u_int sa_size; + nfstime sa_atime; + nfstime sa_mtime; +}; + +struct _attrstat { + nfsstat ns_status; + union { + nfsfattr ns_attr_u; + } ns_u; +}; + +struct _sattrargs { + struct nfssvcfh sag_fhandle; + nfssattr sag_attributes; +}; + +struct _diropargs { + struct nfssvcfh da_fhandle; /* was dir */ + filename da_name; +}; + +struct _diropokres { + struct nfssvcfh drok_fhandle; + nfsfattr drok_attributes; +}; + +struct _diropres { + nfsstat dr_status; /* was status */ + union { + nfsdiropokres dr_drok_u; /* was diropres */ + } dr_u; /* was diropres_u */ +}; + +struct nfsreadlinkres { + nfsstat rlr_status; + union { + nfspath rlr_data_u; + } rlr_u; +}; + +struct _readargs { + struct nfssvcfh ra_fhandle; + u_int ra_offset; + u_int ra_count; + u_int ra_totalcount; +}; + +struct nfsreadokres { + nfsfattr raok_attributes; + struct { + u_int raok_len_u; + char *raok_val_u; + } raok_u; +}; + +struct nfsreadres { + nfsstat rr_status; + union { + nfsreadokres rr_reply_u; + } rr_u; +}; + +#if 0 +struct _writeargs { + struct nfssvcfh wra_fhandle; + u_int wra_beginoffset; + u_int wra_offset; + u_int wra_totalcount; + struct { + u_int wra_len_u; + char *wra_val_u; + } wra_u; +}; +#endif + +struct nfscreateargs { + nfsdiropargs ca_where; + nfssattr ca_attributes; +}; + +struct nfsrenameargs { + nfsdiropargs rna_from; + nfsdiropargs rna_to; +}; + +struct _linkargs { + struct nfssvcfh la_fhandle; + nfsdiropargs la_to; +}; + +struct _symlinkargs { + nfsdiropargs sla_from; + nfspath sla_to; + nfssattr sla_attributes; +}; + +struct nfsreaddirargs { + struct nfssvcfh rda_fhandle; + nfscookie rda_cookie; + u_int rda_count; +}; + +struct nfsentry { + u_int ne_fileid; + filename ne_name; + nfscookie ne_cookie; + nfsentry *ne_nextentry; +}; + +struct nfsdirlist { + nfsentry *dl_entries; + bool_t dl_eof; +}; + +struct nfsreaddirres { + nfsstat rdr_status; + union { + nfsdirlist rdr_reply_u; + } rdr_u; +}; + +struct _statfsokres { + u_int sfrok_tsize; + u_int sfrok_bsize; + u_int sfrok_blocks; + u_int sfrok_bfree; + u_int sfrok_bavail; +}; + +struct _statfsres { + nfsstat sfr_status; + union { + nfsstatfsokres sfr_reply_u; + } sfr_u; +}; + +#endif /* not _AMU_NFS_PROT_H */ diff --git a/contrib/amd/conf/nfs_prot/nfs_prot_sunos5_8.h b/contrib/amd/conf/nfs_prot/nfs_prot_sunos5_8.h new file mode 100644 index 0000000..6392622 --- /dev/null +++ b/contrib/amd/conf/nfs_prot/nfs_prot_sunos5_8.h @@ -0,0 +1,388 @@ +/* + * Copyright (c) 1997-2003 Erez Zadok + * Copyright (c) 1990 Jan-Simon Pendry + * Copyright (c) 1990 Imperial College of Science, Technology & Medicine + * Copyright (c) 1990 The Regents of the University of California. + * All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Jan-Simon Pendry at Imperial College, London. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgment: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * %W% (Berkeley) %G% + * + * $Id: nfs_prot_sunos5_8.h,v 1.2.2.4 2002/12/27 22:44:59 ezk Exp $ + * + */ + +#ifndef _AMU_NFS_PROT_H +#define _AMU_NFS_PROT_H + +/* + * Do NOT include to get NFS V2 specs, because + * it will result in conflicts with . The latter is a must + * for NFS V3 specs. + */ + +#ifdef HAVE_NFS_NFS_H +# include +#endif /* HAVE_NFS_NFS_H */ + +#ifdef HAVE_RPCSVC_MOUNT_H +# include +#endif /* HAVE_RPCSVC_MOUNT_H */ + +#ifdef HAVE_RPC_RPC_H +# include +#endif /* HAVE_RPC_RPC_H */ + + +/* + * MACROS + */ + +#define NFS_PORT 2049 +#define NFS_MAXDATA 8192 +#define NFS_MAXPATHLEN 1024 +#define NFS_MAXNAMLEN 255 +#define NFS_FHSIZE 32 +#define NFS_COOKIESIZE 4 + +#define NFSMODE_FMT 0170000 +#define NFSMODE_DIR 0040000 +#define NFSMODE_CHR 0020000 +#define NFSMODE_BLK 0060000 +#define NFSMODE_REG 0100000 +#define NFSMODE_LNK 0120000 +#define NFSMODE_SOCK 0140000 +#define NFSMODE_FIFO 0010000 + +#define NFSPROC_NULL ((unsigned long)(0)) +#define NFSPROC_GETATTR ((unsigned long)(1)) +#define NFSPROC_SETATTR ((unsigned long)(2)) +#define NFSPROC_ROOT ((unsigned long)(3)) +#define NFSPROC_LOOKUP ((unsigned long)(4)) +#define NFSPROC_READLINK ((unsigned long)(5)) +#define NFSPROC_READ ((unsigned long)(6)) +#define NFSPROC_WRITECACHE ((unsigned long)(7)) +#define NFSPROC_WRITE ((unsigned long)(8)) +#define NFSPROC_CREATE ((unsigned long)(9)) +#define NFSPROC_REMOVE ((unsigned long)(10)) +#define NFSPROC_RENAME ((unsigned long)(11)) +#define NFSPROC_LINK ((unsigned long)(12)) +#define NFSPROC_SYMLINK ((unsigned long)(13)) +#define NFSPROC_MKDIR ((unsigned long)(14)) +#define NFSPROC_RMDIR ((unsigned long)(15)) +#define NFSPROC_READDIR ((unsigned long)(16)) +#define NFSPROC_STATFS ((unsigned long)(17)) + + +/* + * TYPEDEFS: + */ + +typedef char *filename; +typedef char *nfspath; +typedef char nfscookie[NFS_COOKIESIZE]; +typedef enum nfsftype nfsftype; +typedef struct attrstat nfsattrstat; +typedef struct createargs nfscreateargs; +typedef struct dirlist nfsdirlist; +typedef struct diropargs nfsdiropargs; +typedef struct diropokres nfsdiropokres; +typedef struct diropres nfsdiropres; +typedef struct entry nfsentry; +typedef struct fattr nfsfattr; +typedef struct linkargs nfslinkargs; +typedef struct nfs_fh nfs_fh; +typedef struct nfstime nfstime; +typedef struct readargs nfsreadargs; +typedef struct readdirargs nfsreaddirargs; +typedef struct readdirres nfsreaddirres; +typedef struct readlinkres nfsreadlinkres; +typedef struct readokres nfsreadokres; +typedef struct readres nfsreadres; +typedef struct renameargs nfsrenameargs; +typedef struct sattr nfssattr; +typedef struct sattrargs nfssattrargs; +typedef struct statfsokres nfsstatfsokres; +typedef struct statfsres nfsstatfsres; +typedef struct symlinkargs nfssymlinkargs; +typedef struct writeargs nfswriteargs; + + +/* + * EXTERNALS: + */ + +extern bool_t xdr_nfsstat(XDR *, nfsstat *); +extern bool_t xdr_ftype(XDR *, nfsftype *); +extern bool_t xdr_nfs_fh(XDR *, nfs_fh *); +extern bool_t xdr_nfstime(XDR *, nfstime *); +extern bool_t xdr_fattr(XDR *, nfsfattr *); +extern bool_t xdr_sattr(XDR *, nfssattr *); +extern bool_t xdr_filename(XDR *, filename *); +extern bool_t xdr_nfspath(XDR *, nfspath *); +extern bool_t xdr_attrstat(XDR *, nfsattrstat *); +extern bool_t xdr_sattrargs(XDR *, nfssattrargs *); +extern bool_t xdr_diropargs(XDR *, nfsdiropargs *); +extern bool_t xdr_diropokres(XDR *, nfsdiropokres *); +extern bool_t xdr_diropres(XDR *, nfsdiropres *); +extern bool_t xdr_readlinkres(XDR *, nfsreadlinkres *); +extern bool_t xdr_readargs(XDR *, nfsreadargs *); +extern bool_t xdr_readokres(XDR *, nfsreadokres *); +extern bool_t xdr_readres(XDR *, nfsreadres *); +extern bool_t xdr_writeargs(XDR *, nfswriteargs *); +extern bool_t xdr_createargs(XDR *, nfscreateargs *); +extern bool_t xdr_renameargs(XDR *, nfsrenameargs *); +extern bool_t xdr_linkargs(XDR *, nfslinkargs *); +extern bool_t xdr_symlinkargs(XDR *, nfssymlinkargs *); +extern bool_t xdr_nfscookie(XDR *, nfscookie); +extern bool_t xdr_readdirargs(XDR *, nfsreaddirargs *); +extern bool_t xdr_entry(XDR *, nfsentry *); +extern bool_t xdr_dirlist(XDR *, nfsdirlist *); +extern bool_t xdr_readdirres(XDR *, nfsreaddirres *); +extern bool_t xdr_statfsokres(XDR *, nfsstatfsokres *); +extern bool_t xdr_statfsres(XDR *, nfsstatfsres *); + +extern nfsattrstat *nfsproc_getattr_2(nfs_fh *, CLIENT *); +extern nfsattrstat *nfsproc_getattr_2_svc(nfs_fh *, struct svc_req *); +extern nfsattrstat *nfsproc_setattr_2(nfssattrargs *, CLIENT *); +extern nfsattrstat *nfsproc_setattr_2_svc(nfssattrargs *, struct svc_req *); +extern nfsattrstat *nfsproc_write_2(nfswriteargs *, CLIENT *); +extern nfsattrstat *nfsproc_write_2_svc(nfswriteargs *, struct svc_req *); +extern nfsdiropres *nfsproc_create_2(nfscreateargs *, CLIENT *); +extern nfsdiropres *nfsproc_create_2_svc(nfscreateargs *, struct svc_req *); +extern nfsdiropres *nfsproc_lookup_2(nfsdiropargs *, CLIENT *); +extern nfsdiropres *nfsproc_lookup_2_svc(nfsdiropargs *, struct svc_req *); +extern nfsdiropres *nfsproc_mkdir_2(nfscreateargs *, CLIENT *); +extern nfsdiropres *nfsproc_mkdir_2_svc(nfscreateargs *, struct svc_req *); +extern nfsstat *nfsproc_link_2(nfslinkargs *, CLIENT *); +extern nfsstat *nfsproc_link_2_svc(nfslinkargs *, struct svc_req *); +extern nfsstat *nfsproc_remove_2(nfsdiropargs *, CLIENT *); +extern nfsstat *nfsproc_remove_2_svc(nfsdiropargs *, struct svc_req *); +extern nfsstat *nfsproc_rename_2(nfsrenameargs *, CLIENT *); +extern nfsstat *nfsproc_rename_2_svc(nfsrenameargs *, struct svc_req *); +extern nfsstat *nfsproc_rmdir_2(nfsdiropargs *, CLIENT *); +extern nfsstat *nfsproc_rmdir_2_svc(nfsdiropargs *, struct svc_req *); +extern nfsstat *nfsproc_symlink_2(nfssymlinkargs *, CLIENT *); +extern nfsstat *nfsproc_symlink_2_svc(nfssymlinkargs *, struct svc_req *); +extern nfsreaddirres *nfsproc_readdir_2(nfsreaddirargs *, CLIENT *); +extern nfsreaddirres *nfsproc_readdir_2_svc(nfsreaddirargs *, struct svc_req *); +extern nfsreadlinkres *nfsproc_readlink_2(nfs_fh *, CLIENT *); +extern nfsreadlinkres *nfsproc_readlink_2_svc(nfs_fh *, struct svc_req *); +extern nfsreadres *nfsproc_read_2(nfsreadargs *, CLIENT *); +extern nfsreadres *nfsproc_read_2_svc(nfsreadargs *, struct svc_req *); +extern nfsstatfsres *nfsproc_statfs_2(nfs_fh *, CLIENT *); +extern nfsstatfsres *nfsproc_statfs_2_svc(nfs_fh *, struct svc_req *); +extern void *nfsproc_null_2(void *, CLIENT *); +extern void *nfsproc_null_2_svc(void *, struct svc_req *); +extern void *nfsproc_root_2(void *, CLIENT *); +extern void *nfsproc_root_2_svc(void *, struct svc_req *); +extern void *nfsproc_writecache_2(void *, CLIENT *); +extern void *nfsproc_writecache_2_svc(void *, struct svc_req *); +extern int nfs_program_2_freeresult(SVCXPRT *, xdrproc_t, caddr_t); + + +/* + * ENUMS: + */ + + +/* + * STRUCTURES: + */ + +struct nfs_fh { + char fh_data[NFS_FHSIZE]; +}; + +struct nfstime { + u_int nt_seconds; + u_int nt_useconds; +}; + +struct fattr { + nfsftype na_type; + u_int na_mode; + u_int na_nlink; + u_int na_uid; + u_int na_gid; + u_int na_size; + u_int na_blocksize; + u_int na_rdev; + u_int na_blocks; + u_int na_fsid; + u_int na_fileid; + nfstime na_atime; + nfstime na_mtime; + nfstime na_ctime; +}; + +struct sattr { + u_int sa_mode; + u_int sa_uid; + u_int sa_gid; + u_int sa_size; + nfstime sa_atime; + nfstime sa_mtime; +}; + +struct attrstat { + nfsstat ns_status; + union { + nfsfattr ns_attr_u; + } ns_u; +}; + +struct sattrargs { + nfs_fh sag_fhandle; + nfssattr sag_attributes; +}; + +struct diropargs { + nfs_fh da_fhandle; /* was dir */ + filename da_name; +}; + +struct diropokres { + nfs_fh drok_fhandle; + nfsfattr drok_attributes; +}; + +struct diropres { + nfsstat dr_status; /* was status */ + union { + nfsdiropokres dr_drok_u; /* was diropres */ + } dr_u; /* was diropres_u */ +}; + +struct readlinkres { + nfsstat rlr_status; + union { + nfspath rlr_data_u; + } rlr_u; +}; + +struct readargs { + nfs_fh ra_fhandle; + u_int ra_offset; + u_int ra_count; + u_int ra_totalcount; +}; + +struct readokres { + nfsfattr raok_attributes; + struct { + u_int raok_len_u; + char *raok_val_u; + } raok_u; +}; + +struct readres { + nfsstat rr_status; + union { + nfsreadokres rr_reply_u; + } rr_u; +}; + +struct writeargs { + nfs_fh wra_fhandle; + u_int wra_beginoffset; + u_int wra_offset; + u_int wra_totalcount; + struct { + u_int wra_len_u; + char *wra_val_u; + } wra_u; +}; + +struct createargs { + nfsdiropargs ca_where; + nfssattr ca_attributes; +}; + +struct renameargs { + nfsdiropargs rna_from; + nfsdiropargs rna_to; +}; + +struct linkargs { + nfs_fh la_fhandle; + nfsdiropargs la_to; +}; + +struct symlinkargs { + nfsdiropargs sla_from; + nfspath sla_to; + nfssattr sla_attributes; +}; + +struct readdirargs { + nfs_fh rda_fhandle; + nfscookie rda_cookie; + u_int rda_count; +}; + +struct entry { + u_int ne_fileid; + filename ne_name; + nfscookie ne_cookie; + nfsentry *ne_nextentry; +}; + +struct dirlist { + nfsentry *dl_entries; + bool_t dl_eof; +}; + +struct readdirres { + nfsstat rdr_status; + union { + nfsdirlist rdr_reply_u; + } rdr_u; +}; + +struct statfsokres { + u_int sfrok_tsize; + u_int sfrok_bsize; + u_int sfrok_blocks; + u_int sfrok_bfree; + u_int sfrok_bavail; +}; + +struct statfsres { + nfsstat sfr_status; + union { + nfsstatfsokres sfr_reply_u; + } sfr_u; +}; + +#endif /* not _AMU_NFS_PROT_H */ diff --git a/contrib/amd/conf/transp/transp_sockets.c b/contrib/amd/conf/transp/transp_sockets.c index 66b818a..5ccd8c2 100644 --- a/contrib/amd/conf/transp/transp_sockets.c +++ b/contrib/amd/conf/transp/transp_sockets.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997-2001 Erez Zadok + * Copyright (c) 1997-2003 Erez Zadok * Copyright (c) 1990 Jan-Simon Pendry * Copyright (c) 1990 Imperial College of Science, Technology & Medicine * Copyright (c) 1990 The Regents of the University of California. @@ -38,7 +38,7 @@ * * %W% (Berkeley) %G% * - * $Id: transp_sockets.c,v 1.6.2.5 2001/06/08 18:50:40 ezk Exp $ + * $Id: transp_sockets.c,v 1.6.2.10 2003/04/23 14:27:34 ezk Exp $ * * Socket specific utilities. * -Erez Zadok @@ -50,9 +50,6 @@ #include #include -#ifndef RPC_MAXDATASIZE -#define RPC_MAXDATASIZE 9000 -#endif /* * find the IP address that can be used to connect to the local host @@ -219,8 +216,6 @@ create_nfs_service(int *soNFSp, u_short *nfs_portp, SVCXPRT **nfs_xprtp, void (* int create_amq_service(int *udp_soAMQp, SVCXPRT **udp_amqpp, int *tcp_soAMQp, SVCXPRT **tcp_amqpp) { - int maxrec = RPC_MAXDATASIZE; - /* first create TCP service */ if (tcp_soAMQp) { *tcp_soAMQp = socket(AF_INET, SOCK_STREAM, 0); @@ -235,10 +230,22 @@ create_amq_service(int *udp_soAMQp, SVCXPRT **udp_amqpp, int *tcp_soAMQp, SVCXPR plog(XLOG_FATAL, "cannot create tcp service for amq: soAMQp=%d", *tcp_soAMQp); return 2; } - } + #ifdef SVCSET_CONNMAXREC - SVC_CONTROL(*tcp_amqpp, SVCSET_CONNMAXREC, &maxrec); -#endif + /* + * This is *BSD at its best. + * They just had to do things differently than everyone else + * so they fixed a library DoS issue by forcing client-side changes... + */ +# ifndef RPC_MAXDATASIZE +# define RPC_MAXDATASIZE 9000 +# endif /* not RPC_MAXDATASIZE */ + { + int maxrec = RPC_MAXDATASIZE; + SVC_CONTROL(*tcp_amqpp, SVCSET_CONNMAXREC, &maxrec); + } +#endif /* not SVCSET_CONNMAXREC */ + } /* next create UDP service */ if (udp_soAMQp) { @@ -378,19 +385,3 @@ try_again: (int) nfs_version, proto, host); return nfs_version; } - - -/* - * AUTOFS FUNCTIONS FOR SOCKETS: - */ -#ifdef HAVE_FS_AUTOFS -/* - * Create the nfs service for amd - */ -int -create_autofs_service(int *soAUTOFSp, u_short *autofs_portp, SVCXPRT **autofs_xprtp, void (*dispatch_fxn)(struct svc_req *rqstp, SVCXPRT *transp)) -{ - /* NOT IMPLEMENTED! */ - return -1; -} -#endif /* HAVE_FS_AUTOFS */ diff --git a/contrib/amd/conf/umount/umount_bsd44.c b/contrib/amd/conf/umount/umount_bsd44.c index 22b3021..9da517b 100644 --- a/contrib/amd/conf/umount/umount_bsd44.c +++ b/contrib/amd/conf/umount/umount_bsd44.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997-2001 Erez Zadok + * Copyright (c) 1997-2003 Erez Zadok * Copyright (c) 1990 Jan-Simon Pendry * Copyright (c) 1990 Imperial College of Science, Technology & Medicine * Copyright (c) 1990 The Regents of the University of California. @@ -38,7 +38,7 @@ * * %W% (Berkeley) %G% * - * $Id: umount_bsd44.c,v 1.3.2.1 2001/01/10 03:23:28 ezk Exp $ + * $Id: umount_bsd44.c,v 1.3.2.3 2002/12/27 22:45:01 ezk Exp $ * */ -- cgit v1.1