1*5331Samw /* 2*5331Samw * CDDL HEADER START 3*5331Samw * 4*5331Samw * The contents of this file are subject to the terms of the 5*5331Samw * Common Development and Distribution License (the "License"). 6*5331Samw * You may not use this file except in compliance with the License. 7*5331Samw * 8*5331Samw * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*5331Samw * or http://www.opensolaris.org/os/licensing. 10*5331Samw * See the License for the specific language governing permissions 11*5331Samw * and limitations under the License. 12*5331Samw * 13*5331Samw * When distributing Covered Code, include this CDDL HEADER in each 14*5331Samw * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*5331Samw * If applicable, add the following below this CDDL HEADER, with the 16*5331Samw * fields enclosed by brackets "[]" replaced with your own identifying 17*5331Samw * information: Portions Copyright [yyyy] [name of copyright owner] 18*5331Samw * 19*5331Samw * CDDL HEADER END 20*5331Samw */ 21*5331Samw /* 22*5331Samw * Copyright 2007 Sun Microsystems, Inc. All rights reserved. 23*5331Samw * Use is subject to license terms. 24*5331Samw */ 25*5331Samw 26*5331Samw #ifndef _SMBSRV_SMB_FSOPS_H 27*5331Samw #define _SMBSRV_SMB_FSOPS_H 28*5331Samw 29*5331Samw #pragma ident "%Z%%M% %I% %E% SMI" 30*5331Samw 31*5331Samw /* 32*5331Samw * This header file contains all the functions for the interface between 33*5331Samw * the smb layer and the fs layer. 34*5331Samw */ 35*5331Samw #include <smbsrv/smb_i18n.h> 36*5331Samw #include <smbsrv/smbinfo.h> 37*5331Samw #include <smbsrv/smb_vops.h> 38*5331Samw 39*5331Samw #ifdef __cplusplus 40*5331Samw extern "C" { 41*5331Samw #endif 42*5331Samw 43*5331Samw int smb_fsop_open(smb_ofile_t *of); 44*5331Samw 45*5331Samw int smb_fsop_close(smb_ofile_t *of); 46*5331Samw 47*5331Samw int smb_fsop_create(struct smb_request *sr, cred_t *cr, smb_node_t *snode, 48*5331Samw char *name, smb_attr_t *attr, smb_node_t **ret_snode, smb_attr_t *ret_attr); 49*5331Samw 50*5331Samw int smb_fsop_mkdir(struct smb_request *sr, cred_t *cr, smb_node_t *snode, 51*5331Samw char *name, smb_attr_t *attr, smb_node_t **ret_snode, smb_attr_t *ret_attr); 52*5331Samw 53*5331Samw int smb_fsop_remove(struct smb_request *sr, cred_t *cr, smb_node_t *dir_snode, 54*5331Samw char *name, int od); 55*5331Samw 56*5331Samw int smb_fsop_rmdir(struct smb_request *sr, cred_t *cr, smb_node_t *dir_snode, 57*5331Samw char *name, int od); 58*5331Samw 59*5331Samw int smb_fsop_getattr(struct smb_request *sr, cred_t *cr, smb_node_t *snode, 60*5331Samw smb_attr_t *attr); 61*5331Samw 62*5331Samw int smb_fsop_readdir(struct smb_request *sr, cred_t *cr, smb_node_t *snode, 63*5331Samw uint32_t *cookie, char *name, int *namelen, ino64_t *fileid, 64*5331Samw struct fs_stream_info *stream_info, smb_node_t **ret_snode, 65*5331Samw smb_attr_t *ret_attr); 66*5331Samw 67*5331Samw int smb_fsop_getdents(struct smb_request *sr, cred_t *cr, 68*5331Samw struct smb_node *dir_snode, uint32_t *cookie, uint64_t *verifierp, 69*5331Samw int32_t *maxcnt, char *args, char *pattern); 70*5331Samw 71*5331Samw int smb_maybe_mangled_name(char *name); 72*5331Samw 73*5331Samw int smb_fsop_rename(struct smb_request *sr, cred_t *cr, 74*5331Samw smb_node_t *from_snode, char *from_name, smb_node_t *to_snode, 75*5331Samw char *to_name); 76*5331Samw 77*5331Samw int smb_fsop_setattr(struct smb_request *sr, cred_t *cr, smb_node_t *snode, 78*5331Samw smb_attr_t *set_attr, smb_attr_t *ret_attr); 79*5331Samw 80*5331Samw int smb_fsop_read(struct smb_request *sr, cred_t *cr, 81*5331Samw smb_node_t *snode, uio_t *uio, smb_attr_t *ret_attr); 82*5331Samw 83*5331Samw int smb_fsop_write(struct smb_request *sr, cred_t *cr, smb_node_t *snode, 84*5331Samw uio_t *uio, uint32_t *lcount, smb_attr_t *ret_attr, 85*5331Samw uint32_t *stability); 86*5331Samw 87*5331Samw int smb_fsop_statfs(cred_t *cr, struct smb_node *snode, 88*5331Samw struct statvfs64 *statp); 89*5331Samw 90*5331Samw int smb_fsop_remove_streams(struct smb_request *sr, cred_t *cr, 91*5331Samw smb_node_t *fnode); 92*5331Samw 93*5331Samw int smb_fsop_access(smb_request_t *sr, cred_t *cr, smb_node_t *snode, 94*5331Samw uint32_t faccess); 95*5331Samw 96*5331Samw void smb_fsop_eaccess(smb_request_t *sr, cred_t *cr, smb_node_t *snode, 97*5331Samw uint32_t *faccess); 98*5331Samw 99*5331Samw int smb_fsop_lookup_name(struct smb_request *sr, cred_t *cr, int flags, 100*5331Samw smb_node_t *root_node, smb_node_t *dir_snode, char *name, 101*5331Samw smb_node_t **ret_snode, smb_attr_t *ret_attr); 102*5331Samw 103*5331Samw int smb_fsop_lookup(struct smb_request *sr, cred_t *cr, int flags, 104*5331Samw smb_node_t *root_node, smb_node_t *dir_snode, char *name, 105*5331Samw smb_node_t **ret_snode, smb_attr_t *ret_attr, char *ret_shortname, 106*5331Samw char *ret_name83); 107*5331Samw 108*5331Samw int smb_fsop_commit(smb_request_t *sr, cred_t *cr, struct smb_node *snode); 109*5331Samw 110*5331Samw int smb_fsop_stream_readdir(struct smb_request *sr, cred_t *cr, 111*5331Samw smb_node_t *fnode, uint32_t *cookiep, struct fs_stream_info *stream_info, 112*5331Samw smb_node_t **ret_snode, smb_attr_t *ret_attr); 113*5331Samw 114*5331Samw void smb_fsop_aclfree(acl_t *acl); 115*5331Samw acl_t *smb_fsop_aclalloc(int acenum, int flags); 116*5331Samw int smb_fsop_aclread(smb_request_t *sr, cred_t *cr, smb_node_t *snode, 117*5331Samw smb_fssd_t *fssd); 118*5331Samw int smb_fsop_aclwrite(smb_request_t *sr, cred_t *cr, smb_node_t *snode, 119*5331Samw smb_fssd_t *fs_sd); 120*5331Samw acl_type_t smb_fsop_acltype(smb_node_t *snode); 121*5331Samw 122*5331Samw void smb_fsop_sdinit(smb_fssd_t *fs_sd, uint32_t secinfo, uint32_t sd_flags); 123*5331Samw void smb_fsop_sdterm(smb_fssd_t *fssd); 124*5331Samw int smb_fsop_sdread(smb_request_t *sr, cred_t *cr, smb_node_t *snode, 125*5331Samw smb_fssd_t *fssd); 126*5331Samw int smb_fsop_sdwrite(smb_request_t *sr, cred_t *cr, smb_node_t *snode, 127*5331Samw smb_fssd_t *fs_sd, int overwrite); 128*5331Samw 129*5331Samw 130*5331Samw void smb_get_caller_context(smb_request_t *sr, caller_context_t *ct); 131*5331Samw 132*5331Samw /* 133*5331Samw * Lookup-related flags 134*5331Samw * 135*5331Samw * SMB_FOLLOW_LINKS Follow symbolic links. 136*5331Samw * SMB_IGNORE_CASE Perform case-insensitive lookup. 137*5331Samw * 138*5331Samw * Misc flags 139*5331Samw * 140*5331Samw * SMB_STREAM_RDDIR use eflags=0 for streams readdirs this 141*5331Samw * is currently a workaround because the 142*5331Samw * vfs isn't filling in this flag 143*5331Samw */ 144*5331Samw 145*5331Samw #define SMB_FOLLOW_LINKS 0x00000001 146*5331Samw #define SMB_IGNORE_CASE 0x00000002 147*5331Samw #define SMB_STREAM_RDDIR 0x00000004 148*5331Samw 149*5331Samw #ifdef __cplusplus 150*5331Samw } 151*5331Samw #endif 152*5331Samw 153*5331Samw #endif /* _SMBSRV_SMB_FSOPS_H */ 154