|
DataMuseum.dkPresents historical artifacts from the history of: Regnecentalen RC-900 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Regnecentalen RC-900 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 12073 (0x2f29) Types: TextFile Notes: UNIX file Names: »nfs.h«
└─⟦a6ab2eb36⟧ Bits:30004042/kconfig3.imd SW95705I 386/ix Multi-user Release 1.2 └─⟦a6ab2eb36⟧ UNIX Filesystem └─⟦this⟧ »kc/new/usr/include/sys/fs/nfs/nfs.h«
/* * Copyrighted as an unpublished work. * (c) Copyright 1988 INTERACTIVE Systems Corporation * All rights reserved. * * RESTRICTED RIGHTS * * These programs are supplied under a license. They may be used, * disclosed, and/or copied only as permitted under such license * agreement. Any copy must contain the above copyright notice and * this restricted rights notice. Use, copying, and/or disclosure * of the programs is strictly prohibited unless otherwise provided * in the license agreement. */ #ident "@(#)nfs.h 1.1 - 88/04/26" /* @(#)sufstring 3.3 System V NFS source */ /* @(#)nfs.h 1.4 12/29/87 3.3 System V NFS source */ /* @(#)nfs.h 3.1 LAI System V NFS Release 3.0/V3 source */ /* @(#)nfs.h 2.20 85/08/29 SMI */ /* Maximum size of data portion of a remote request */ #define NFS_MAXDATA 8192 #define NFS_MAXNAMLEN 255 #define NFS_MAXPATHLEN 1024 /* * Protocol name length */ #define PROTONAMESZ 32 /* * Hostname name length */ #define HOSTNAMESZ 32 /* * Rpc retransmission parameters */ #define NFS_TIMEO 7 /* initial timeout in tenths of a sec. */ #define NFS_RETRIES 4 /* times to retry request */ /* * maximum transfer size for different interfaces */ #define ECTSIZE 4096 #define IETSIZE 8192 /* * 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_OPNOTSUPP=45, /* Operation not supported */ NFSERR_NOBUFS=55, /* No buffer space available */ NFSERR_NAMETOOLONG=63, /* File name too long */ NFSERR_NOTEMPTY=66, /* Directory not empty */ NFSERR_DQUOT=69, /* Disc quota exceeded */ NFSERR_STALE=70, /* Stale NFS file handle */ NFSERR_REMOTE=71, /* Too many levels of remote in path */ NFSERR_WFLUSH /* write cache flushed */ }; extern enum nfsstat puterrno(); extern int geterrno(); /* * File types */ enum nfsftype { NFNON, NFREG, /* regular file */ NFDIR, /* directory */ NFBLK, /* block special */ NFCHR, /* character special */ NFLNK /* symbolic link */ }; /* * 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 struct { dev_t fh_fsid; /* filesystem id */ ulong fh_fno; /* file number */ ulong fh_fgen; /* file generation */ char fh_pad[NFS_FHSIZE - 12]; /* Pad to NFS_FHSIZE on 3B2 */ } fhandle_t; /* * Arguments to remote write and writecache */ struct nfswriteargs { fhandle_t wa_fhandle; /* handle for file */ ulong wa_begoff; /* beginning byte offset in file */ ulong wa_offset; /* current byte offset in file */ ulong wa_totcount; /* total write count (to this offset)*/ ulong wa_count; /* size of this write */ char *wa_data; /* data to write (up to NFS_MAXDATA) */ }; /* * File attributes */ struct nfsfattr { enum nfsftype na_type; /* file type */ ulong na_mode; /* protection mode bits */ ulong na_nlink; /* # hard links */ ulong na_uid; /* owner user id */ ulong na_gid; /* owner group id */ ulong na_size; /* file size in bytes */ ulong na_blocksize; /* prefered block size */ ulong na_rdev; /* special device # */ ulong na_blocks; /* Kb of disk used by file */ ulong na_fsid; /* device # */ ulong 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 */ ulong ra_offset; /* byte offset in file */ ulong ra_count; /* immediate read count */ ulong 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*/ ulong rrok_count; /* bytes of data */ char *rrok_data; /* data (up to NFS_MAXDATA bytes) */ }; /* * Reply from remote read * */ struct nfsrdresult { enum nfsstat rr_status; /* status of read */ 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 /* * File attributes which can be set */ struct nfssattr { ulong sa_mode; /* protection mode bits */ ulong sa_uid; /* owner user id */ ulong sa_gid; /* owner group id */ ulong 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 { ulong 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 */ ulong rda_offset; /* offset in directory (opaque) */ ulong rda_count; /* number of directory bytes to read */ }; /* readdir result * Notice that this structure differs from the similar Sun structure. * The xdr function converts between this structure and the wire. * (The difference is in the shape of the individual entries.) */ struct nfsrdok { ulong rdok_offset; /* next offset (opaque) */ ulong rdok_size; /* size in bytes of entries */ bool_t rdok_eof; /* true if last entry is in result*/ struct dirent *rdok_entries; /* variable number of entries */ }; /* * Readdir result */ struct nfsrddirres { ulong rd_bufsize; /* size of client request (not xdr'ed)*/ 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 { ulong fsok_tsize; /* preferred transfer size in bytes */ ulong fsok_bsize; /* fundamental file system block size */ ulong fsok_blocks; /* total blocks in file system */ ulong fsok_bfree; /* free blocks in fs */ ulong 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 #define fs_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 ((ulong)100003) #define NFS_VERSION ((ulong)2) #define NFS_PORT 2049 /* * NETBUF-related information * * The NETBUF structure is based on the netbuf structure from * sys/tiuser.h * */ typedef struct netbuf_str { int maxlen; /* length of buffer */ int len; /* amount of address currently used */ caddr_t buf; /* actual address information */ } NETBUF; /* * Declare the PROTO structure * */ struct proto_str { uint pr_flag; /* flag to indicate whether the * union contains a dev_t or an fp. * the TP_OPENFP flag is set (meaning * to use the open stream rather than * opening a new stream). */ union { dev_t pr_dev; /* major/minor of the STREAMS device * (only when in client mode). */ struct file *pr_fp; /* file pointer associated with * that stream when in server * mode. */ } pr_un; int pr_index; /* index into the \fIrpcproto_sw\fP * table for the current protocol * in use. */ long pr_maxaddr; /* maximum address size (in bytes) */ long pr_maxpacket; /* maximum packet size (in bytes) */ }; typedef struct proto_str PROTO;