⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nfs.h

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 H
字号:
/*	@(#)nfs.h	4.3	(ULTRIX)	2/28/91	*//************************************************************************ *									* *			Copyright (c) 1986 by				* *		Digital Equipment Corporation, Maynard, MA		* *			All rights reserved.				* *									* *   This software is furnished under a license and may be used and	* *   copied  only  in accordance with the terms of such license and	* *   with the  inclusion  of  the  above  copyright  notice.   This	* *   software  or  any  other copies thereof may not be provided or	* *   otherwise made available to any other person.  No title to and	* *   ownership of the software is hereby transferred.			* *									* *   This software is  derived  from  software  received  from  the	* *   University    of   California,   Berkeley,   and   from   Bell	* *   Laboratories.  Use, duplication, or disclosure is  subject  to	* *   restrictions  under  license  agreements  with  University  of	* *   California and with AT&T.						* *									* *   The information in this software is subject to change  without	* *   notice  and should not be construed as a commitment by Digital	* *   Equipment Corporation.						* *									* *   Digital assumes no responsibility for the use  or  reliability	* *   of its software on equipment which is not supplied by Digital.	* *									* ************************************************************************//* *	Portions of this software have been licensed to  *	Digital Equipment Company, Maynard, MA. *	Copyright (c) 1986 Sun Microsystems, Inc.  ALL RIGHTS RESERVED. *//* * *   Modification history: * * 28-Feb-91 -- dws *	Cleaned up fhandle_t definition * * 02-Mar-87 -- logcher *	Merged in diskless changes */#ifdef KERNEL#include "../h/ansi_compat.h"#else#include <ansi_compat.h>#endif/* Maximum size of data portion of a remote request */#define	NFS_MAXDATA	8192#define	NFS_MAXNAMLEN	255#define	NFS_MAXPATHLEN	1024/*/* * Rpc retransmission parameters */#define	NFS_TIMEO	11	/* initial timeout in tenths of a sec. */#define	NFS_RETRIES	4	/* times to retry request *//* * Error status * Should include all possible net errors. * For now we just cast errno into an enum nfsstat. */enum nfsstat {	NFS_OK = 0,			/* no error */	NFSERR_PERM=EPERM,		/* Not owner */	NFSERR_NOENT=ENOENT,		/* No such file or directory */	NFSERR_IO=EIO,			/* I/O error */	NFSERR_NXIO=ENXIO,		/* No such device or address */	NFSERR_ACCES=EACCES,		/* Permission denied */	NFSERR_EXIST=EEXIST,		/* File exists */	NFSERR_NODEV=ENODEV,		/* No such device */	NFSERR_NOTDIR=ENOTDIR,		/* Not a directory*/	NFSERR_ISDIR=EISDIR,		/* Is a directory */	NFSERR_FBIG=EFBIG,		/* File too large */	NFSERR_NOSPC=ENOSPC,		/* No space left on device */	NFSERR_ROFS=EROFS,		/* Read-only file system */	NFSERR_NAMETOOLONG=ENAMETOOLONG,/* File name too long */	NFSERR_NOTEMPTY=ENOTEMPTY,	/* Directory not empty */	NFSERR_DQUOT=EDQUOT,		/* Disc quota exceeded */	NFSERR_STALE=ESTALE,		/* Stale NFS file handle */	NFSERR_WFLUSH			/* write cache flushed */};#define	puterrno(error)		((enum nfsstat)error)#define	geterrno(status)	((int)status)/* * File types */enum nfsftype {	NFNON,	NFREG,		/* regular file */	NFDIR,		/* directory */	NFBLK,		/* block special */	NFCHR,		/* character special */	NFLNK		/* symbolic link */};/* * Special kludge for fifos (named pipes)  [to adhere to NFS Protocol Spec] * * VFIFO is not in the protocol spec (VNON will be replaced by VFIFO) * so the over-the-wire representation is VCHR with a '-1' device number. * * NOTE: This kludge becomes unnecessary with the Protocol Revision, *       but it may be necessary to support it (backwards compatibility). */#define NFS_FIFO_TYPE   NFCHR#define NFS_FIFO_MODE   S_IFCHR#define NFS_FIFO_DEV    (~0)/* * Size of an fhandle in bytes */#define	NFS_FHSIZE	32/* * File access handle * This structure is supposed to be opaque from the client side. * It is handed out by a server for the client to use in further * file transactions. */typedef union {		struct svcfh {			dev_t	fsid;		/* filesystem id */			u_long	fno;		/* file number */			u_long	fgen;		/* file generation */		/* export granting directory */			u_long	eno;		/* file number */			u_long	egen;		/* file generation */		} svcfh;		/* fhandle must be NFS_FHSIZE bytes in length */		char	fh_pad[NFS_FHSIZE];} fhandle_t;#ifdef NFSSERVER#define fh_fsid		svcfh.fsid#define fh_fno		svcfh.fno#define fh_fgen		svcfh.fgen#define fh_eno		svcfh.eno#define fh_egen		svcfh.egen#endif/* * Arguments to remote write and writecache */struct nfswriteargs {	fhandle_t	wa_fhandle;	/* handle for file */	u_long		wa_begoff;	/* beginning byte offset in file */	u_long		wa_offset;      /* current byte offset in file */	u_long		wa_totcount;    /* total write count (to this offset)*/	u_long		wa_count;	/* size of this write */	char		*wa_data;	/* data to write (up to NFS_MAXDATA) */};struct exportdata {	int x_flags;	int x_rootmap;};struct export {	int	e_flags;	dev_t	e_fsid;	u_long	e_gnum;	u_long	e_gen;	short	e_rootmap;	int	e_pathlen;	char	*e_path;	struct export	*e_next;};/* * File attributes */struct nfsfattr {	enum nfsftype	na_type;	/* file type */	u_long		na_mode;	/* protection mode bits */	u_long		na_nlink;	/* # hard links */	u_long		na_uid;		/* owner user id */	u_long		na_gid;		/* owner group id */	u_long		na_size;	/* file size in bytes */	u_long		na_blocksize;	/* prefered block size */	u_long		na_rdev;	/* special device # */	u_long		na_blocks;	/* Kb of disk used by file */	u_long		na_fsid;	/* device # */	u_long		na_nodeid;	/* inode # */	struct timeval	na_atime;	/* time of last access */	struct timeval	na_mtime;	/* time of last modification */	struct timeval	na_ctime;	/* time of last change */};/* * Arguments to remote read */struct nfsreadargs {	fhandle_t	ra_fhandle;	/* handle for file */	u_long		ra_offset;	/* byte offset in file */	u_long		ra_count;	/* immediate read count */	u_long		ra_totcount;	/* total read count (from this offset)*/};/* * Status OK portion of remote read reply */struct nfsrrok {	struct nfsfattr	rrok_attr;	/* attributes, need for pagin*/	u_long		rrok_count;	/* bytes of data */	char		*rrok_data;	/* data (up to NFS_MAXDATA bytes) */	struct buf	*rrok_bp;	/* buffer pointer for bread */	struct vnode	*rrok_vp;	/* vnode assoc. with buffer */};/* * Reply from remote read */struct nfsrdresult {	enum nfsstat	rr_status;		/* status of read */	u_long		rr_bufallocsize;	/* size of reponse buffer needed to free */	char 		*rr_bufallocaddr; 	/* where the buffer has been allocated */	union {		struct nfsrrok	rr_ok_u;	/* attributes, need for pagin*/	} rr_u;};#define	rr_ok		rr_u.rr_ok_u#define	rr_attr		rr_u.rr_ok_u.rrok_attr#define	rr_count	rr_u.rr_ok_u.rrok_count#define	rr_data		rr_u.rr_ok_u.rrok_data#define rr_bp		rr_u.rr_ok_u.rrok_bp#define rr_vp		rr_u.rr_ok_u.rrok_vp/* * File attributes which can be set */struct nfssattr {	u_long		sa_mode;	/* protection mode bits */	u_long		sa_uid;		/* owner user id */	u_long		sa_gid;		/* owner group id */	u_long		sa_size;	/* file size in bytes */	struct timeval	sa_atime;	/* time of last access */	struct timeval	sa_mtime;	/* time of last modification */};/* * Reply status with file attributes */struct nfsattrstat {	enum nfsstat	ns_status;		/* reply status */	union {		struct nfsfattr ns_attr_u;	/* NFS_OK: file attributes */	} ns_u;};#define	ns_attr	ns_u.ns_attr_u/* * NFS_OK part of read sym link reply union */struct nfssrok {	u_long	srok_count;	/* size of string */	char	*srok_data;	/* string (up to NFS_MAXPATHLEN bytes) */};/* * Result of reading symbolic link */struct nfsrdlnres {	enum nfsstat	rl_status;		/* status of symlink read */	union {		struct nfssrok	rl_srok_u;	/* name of linked to */	} rl_u;};#define	rl_srok		rl_u.rl_srok_u#define	rl_count	rl_u.rl_srok_u.srok_count#define	rl_data		rl_u.rl_srok_u.srok_data/* * Arguments to readdir */struct nfsrddirargs {	fhandle_t rda_fh;	/* directory handle */	u_long rda_offset;	/* offset in directory (opaque) */	u_long rda_count;	/* number of directory bytes to read */};/* * NFS_OK part of readdir result */struct nfsrdok {	u_long	rdok_offset;		/* next offset (opaque) */	u_long	rdok_size;		/* size in bytes of entries */	bool_t	rdok_eof;		/* true if last entry is in result*/	struct direct *rdok_entries;	/* variable number of entries */};/* * Readdir result */struct nfsrddirres {	u_long		rd_bufsize;	/* size of client request (not xdr'ed)*/	u_long		rd_bufallocsize;/* size of reponse buffer needed to free */	char		*rd_bufallocaddr;/* where the buffer has been allocated */	enum nfsstat	rd_status;	union {		struct nfsrdok rd_rdok_u;	} rd_u;};#define	rd_rdok		rd_u.rd_rdok_u#define	rd_offset	rd_u.rd_rdok_u.rdok_offset#define	rd_size		rd_u.rd_rdok_u.rdok_size#define	rd_eof		rd_u.rd_rdok_u.rdok_eof#define	rd_entries	rd_u.rd_rdok_u.rdok_entries/* * Arguments for directory operations */struct nfsdiropargs {	fhandle_t	da_fhandle;	/* directory file handle */	char		*da_name;	/* name (up to NFS_MAXNAMLEN bytes) */};/* * NFS_OK part of directory operation result */struct  nfsdrok {	fhandle_t	drok_fhandle;	/* result file handle */	struct nfsfattr	drok_attr;	/* result file attributes */};/* * Results from directory operation  */struct  nfsdiropres {	enum nfsstat	dr_status;	/* result status */	union {		struct  nfsdrok	dr_drok_u;	/* NFS_OK result */	} dr_u;};#define	dr_drok		dr_u.dr_drok_u#define	dr_fhandle	dr_u.dr_drok_u.drok_fhandle#define	dr_attr		dr_u.dr_drok_u.drok_attr/* * arguments to setattr */struct nfssaargs {	fhandle_t	saa_fh;		/* fhandle of file to be set */	struct nfssattr	saa_sa;		/* new attributes */};/* * arguments to create and mkdir */struct nfscreatargs {	struct nfsdiropargs	ca_da;	/* file name to create and parent dir */	struct nfssattr		ca_sa;	/* initial attributes */};/* * arguments to link */struct nfslinkargs {	fhandle_t		la_from;	/* old file */	struct nfsdiropargs	la_to;		/* new file and parent dir */};/* * arguments to rename */struct nfsrnmargs {	struct nfsdiropargs rna_from;	/* old file and parent dir */	struct nfsdiropargs rna_to;	/* new file and parent dir */};/* * arguments to symlink */struct nfsslargs {	struct nfsdiropargs	sla_from;	/* old file and parent dir */	char			*sla_tnm;	/* new name */	struct nfssattr		sla_sa;		/* attributes */};/* * NFS_OK part of statfs operation */struct nfsstatfsok {	u_long fsok_tsize;	/* preferred transfer size in bytes */	u_long fsok_bsize;	/* fundamental file system block size */	u_long fsok_blocks;	/* total blocks in file system */	u_long fsok_bfree;	/* free blocks in fs */	u_long fsok_bavail;	/* free blocks avail to non-superuser */};/* * Results of statfs operation */struct nfsstatfs {	enum nfsstat	fs_status;	/* result status */	union {		struct	nfsstatfsok fs_fsok_u;	/* NFS_OK result */	} fs_u;};#define	fs_fsok		fs_u.fs_fsok_u#define	fs_tsize	fs_u.fs_fsok_u.fsok_tsize/* Sun's multiple use of fs_bsize has caused problems. */ #define fsstat_bsize	fs_u.fs_fsok_u.fsok_bsize#define	fs_blocks	fs_u.fs_fsok_u.fsok_blocks#define	fs_bfree	fs_u.fs_fsok_u.fsok_bfree#define	fs_bavail	fs_u.fs_fsok_u.fsok_bavail/* * XDR routines for handling structures defined above */bool_t xdr_attrstat();bool_t xdr_creatargs();bool_t xdr_diropargs();bool_t xdr_diropres();bool_t xdr_drok();bool_t xdr_fattr();bool_t xdr_fhandle();bool_t xdr_linkargs();bool_t xdr_rddirargs();bool_t xdr_putrddirres();bool_t xdr_getrddirres();bool_t xdr_rdlnres();bool_t xdr_rdresult();bool_t xdr_readargs();bool_t xdr_rnmargs();bool_t xdr_rrok();bool_t xdr_saargs();bool_t xdr_sattr();bool_t xdr_slargs();bool_t xdr_srok();bool_t xdr_timeval();bool_t xdr_writeargs();bool_t xdr_statfs();/* * Remote file service routines */#define	RFS_NULL	0#define	RFS_GETATTR	1#define	RFS_SETATTR	2#define	RFS_ROOT	3#define	RFS_LOOKUP	4#define	RFS_READLINK	5#define	RFS_READ	6#define	RFS_WRITECACHE	7#define	RFS_WRITE	8#define	RFS_CREATE	9#define	RFS_REMOVE	10#define	RFS_RENAME	11#define	RFS_LINK	12#define	RFS_SYMLINK	13#define	RFS_MKDIR	14#define	RFS_RMDIR	15#define	RFS_READDIR	16#define	RFS_STATFS	17#define	RFS_NPROC	18/* * remote file service numbers */#define	NFS_PROGRAM	((u_long)100003)#define	NFS_VERSION	((u_long)2)#define	NFS_PORT	2049

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -