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 */