1*11963SAfshin.Ardakani@Sun.COM /* 2*11963SAfshin.Ardakani@Sun.COM * CDDL HEADER START 3*11963SAfshin.Ardakani@Sun.COM * 4*11963SAfshin.Ardakani@Sun.COM * The contents of this file are subject to the terms of the 5*11963SAfshin.Ardakani@Sun.COM * Common Development and Distribution License (the "License"). 6*11963SAfshin.Ardakani@Sun.COM * You may not use this file except in compliance with the License. 7*11963SAfshin.Ardakani@Sun.COM * 8*11963SAfshin.Ardakani@Sun.COM * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*11963SAfshin.Ardakani@Sun.COM * or http://www.opensolaris.org/os/licensing. 10*11963SAfshin.Ardakani@Sun.COM * See the License for the specific language governing permissions 11*11963SAfshin.Ardakani@Sun.COM * and limitations under the License. 12*11963SAfshin.Ardakani@Sun.COM * 13*11963SAfshin.Ardakani@Sun.COM * When distributing Covered Code, include this CDDL HEADER in each 14*11963SAfshin.Ardakani@Sun.COM * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*11963SAfshin.Ardakani@Sun.COM * If applicable, add the following below this CDDL HEADER, with the 16*11963SAfshin.Ardakani@Sun.COM * fields enclosed by brackets "[]" replaced with your own identifying 17*11963SAfshin.Ardakani@Sun.COM * information: Portions Copyright [yyyy] [name of copyright owner] 18*11963SAfshin.Ardakani@Sun.COM * 19*11963SAfshin.Ardakani@Sun.COM * CDDL HEADER END 20*11963SAfshin.Ardakani@Sun.COM */ 21*11963SAfshin.Ardakani@Sun.COM /* 22*11963SAfshin.Ardakani@Sun.COM * Copyright 2010 Sun Microsystems, Inc. All rights reserved. 23*11963SAfshin.Ardakani@Sun.COM * Use is subject to license terms. 24*11963SAfshin.Ardakani@Sun.COM */ 25*11963SAfshin.Ardakani@Sun.COM 26*11963SAfshin.Ardakani@Sun.COM #ifndef _DFS_H 27*11963SAfshin.Ardakani@Sun.COM #define _DFS_H 28*11963SAfshin.Ardakani@Sun.COM 29*11963SAfshin.Ardakani@Sun.COM #include <priv.h> 30*11963SAfshin.Ardakani@Sun.COM #include <smbsrv/smb_dfs.h> 31*11963SAfshin.Ardakani@Sun.COM #include <smbsrv/libsmb.h> 32*11963SAfshin.Ardakani@Sun.COM 33*11963SAfshin.Ardakani@Sun.COM #ifdef __cplusplus 34*11963SAfshin.Ardakani@Sun.COM extern "C" { 35*11963SAfshin.Ardakani@Sun.COM #endif 36*11963SAfshin.Ardakani@Sun.COM 37*11963SAfshin.Ardakani@Sun.COM /* 38*11963SAfshin.Ardakani@Sun.COM * Status returned by dfs_link_stat() 39*11963SAfshin.Ardakani@Sun.COM */ 40*11963SAfshin.Ardakani@Sun.COM #define DFS_STAT_UNKNOWN 0 41*11963SAfshin.Ardakani@Sun.COM #define DFS_STAT_NOTFOUND 1 42*11963SAfshin.Ardakani@Sun.COM #define DFS_STAT_NOTLINK 2 43*11963SAfshin.Ardakani@Sun.COM #define DFS_STAT_ISREPARSE 3 44*11963SAfshin.Ardakani@Sun.COM #define DFS_STAT_ISDFS 4 45*11963SAfshin.Ardakani@Sun.COM 46*11963SAfshin.Ardakani@Sun.COM typedef struct dfs_path { 47*11963SAfshin.Ardakani@Sun.COM char p_fspath[DFS_PATH_MAX]; 48*11963SAfshin.Ardakani@Sun.COM smb_unc_t p_unc; 49*11963SAfshin.Ardakani@Sun.COM uint32_t p_type; 50*11963SAfshin.Ardakani@Sun.COM } dfs_path_t; 51*11963SAfshin.Ardakani@Sun.COM 52*11963SAfshin.Ardakani@Sun.COM typedef struct dfs_nscnode { 53*11963SAfshin.Ardakani@Sun.COM char nsc_uncpath[DFS_PATH_MAX]; 54*11963SAfshin.Ardakani@Sun.COM char nsc_fspath[DFS_PATH_MAX]; 55*11963SAfshin.Ardakani@Sun.COM uint32_t nsc_type; 56*11963SAfshin.Ardakani@Sun.COM } dfs_nscnode_t; 57*11963SAfshin.Ardakani@Sun.COM 58*11963SAfshin.Ardakani@Sun.COM uint32_t dfs_namespace_count(void); 59*11963SAfshin.Ardakani@Sun.COM uint32_t dfs_namespace_path(const char *, char *, size_t); 60*11963SAfshin.Ardakani@Sun.COM uint32_t dfs_namespace_add(const char *, const char *); 61*11963SAfshin.Ardakani@Sun.COM uint32_t dfs_namespace_remove(const char *); 62*11963SAfshin.Ardakani@Sun.COM void dfs_namespace_load(const char *); 63*11963SAfshin.Ardakani@Sun.COM void dfs_namespace_unload(const char *); 64*11963SAfshin.Ardakani@Sun.COM 65*11963SAfshin.Ardakani@Sun.COM uint32_t dfs_root_getinfo(const char *, dfs_info_t *, uint32_t); 66*11963SAfshin.Ardakani@Sun.COM uint32_t dfs_root_setinfo(const char *, dfs_info_t *, uint32_t); 67*11963SAfshin.Ardakani@Sun.COM 68*11963SAfshin.Ardakani@Sun.COM uint32_t dfs_link_add(const char *, const char *, const char *, 69*11963SAfshin.Ardakani@Sun.COM const char *, uint32_t, boolean_t *); 70*11963SAfshin.Ardakani@Sun.COM uint32_t dfs_link_remove(const char *, const char *, const char *); 71*11963SAfshin.Ardakani@Sun.COM uint32_t dfs_link_stat(const char *, uint32_t *); 72*11963SAfshin.Ardakani@Sun.COM uint32_t dfs_link_getinfo(const char *, dfs_info_t *, uint32_t); 73*11963SAfshin.Ardakani@Sun.COM uint32_t dfs_link_setinfo(const char *, dfs_info_t *, uint32_t); 74*11963SAfshin.Ardakani@Sun.COM 75*11963SAfshin.Ardakani@Sun.COM uint32_t dfs_path_parse(dfs_path_t *, const char *, uint32_t); 76*11963SAfshin.Ardakani@Sun.COM void dfs_path_free(dfs_path_t *); 77*11963SAfshin.Ardakani@Sun.COM 78*11963SAfshin.Ardakani@Sun.COM void dfs_cache_iterinit(smb_cache_cursor_t *); 79*11963SAfshin.Ardakani@Sun.COM boolean_t dfs_cache_iterate(smb_cache_cursor_t *, dfs_nscnode_t *); 80*11963SAfshin.Ardakani@Sun.COM uint32_t dfs_cache_add_byname(const char *, const char *, uint32_t); 81*11963SAfshin.Ardakani@Sun.COM void dfs_cache_remove(const char *, const char *); 82*11963SAfshin.Ardakani@Sun.COM uint32_t dfs_cache_getinfo(dfs_nscnode_t *, dfs_info_t *, uint32_t); 83*11963SAfshin.Ardakani@Sun.COM uint32_t dfs_cache_num(void); 84*11963SAfshin.Ardakani@Sun.COM 85*11963SAfshin.Ardakani@Sun.COM void dfs_init(void); 86*11963SAfshin.Ardakani@Sun.COM void dfs_fini(void); 87*11963SAfshin.Ardakani@Sun.COM void dfs_setpriv(priv_op_t); 88*11963SAfshin.Ardakani@Sun.COM 89*11963SAfshin.Ardakani@Sun.COM void dfs_info_trace(const char *, dfs_info_t *); 90*11963SAfshin.Ardakani@Sun.COM 91*11963SAfshin.Ardakani@Sun.COM #ifdef __cplusplus 92*11963SAfshin.Ardakani@Sun.COM } 93*11963SAfshin.Ardakani@Sun.COM #endif 94*11963SAfshin.Ardakani@Sun.COM 95*11963SAfshin.Ardakani@Sun.COM #endif /* _DFS_H */ 96