1 /*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21
22 /*
23 * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
24 * Copyright 2014 Nexenta Systems, Inc. All rights reserved.
25 */
26
27 /*
28 * basic API declarations for share management
29 */
30
31 #ifndef _LIBSHARE_NFS_H
32 #define _LIBSHARE_NFS_H
33
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37
38 /* property names used by NFS */
39 #define SHOPT_RO "ro"
40 #define SHOPT_RW "rw"
41 #define SHOPT_NONE "none"
42 #define SHOPT_ROOT_MAPPING "root_mapping"
43
44 #define SHOPT_SEC "sec"
45 #define SHOPT_SECURE "secure"
46 #define SHOPT_ROOT "root"
47 #define SHOPT_ANON "anon"
48 #define SHOPT_WINDOW "window"
49 #define SHOPT_NOSUB "nosub"
50 #define SHOPT_NOSUID "nosuid"
51 #define SHOPT_ACLOK "aclok"
52 #define SHOPT_PUBLIC "public"
53 #define SHOPT_INDEX "index"
54 #define SHOPT_LOG "log"
55 #define SHOPT_CKSUM "cksum"
56 #define SHOPT_NOACLFAB "noaclfab"
57 #define SHOPT_UIDMAP "uidmap"
58 #define SHOPT_GIDMAP "gidmap"
59 #define SHOPT_NOHIDE "nohide"
60
61 /*
62 * defined options types. These should be in a file rather than
63 * compiled in. Until there is a plugin mechanism to add new types,
64 * this is sufficient.
65 */
66 #define OPT_TYPE_ANY 0
67 #define OPT_TYPE_STRING 1
68 #define OPT_TYPE_BOOLEAN 2
69 #define OPT_TYPE_NUMBER 3
70 #define OPT_TYPE_RANGE 4
71 #define OPT_TYPE_USER 5
72 #define OPT_TYPE_ACCLIST 6
73 #define OPT_TYPE_DEPRECATED 7
74 #define OPT_TYPE_SECURITY 8
75 #define OPT_TYPE_PATH 9
76 #define OPT_TYPE_FILE 10
77 #define OPT_TYPE_LOGTAG 11
78 #define OPT_TYPE_STRINGSET 12
79 #define OPT_TYPE_DOMAIN 13
80 #define OPT_TYPE_ONOFF 14
81 #define OPT_TYPE_PROTOCOL 15
82 #define OPT_TYPE_MAPPING 16
83
84 #define OPT_SHARE_ONLY 1
85
86 struct option_defs {
87 char *tag;
88 int index;
89 int type;
90 int share; /* share only option */
91 int (*check)(sa_handle_t, char *);
92 };
93
94 /*
95 * service bit mask values
96 */
97 #define SVC_LOCKD 0x0001
98 #define SVC_STATD 0x0002
99 #define SVC_NFSD 0x0004
100 #define SVC_MOUNTD 0x0008
101 #define SVC_NFS4CBD 0x0010
102 #define SVC_NFSMAPID 0x0020
103 #define SVC_RQUOTAD 0x0040
104 #define SVC_NFSLOGD 0x0080
105 #define SVC_REPARSED 0x0100
106 #define SVC_CLIENT 0x0200
107
108 /*
109 * NFS Restart/Refresh options
110 */
111 #define NFSD_REFRESH 0x0001
112 #define NFSD_RESTART 0x0002
113 #define NLOCKMGR_REFESH 0x0003
114 #define NLOCKMGR_RESTART 0x0004
115 #define MAPID_REFRESH 0x0005
116 #define MAPID_RESTART 0x0006
117
118 /*
119 * place holder for future service -- will move to daemon_utils.h when
120 * fully implemented.
121 */
122 #define NFSLOGD "svc:/network/nfs/log:default"
123
124 /* The NFS export structure flags for read/write modes */
125 #define NFS_RWMODES (M_RO|M_ROL|M_RW|M_RWL)
126
127 /* other values */
128 /* max size of 64-bit integer in digits plus a bit extra */
129 #define MAXDIGITS 32
130
131 /* external variable */
132 extern boolean_t nfsl_errs_to_syslog;
133
134 /* imported functions */
135 extern int exportfs(char *, struct exportdata *);
136 extern int nfs_getseconfig_default(seconfig_t *);
137 extern int nfs_getseconfig_byname(char *, seconfig_t *);
138 extern bool_t nfs_get_root_principal(seconfig_t *, char *, caddr_t *);
139 extern int nfsl_getconfig_list(nfsl_config_t **);
140 extern void nfsl_freeconfig_list(nfsl_config_t **);
141 extern nfsl_config_t *nfsl_findconfig(nfsl_config_t *, char *, int *);
142
143 #ifdef __cplusplus
144 }
145 #endif
146
147 #endif /* _LIBSHARE_NFS_H */