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 2007 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
25 */
26
27 #ifndef _NFSTCL4_H
28 #define _NFSTCL4_H
29
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33
34 #include <stdio.h>
35 #include <stdlib.h>
36 #include <strings.h>
37 #include <limits.h>
38 #include <sys/types.h>
39 #include <sys/stat.h>
40 #include "tcl.h"
41 #include "nfs4_prot.h"
42
43 /* default NFS port to be used */
44 #define NFS_PORT 2049
45
46 /* tcl procedure structure */
47 struct nfsproc {
48 char *name;
49 int (*func)();
50 };
51 typedef struct nfsproc NFSPROC;
52
53 /* nfsv4 operations structure */
54 struct nfsop {
55 char *name;
56 int (*func)();
57 };
58 typedef struct nfsop NFSOP;
59
60 /* attribute information structure */
61 struct attrinfo {
62 char *name;
63 int (*defunc)();
64 int (*enfunc)();
65 };
66 typedef struct attrinfo ATTRINFO;
67
68 /* procedures of tcl commands */
69 extern int nfs_connect();
70 extern int nfs_disconnect();
71 extern int nfs_compound();
72 extern int nfs_nullproc();
73
74 /* nfsv4 operation/result functions */
75 extern int Access();
76 extern int Close();
77 extern int Commit();
78 extern int Create();
79 extern int Delegpurge();
80 extern int Delegreturn();
81 extern int Getattr();
82 extern int Getfh();
83 extern int Illegal();
84 extern int Link();
85 extern int Lock();
86 extern int Lockt();
87 extern int Locku();
88 extern int Lookup();
89 extern int Lookupp();
90 extern int Nverify();
91 extern int Open();
92 extern int Openattr();
93 extern int Open_confirm();
94 extern int Open_downgrade();
95 extern int Putfh();
96 extern int Putpubfh();
97 extern int Putrootfh();
98 extern int Read();
99 extern int Readdir();
100 extern int Readlink();
101 extern int Remove();
102 extern int Release_lockowner();
103 extern int Rename();
104 extern int Renew();
105 extern int Restorefh();
106 extern int Savefh();
107 extern int Secinfo();
108 extern int Setattr();
109 extern int Setclientid();
110 extern int Setclientid_confirm();
111 extern int Verify();
112 extern int Write();
113
114 extern int Access_res();
115 extern int Close_res();
116 extern int Commit_res();
117 extern int Create_res();
118 extern int Delegpurge_res();
119 extern int Getattr_res();
120 extern int Getfh_res();
121 extern int Illegal_res();
122 extern int Link_res();
123 extern int Lock_res();
124 extern int Lockt_res();
125 extern int Locku_res();
126 extern int Lookup_res();
127 extern int Lookupp_res();
128 extern int Nverify_res();
129 extern int Open_res();
130 extern int Openattr_res();
131 extern int Open_confirm_res();
132 extern int Open_downgrade_res();
133 extern int Putfh_res();
134 extern int Putpubfh_res();
135 extern int Putrootfh_res();
136 extern int Read_res();
137 extern int Readdir_res();
138 extern int Readlink_res();
139 extern int Release_lockowner_res();
140 extern int Remove_res();
141 extern int Rename_res();
142 extern int Renew_res();
143 extern int Restorefh_res();
144 extern int Savefh_res();
145 extern int Secinfo_res();
146 extern int Setattr_res();
147 extern int Setclientid_res();
148 extern int Setclientid_confirm_res();
149 extern int Verify_res();
150 extern int Write_res();
151 extern int compound_result();
152 extern void op_createcom();
153
154 /* attribute encode/decode functions */
155 extern int de_bool();
156 extern int de_time();
157 extern int de_uint64();
158 extern int de_uint32();
159 extern int de_type();
160 extern int de_bitmap();
161 extern int de_fsid();
162 extern int de_fhandle();
163 extern int de_mode();
164 extern int de_specdata();
165 extern int de_utf8string();
166 extern int de_stat4();
167 extern int de_unimpl();
168 extern int attr_decode();
169 extern int de_acl();
170 extern int de_fslocation();
171
172 extern int en_unimpl();
173 extern int en_uint64();
174 extern int en_uint32();
175 extern int en_type();
176 extern int en_bool();
177 extern int en_mode();
178 extern int en_specdata();
179 extern int en_time();
180 extern int en_timeset();
181 extern int en_utf8string();
182 extern int en_fhandle();
183 extern int en_fsid();
184 extern int en_stat4();
185 extern int attr_encode();
186 extern int en_acl();
187
188 /* utilities functions */
189 extern void prn_attrname();
190 extern int name2bit();
191 extern char *bit2name();
192 extern int names2alist();
193 extern char *errstr();
194 extern nfsstat4 str2err(char *);
195 extern char *bin2hex();
196 extern char *hex2bin();
197 extern int getbit();
198 extern void setbit();
199 extern utf8string *str2utf8();
200 extern char *utf82str();
201 extern char *itoa();
202 extern int str2pathname();
203 extern int names2bitmap();
204 extern char *access2name();
205 extern char *prn_ace4();
206 extern int substitution();
207 char *find_file(char *file, char *mypath, char *mysep);
208 extern int str2stateid();
209
210 /* ACL print functions */
211 extern char *out_ace4();
212 extern void out_ace4_type();
213 extern void out_ace4_flag();
214 extern void out_ace4_mask();
215 extern void ace4_check();
216
217 extern nfs_argop4 *new_argop();
218
219 /* functions for Open/Delegation */
220 extern int set_openclaim();
221 extern int set_opentype();
222 extern int set_owner();
223
224 #ifdef __cplusplus
225 }
226 #endif
227
228 #endif /* _NFSTCL4_H */