/* IBM_PROLOG_BEGIN_TAG                                                   */
/* This is an automatically generated prolog.                             */
/*                                                                        */
/* onc720 src/oncplus/usr/include/rpcsvc/mount.h 1.1.2.1                  */
/*                                                                        */
/* Licensed Materials - Property of IBM                                   */
/*                                                                        */
/* COPYRIGHT International Business Machines Corp. 1988,1993              */
/* All Rights Reserved                                                    */
/*                                                                        */
/* US Government Users Restricted Rights - Use, duplication or            */
/* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.      */
/*                                                                        */
/* IBM_PROLOG_END_TAG                                                     */
/*
 *   COMPONENT_NAME: onchdrs
 *
 *   FUNCTIONS: none
 *
 *   ORIGINS: 24,27
 *
 *
 *   (C) COPYRIGHT International Business Machines Corp. 1988,1993
 *   All Rights Reserved
 *   Licensed Materials - Property of IBM
 *   US Government Users Restricted Rights - Use, duplication or
 *   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
 */


/*
 * Copyright (c) 1988,1990 by Sun Microsystems, Inc.
 */



#ifdef _ONCPLUS 

#include <oncplus/rpcsvc/mount.h>

#else 

#if __cplusplus
struct groups;
#endif

#include <netinet/in.h>  /* for sockaddr_in */
#include <sys/types.h>

#ifndef _H_rpcsvc_mount
#define _H_rpcsvc_mount

#define MOUNTPROG 100005
#define MOUNTPROC_MNT		1
#define MOUNTPROC_DUMP		2
#define MOUNTPROC_UMNT		3
#define MOUNTPROC_UMNTALL	4
#define MOUNTPROC_EXPORT	5
#define MOUNTPROC_EXPORTALL	6
#define MOUNTPROC_PATHCONF	7
#define MOUNTVERS		1
#define MOUNTVERS_POSIX		2
#define MOUNTVERS3              3

#ifndef svc_getcaller
#define svc_getcaller(x) (&(x)->xp_raddr)
#endif


struct mountlist {		/* what is mounted */
	char *ml_name;
	char *ml_path;
	struct mountlist *ml_nxt;
};

struct fhstatus {
	int fhs_status;
	fhandle_t fhs_fh;
};

/*
 * List of exported directories
 * An export entry with ex_groups
 * NULL indicates an entry which is exported to the world.
 */
struct exports {
	dev_t		  ex_dev;	/* dev of directory */
	char		 *ex_name;	/* name of directory */
	struct groups	 *ex_groups;	/* groups allowed to mount this entry */
	struct exports	 *ex_next;
	short		  ex_rootmap;	/* id to map root requests to */
	short		  ex_flags;	/* bits to mask off file mode */
};

struct groups {
	char		*g_name;
	struct groups	*g_next;
};

struct nfs_args {
	struct sockaddr_in	addr;		/* file server address */
    fhandle_t       fh;         /* File handle to be mounted */
    int         flags;      /* flags */
    int         wsize;      /* write size in bytes */
    int         rsize;      /* read size in bytes */
    int         timeo;      /* initial timeout in .1 secs */
    int         retrans;    /* times to retry send */
    char        *hostname;  /* server's hostname */
    int         acregmin;   /* attr cache file min secs */
    int         acregmax;   /* attr cache file max secs */
    int         acdirmin;   /* attr cache dir min secs */
    int         acdirmax;   /* attr cache dir max secs */
    char        *netname;   /* server's netname */
    struct ppathcnf     *pathconf;  /* static pathconf kludge */
    int         biods;      /* biods per mount */
};

/*
 * NFS mount option flags
 */
#define MNTOPT_ACDIRMAX "acdirmax" /* max ac timeout for dirs (sec) */
#define MNTOPT_ACDIRMIN "acdirmin" /* min ac timeout for dirs (sec) */
#define MNTOPT_ACREGMAX "acregmax" /* max ac timeout for reg files (sec) */
#define MNTOPT_ACREGMIN "acregmin" /* min ac timeout for reg files (sec) */
#define MNTOPT_ACTIMEO  "actimeo" /* attr cache timeout (sec) */
#define MNTOPT_BG       "bg" /* mount op in background if 1st attempt fails */
#define MNTOPT_FASTATTR "fastattr" /* no sync_vp in nfs3_getattr */
#define MNTOPT_FG       "fg" /* mount op in fg if 1st attempt fails, default */
#define MNTOPT_GRPID    "grpid" /* SysV-compatible group-id on create */
#define MNTOPT_HARD     "hard"  /* hard mount (default) */
#define MNTOPT_INTR     "intr"  /* allow interrupts on hard mount */
#define MNTOPT_NOAC     "noac"  /* don't cache file attributes */
#define MNTOPT_NOACL	"noacl"  /* don't read acl's from server - default */
#define MNTOPT_ACL	"acl"  /* read acl's from server means we load ksec */
#define MNTOPT_NOAUTO   "noauto"/* hide entry from mount -a */
#define MNTOPT_NOCTO    "nocto" /* no "close to open" attr consistency */
#define MNTOPT_NODEV    "nodev" /*don't allow opening of devices accross mount*/
#define MNTOPT_NOINTR   "nointr" /* don't allow interrupts on hard mounts */
#define MNTOPT_NOQUOTA  "noquota" /* don't check quotas */
#define MNTOPT_NOSUID   "nosuid" /* no set uid allowed */
#define MNTOPT_BSY	"bsy"
#define MNTOPT_PORT     "port"  /* server IP port number */
#define MNTOPT_POSIX    "posix" /* ask for static pathconf values from mountd */
#define MNTOPT_QUOTA    "quota" /* quotas */
#define MNTOPT_RETRANS  "retrans" /* set number of request retries */
#define MNTOPT_RETRYS   "retry" /* # of times mount is attempted, def=10000*/
#define MNTOPT_RMNT     "remount" /* remount to rw if mode ro */
#define MNTOPT_RO       "ro"    /* read only */
#define MNTOPT_RSIZE    "rsize" /* set read size (bytes) */
#define MNTOPT_RW       "rw"    /* read/write */
#define MNTOPT_SECURE   "secure"/* use secure RPC for NFS */
#define MNTOPT_SHORTDEV "shortdev" /* server dev */
#define MNTOPT_SOFT     "soft"  /* soft mount */
#define MNTOPT_TIMEO    "timeo" /* set initial timeout (1/10 sec) */
#define MNTOPT_WSIZE    "wsize" /* set write size (bytes) */
#define MNTOPT_VERS "vers"      /* protocol version number indicator */
#define MNTOPT_LLOCK    "llock"     /* Local locking (no lock manager) */
#define MNTOPT_BIODS    "biods"     /* max biods per mount */
#define MNTOPT_EXTATTR  "extraattr" /* extended attribute usage */
#define MNTOPT_COMBEHND "combehind" /* extended attribute usage */
#define MNTOPT_NODIRCACHE   "nodircache"    /* No readdir cache */

#define NFSMNT_NOACL    0x0     /* turn off acl support (not supported) */
#define NFSMNT_SHORTDEV 0x0     /* server does not support 32-bit device no.
                                   (not supported) */
#define NFSMNT_SOFT	0x001	/* soft mount (hard is default) */
#define NFSMNT_WSIZE	0x002	/* set write size */
#define NFSMNT_RSIZE	0x004	/* set read size */
#define NFSMNT_TIMEO	0x008	/* set initial timeout */
#define NFSMNT_RETRANS	0x010	/* set number of request retrys */
#define NFSMNT_HOSTNAME	0x020	/* set hostname for error printf */
#define NFSMNT_INT	0x040	/* allow interrupts on hard mount */
#define	NFSMNT_NOAC	0x080	/* don't cache attributes */
#define	NFSMNT_ACREGMIN	0x0100	/* set min secs for file attr cache */
#define	NFSMNT_ACREGMAX	0x0200	/* set max secs for file attr cache */
#define	NFSMNT_ACDIRMIN	0x0400	/* set min secs for dir attr cache */
#define	NFSMNT_ACDIRMAX	0x0800	/* set max secs for dir attr cache */
#define NFSMNT_SECURE	0x1000	/* secure mount */
#define NFSMNT_NOCTO	0x2000	/* no close-to-open consistency */
#define NFSMNT_KNCONF       0x4000  /* transport's knetconfig structure */
#define NFSMNT_GRPID        0x8000  /* System V-style gid inheritance */
#define NFSMNT_RPCTIMESYNC  0x10000 /* use RPC to do secure NFS time sync */
#define NFSMNT_KERBEROS     0x20000 /* use kerberos credentials */
#define NFSMNT_POSIX        0x40000 /* static pathconf kludge info */
#define NFSMNT_LLOCK    0x80000 /* Local locking (no lock manager) */
#define NFSMNT_ACL	0x100000	/* turn on acl support */
#define NFSMNT_BIODS        0x200000 /* number of biods per mount */
#define NFSMNT_EXTATTR      0x400000 /* extended attribute usage */
#define NFSMNT_FASTATTR     0x800000 /* no sync_vp in nfs3_getattr */
#define NFSMNT_COMBEHND     0x1000000 /* allow commit behind */
#define NFSMNT_NODIRCACHE   0x4000000 /* No readdir cache */


#define DEF_BIODS       6

#include <rpc/xdr.h>
#if __cplusplus
extern "C" {
#endif
bool_t xdr_fhstatus(XDR *, struct fhstatus *);
#ifndef KERNEL
bool_t xdr_path(XDR *, char **);
bool_t xdr_fhandle(XDR *, fhandle_t *);
bool_t xdr_mountlist(XDR *, struct mountlist **);
bool_t xdr_exports(XDR *, struct exports **);
bool_t xdr_pathcnf(XDR *, struct pathcnf *);
#endif /* ndef KERNEL */
#if __cplusplus
}
#endif

#endif 

#endif /*_H_rpcsvc_mount*/