163 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			163 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*	$NetBSD: nfsv2.h,v 1.4 2005/12/11 12:24:46 christos Exp $	*/
 | 
						|
 | 
						|
/*
 | 
						|
 * Copyright (c) 1989, 1993
 | 
						|
 *	The Regents of the University of California.  All rights reserved.
 | 
						|
 *
 | 
						|
 * This code is derived from software contributed to Berkeley by
 | 
						|
 * Rick Macklem at The University of Guelph.
 | 
						|
 *
 | 
						|
 * Redistribution and use in source and binary forms, with or without
 | 
						|
 * modification, are permitted provided that the following conditions
 | 
						|
 * are met:
 | 
						|
 * 1. Redistributions of source code must retain the above copyright
 | 
						|
 *    notice, this list of conditions and the following disclaimer.
 | 
						|
 * 2. Redistributions in binary form must reproduce the above copyright
 | 
						|
 *    notice, this list of conditions and the following disclaimer in the
 | 
						|
 *    documentation and/or other materials provided with the distribution.
 | 
						|
 * 3. Neither the name of the University nor the names of its contributors
 | 
						|
 *    may be used to endorse or promote products derived from this software
 | 
						|
 *    without specific prior written permission.
 | 
						|
 *
 | 
						|
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 | 
						|
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
						|
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
						|
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 | 
						|
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
						|
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
						|
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
						|
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
						|
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
						|
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
						|
 * SUCH DAMAGE.
 | 
						|
 *
 | 
						|
 *	@(#)nfsv2.h	8.1 (Berkeley) 6/10/93
 | 
						|
 */
 | 
						|
 | 
						|
/*
 | 
						|
 * nfs definitions as per the version 2 specs
 | 
						|
 */
 | 
						|
 | 
						|
/*
 | 
						|
 * Constants as defined in the Sun NFS Version 2 spec.
 | 
						|
 * "NFS: Network File System Protocol Specification" RFC1094
 | 
						|
 */
 | 
						|
 | 
						|
#define NFS_PORT	2049
 | 
						|
#define	NFS_PROG	100003
 | 
						|
#define NFS_VER2	2
 | 
						|
#define	NFS_MAXDGRAMDATA 8192
 | 
						|
#define	NFS_MAXDATA	32768
 | 
						|
#define	NFS_MAXPATHLEN	1024
 | 
						|
#define	NFS_MAXNAMLEN	255
 | 
						|
#define	NFS_FHSIZE	32
 | 
						|
#define	NFS_MAXPKTHDR	404
 | 
						|
#define NFS_MAXPACKET	(NFS_MAXPKTHDR+NFS_MAXDATA)
 | 
						|
#define	NFS_MINPACKET	20
 | 
						|
#define	NFS_FABLKSIZE	512	/* Size in bytes of a block wrt fa_blocks */
 | 
						|
 | 
						|
/* Stat numbers for rpc returns */
 | 
						|
#define	NFS_OK		0
 | 
						|
#define	NFSERR_PERM	1
 | 
						|
#define	NFSERR_NOENT	2
 | 
						|
#define	NFSERR_IO	5
 | 
						|
#define	NFSERR_NXIO	6
 | 
						|
#define	NFSERR_ACCES	13
 | 
						|
#define	NFSERR_EXIST	17
 | 
						|
#define	NFSERR_NODEV	19
 | 
						|
#define	NFSERR_NOTDIR	20
 | 
						|
#define	NFSERR_ISDIR	21
 | 
						|
#define	NFSERR_FBIG	27
 | 
						|
#define	NFSERR_NOSPC	28
 | 
						|
#define	NFSERR_ROFS	30
 | 
						|
#define	NFSERR_NAMETOL	63
 | 
						|
#define	NFSERR_NOTEMPTY	66
 | 
						|
#define	NFSERR_DQUOT	69
 | 
						|
#define	NFSERR_STALE	70
 | 
						|
#define	NFSERR_WFLUSH	99
 | 
						|
 | 
						|
/* Sizes in bytes of various nfs rpc components */
 | 
						|
#define	NFSX_FH		32
 | 
						|
#define	NFSX_UNSIGNED	4
 | 
						|
#define	NFSX_FATTR	68
 | 
						|
#define	NFSX_SATTR	32
 | 
						|
#define NFSX_STATFS	20
 | 
						|
#define	NFSX_COOKIE	4
 | 
						|
 | 
						|
/* nfs rpc procedure numbers */
 | 
						|
#define	NFSPROC_NULL		0
 | 
						|
#define	NFSPROC_GETATTR		1
 | 
						|
#define	NFSPROC_SETATTR		2
 | 
						|
#define	NFSPROC_NOOP		3
 | 
						|
#define	NFSPROC_ROOT		NFSPROC_NOOP	/* Obsolete */
 | 
						|
#define	NFSPROC_LOOKUP		4
 | 
						|
#define	NFSPROC_READLINK	5
 | 
						|
#define	NFSPROC_READ		6
 | 
						|
#define	NFSPROC_WRITECACHE	NFSPROC_NOOP	/* Obsolete */
 | 
						|
#define	NFSPROC_WRITE		8
 | 
						|
#define	NFSPROC_CREATE		9
 | 
						|
#define	NFSPROC_REMOVE		10
 | 
						|
#define	NFSPROC_RENAME		11
 | 
						|
#define	NFSPROC_LINK		12
 | 
						|
#define	NFSPROC_SYMLINK		13
 | 
						|
#define	NFSPROC_MKDIR		14
 | 
						|
#define	NFSPROC_RMDIR		15
 | 
						|
#define	NFSPROC_READDIR		16
 | 
						|
#define	NFSPROC_STATFS		17
 | 
						|
 | 
						|
#define	NFS_NPROCS		18
 | 
						|
 | 
						|
 | 
						|
/* File types */
 | 
						|
typedef enum {
 | 
						|
	NFNON=0,
 | 
						|
	NFREG=1,
 | 
						|
	NFDIR=2,
 | 
						|
	NFBLK=3,
 | 
						|
	NFCHR=4,
 | 
						|
	NFLNK=5
 | 
						|
} nfstype;
 | 
						|
 | 
						|
/* Structs for common parts of the rpc's */
 | 
						|
struct nfsv2_time {
 | 
						|
	n_long	nfs_sec;
 | 
						|
	n_long	nfs_usec;
 | 
						|
};
 | 
						|
 | 
						|
/*
 | 
						|
 * File attributes and setable attributes.
 | 
						|
 */
 | 
						|
struct nfsv2_fattr {
 | 
						|
	n_long	fa_type;
 | 
						|
	n_long	fa_mode;
 | 
						|
	n_long	fa_nlink;
 | 
						|
	n_long	fa_uid;
 | 
						|
	n_long	fa_gid;
 | 
						|
	n_long	fa_size;
 | 
						|
	n_long	fa_blocksize;
 | 
						|
	n_long	fa_rdev;
 | 
						|
	n_long	fa_blocks;
 | 
						|
	n_long	fa_fsid;
 | 
						|
	n_long	fa_fileid;
 | 
						|
	struct nfsv2_time fa_atime;
 | 
						|
	struct nfsv2_time fa_mtime;
 | 
						|
	struct nfsv2_time fa_ctime;
 | 
						|
};
 | 
						|
 | 
						|
struct nfsv2_sattr {
 | 
						|
	n_long	sa_mode;
 | 
						|
	n_long	sa_uid;
 | 
						|
	n_long	sa_gid;
 | 
						|
	n_long	sa_size;
 | 
						|
	struct nfsv2_time sa_atime;
 | 
						|
	struct nfsv2_time sa_mtime;
 | 
						|
};
 | 
						|
 | 
						|
struct nfsv2_statfs {
 | 
						|
	n_long	sf_tsize;
 | 
						|
	n_long	sf_bsize;
 | 
						|
	n_long	sf_blocks;
 | 
						|
	n_long	sf_bfree;
 | 
						|
	n_long	sf_bavail;
 | 
						|
};
 |