xref: /onnv-gate/usr/src/lib/smbsrv/libmlsvc/common/dfs.h (revision 11963:061945695ce1)
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