1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
|
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
/*
* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T
* All Rights Reserved
*/
#ifndef _NFS_MOUNT_H
#define _NFS_MOUNT_H
#ifdef __cplusplus
extern "C" {
#endif
#include <sys/pathconf.h> /* static pathconf kludge */
#define NFS_ARGS_EXTA 1
#define NFS_ARGS_EXTB 2
/*
* extension data for nfs_args_ext == NFS_ARGS_EXTA.
*/
struct nfs_args_extA {
struct sec_data *secdata; /* security data */
};
/*
* extension data for nfs_args_ext == NFS_ARGS_EXTB.
*/
struct nfs_args_extB {
struct sec_data *secdata; /* security data */
struct nfs_args *next; /* link for failover */
};
/*
* Union structure for future extension.
*/
union nfs_ext {
struct nfs_args_extA nfs_extA; /* nfs_args extension v1 */
struct nfs_args_extB nfs_extB; /* nfs_args extension v2 */
};
struct nfs_args {
struct netbuf *addr; /* file server address */
struct netbuf *syncaddr; /* secure NFS time sync addr */
struct knetconfig *knconf; /* transport netconfig struct */
char *hostname; /* server's hostname */
char *netname; /* server's netname */
caddr_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 */
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 */
struct pathcnf *pathconf; /* static pathconf kludge */
int nfs_args_ext; /* the nfs_args extension id */
union nfs_ext nfs_ext_u; /* extension union structure */
};
#ifdef _SYSCALL32
struct nfs_args_extA32 {
caddr32_t secdata; /* security data */
};
struct nfs_args_extB32 {
caddr32_t secdata; /* security data */
caddr32_t next; /* link for failover */
};
union nfs_ext32 {
struct nfs_args_extA32 nfs_extA; /* nfs_args extension v1 */
struct nfs_args_extB32 nfs_extB; /* nfs_args extension v2 */
};
struct nfs_args32 {
caddr32_t addr; /* file server address */
caddr32_t syncaddr; /* secure NFS time sync addr */
caddr32_t knconf; /* transport netconfig struct */
caddr32_t hostname; /* server's hostname */
caddr32_t netname; /* server's netname */
caddr32_t fh; /* File handle to be mounted */
int32_t flags; /* flags */
int32_t wsize; /* write size in bytes */
int32_t rsize; /* read size in bytes */
int32_t timeo; /* initial timeout in .1 secs */
int32_t retrans; /* times to retry send */
int32_t acregmin; /* attr cache file min secs */
int32_t acregmax; /* attr cache file max secs */
int32_t acdirmin; /* attr cache dir min secs */
int32_t acdirmax; /* attr cache dir max secs */
caddr32_t pathconf; /* static pathconf kludge */
int32_t nfs_args_ext; /* the nfs_args extension id */
union nfs_ext32 nfs_ext_u; /* extension union structure */
};
#endif /* _SYSCALL32 */
/*
* NFS mount option flags
*/
#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_LOOPBACK 0x100000 /* Is a loopback mount */
#define NFSMNT_SEMISOFT 0x200000 /* read soft, modify hard */
#define NFSMNT_NOPRINT 0x400000 /* don't print messages */
#define NFSMNT_NEWARGS 0x800000 /* using nfs_args extented structure */
#define NFSMNT_DIRECTIO 0x1000000 /* do direct I/O */
#define NFSMNT_PUBLIC 0x2000000 /* mount was done with url/public */
#define NFSMNT_SECDEFAULT 0x4000000 /* mount using default sec flavor */
#define NFSMNT_TRYRDMA 0x8000000 /* Try RDMA mount,no proto advised */
#define NFSMNT_DORDMA 0x10000000 /* Do an RDMA mount, regardless */
#define NFSMNT_MIRRORMOUNT 0x20000000 /* Is a mirrormount */
#define NFSMNT_REFERRAL 0x40000000 /* Is a referral */
#define NFSMNT_EPHEMERAL (NFSMNT_MIRRORMOUNT | NFSMNT_REFERRAL)
#ifdef __cplusplus
}
#endif
#endif /* _NFS_MOUNT_H */
|