111963SAfshin.Ardakani@Sun.COM /* 211963SAfshin.Ardakani@Sun.COM * CDDL HEADER START 311963SAfshin.Ardakani@Sun.COM * 411963SAfshin.Ardakani@Sun.COM * The contents of this file are subject to the terms of the 511963SAfshin.Ardakani@Sun.COM * Common Development and Distribution License (the "License"). 611963SAfshin.Ardakani@Sun.COM * You may not use this file except in compliance with the License. 711963SAfshin.Ardakani@Sun.COM * 811963SAfshin.Ardakani@Sun.COM * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 911963SAfshin.Ardakani@Sun.COM * or http://www.opensolaris.org/os/licensing. 1011963SAfshin.Ardakani@Sun.COM * See the License for the specific language governing permissions 1111963SAfshin.Ardakani@Sun.COM * and limitations under the License. 1211963SAfshin.Ardakani@Sun.COM * 1311963SAfshin.Ardakani@Sun.COM * When distributing Covered Code, include this CDDL HEADER in each 1411963SAfshin.Ardakani@Sun.COM * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 1511963SAfshin.Ardakani@Sun.COM * If applicable, add the following below this CDDL HEADER, with the 1611963SAfshin.Ardakani@Sun.COM * fields enclosed by brackets "[]" replaced with your own identifying 1711963SAfshin.Ardakani@Sun.COM * information: Portions Copyright [yyyy] [name of copyright owner] 1811963SAfshin.Ardakani@Sun.COM * 1911963SAfshin.Ardakani@Sun.COM * CDDL HEADER END 2011963SAfshin.Ardakani@Sun.COM */ 2111963SAfshin.Ardakani@Sun.COM /* 22*12890SJoyce.McIntosh@Sun.COM * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. 2311963SAfshin.Ardakani@Sun.COM */ 2411963SAfshin.Ardakani@Sun.COM 2511963SAfshin.Ardakani@Sun.COM #ifndef _DFS_H 2611963SAfshin.Ardakani@Sun.COM #define _DFS_H 2711963SAfshin.Ardakani@Sun.COM 2811963SAfshin.Ardakani@Sun.COM #include <priv.h> 2911963SAfshin.Ardakani@Sun.COM #include <smbsrv/smb_dfs.h> 3011963SAfshin.Ardakani@Sun.COM #include <smbsrv/libsmb.h> 3111963SAfshin.Ardakani@Sun.COM 3211963SAfshin.Ardakani@Sun.COM #ifdef __cplusplus 3311963SAfshin.Ardakani@Sun.COM extern "C" { 3411963SAfshin.Ardakani@Sun.COM #endif 3511963SAfshin.Ardakani@Sun.COM 3611963SAfshin.Ardakani@Sun.COM /* 3711963SAfshin.Ardakani@Sun.COM * Status returned by dfs_link_stat() 3811963SAfshin.Ardakani@Sun.COM */ 3911963SAfshin.Ardakani@Sun.COM #define DFS_STAT_UNKNOWN 0 4011963SAfshin.Ardakani@Sun.COM #define DFS_STAT_NOTFOUND 1 4111963SAfshin.Ardakani@Sun.COM #define DFS_STAT_NOTLINK 2 4211963SAfshin.Ardakani@Sun.COM #define DFS_STAT_ISREPARSE 3 4311963SAfshin.Ardakani@Sun.COM #define DFS_STAT_ISDFS 4 4411963SAfshin.Ardakani@Sun.COM 4511963SAfshin.Ardakani@Sun.COM typedef struct dfs_path { 4611963SAfshin.Ardakani@Sun.COM char p_fspath[DFS_PATH_MAX]; 4711963SAfshin.Ardakani@Sun.COM smb_unc_t p_unc; 4811963SAfshin.Ardakani@Sun.COM uint32_t p_type; 4911963SAfshin.Ardakani@Sun.COM } dfs_path_t; 5011963SAfshin.Ardakani@Sun.COM 5111963SAfshin.Ardakani@Sun.COM typedef struct dfs_nscnode { 5211963SAfshin.Ardakani@Sun.COM char nsc_uncpath[DFS_PATH_MAX]; 5311963SAfshin.Ardakani@Sun.COM char nsc_fspath[DFS_PATH_MAX]; 5411963SAfshin.Ardakani@Sun.COM uint32_t nsc_type; 5511963SAfshin.Ardakani@Sun.COM } dfs_nscnode_t; 5611963SAfshin.Ardakani@Sun.COM 5711963SAfshin.Ardakani@Sun.COM uint32_t dfs_namespace_count(void); 5811963SAfshin.Ardakani@Sun.COM uint32_t dfs_namespace_path(const char *, char *, size_t); 5911963SAfshin.Ardakani@Sun.COM uint32_t dfs_namespace_add(const char *, const char *); 6011963SAfshin.Ardakani@Sun.COM uint32_t dfs_namespace_remove(const char *); 6111963SAfshin.Ardakani@Sun.COM void dfs_namespace_load(const char *); 6211963SAfshin.Ardakani@Sun.COM void dfs_namespace_unload(const char *); 63*12890SJoyce.McIntosh@Sun.COM uint32_t dfs_namespace_getflavor(const char *); 6411963SAfshin.Ardakani@Sun.COM 6511963SAfshin.Ardakani@Sun.COM uint32_t dfs_root_getinfo(const char *, dfs_info_t *, uint32_t); 6611963SAfshin.Ardakani@Sun.COM uint32_t dfs_root_setinfo(const char *, dfs_info_t *, uint32_t); 6711963SAfshin.Ardakani@Sun.COM 6811963SAfshin.Ardakani@Sun.COM uint32_t dfs_link_add(const char *, const char *, const char *, 6911963SAfshin.Ardakani@Sun.COM const char *, uint32_t, boolean_t *); 7011963SAfshin.Ardakani@Sun.COM uint32_t dfs_link_remove(const char *, const char *, const char *); 7111963SAfshin.Ardakani@Sun.COM uint32_t dfs_link_stat(const char *, uint32_t *); 7211963SAfshin.Ardakani@Sun.COM uint32_t dfs_link_getinfo(const char *, dfs_info_t *, uint32_t); 7311963SAfshin.Ardakani@Sun.COM uint32_t dfs_link_setinfo(const char *, dfs_info_t *, uint32_t); 7411963SAfshin.Ardakani@Sun.COM 7511963SAfshin.Ardakani@Sun.COM uint32_t dfs_path_parse(dfs_path_t *, const char *, uint32_t); 7611963SAfshin.Ardakani@Sun.COM void dfs_path_free(dfs_path_t *); 7711963SAfshin.Ardakani@Sun.COM 7811963SAfshin.Ardakani@Sun.COM void dfs_cache_iterinit(smb_cache_cursor_t *); 7911963SAfshin.Ardakani@Sun.COM boolean_t dfs_cache_iterate(smb_cache_cursor_t *, dfs_nscnode_t *); 8011963SAfshin.Ardakani@Sun.COM uint32_t dfs_cache_add_byname(const char *, const char *, uint32_t); 8111963SAfshin.Ardakani@Sun.COM void dfs_cache_remove(const char *, const char *); 8211963SAfshin.Ardakani@Sun.COM uint32_t dfs_cache_getinfo(dfs_nscnode_t *, dfs_info_t *, uint32_t); 8311963SAfshin.Ardakani@Sun.COM uint32_t dfs_cache_num(void); 8411963SAfshin.Ardakani@Sun.COM 8511963SAfshin.Ardakani@Sun.COM void dfs_init(void); 8611963SAfshin.Ardakani@Sun.COM void dfs_fini(void); 8711963SAfshin.Ardakani@Sun.COM void dfs_setpriv(priv_op_t); 8811963SAfshin.Ardakani@Sun.COM 8911963SAfshin.Ardakani@Sun.COM void dfs_info_trace(const char *, dfs_info_t *); 9011963SAfshin.Ardakani@Sun.COM 9111963SAfshin.Ardakani@Sun.COM #ifdef __cplusplus 9211963SAfshin.Ardakani@Sun.COM } 9311963SAfshin.Ardakani@Sun.COM #endif 9411963SAfshin.Ardakani@Sun.COM 9511963SAfshin.Ardakani@Sun.COM #endif /* _DFS_H */ 96