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