• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/router/samba-3.5.8/source4/param/
1/*
2   Unix SMB/CIFS implementation.
3
4   Modular services configuration
5
6   Copyright (C) Simo Sorce	2006
7
8   This program is free software; you can redistribute it and/or modify
9   it under the terms of the GNU General Public License as published by
10   the Free Software Foundation; either version 3 of the License, or
11   (at your option) any later version.
12
13   This program is distributed in the hope that it will be useful,
14   but WITHOUT ANY WARRANTY; without even the implied warranty of
15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16   GNU General Public License for more details.
17
18   You should have received a copy of the GNU General Public License
19   along with this program.  If not, see <http://www.gnu.org/licenses/>.
20*/
21
22#ifndef _SHARE_H
23#define _SHARE_H
24
25struct share_ops;
26
27struct share_context {
28	const struct share_ops *ops;
29	void *priv_data;
30};
31
32struct share_config {
33	const char *name;
34	struct share_context *ctx;
35	void *opaque;
36};
37
38enum share_info_type {
39	SHARE_INFO_STRING,
40	SHARE_INFO_INT,
41	SHARE_INFO_BLOB
42};
43
44struct share_info {
45	enum share_info_type type;
46	const char *name;
47	void *value;
48};
49
50struct tevent_context;
51
52struct share_ops {
53	const char *name;
54	NTSTATUS (*init)(TALLOC_CTX *, const struct share_ops*, struct tevent_context *ev_ctx,
55			 struct loadparm_context *lp_ctx,
56			 struct share_context **);
57	const char *(*string_option)(struct share_config *, const char *, const char *);
58	int (*int_option)(struct share_config *, const char *, int);
59	bool (*bool_option)(struct share_config *, const char *, bool);
60	const char **(*string_list_option)(TALLOC_CTX *, struct share_config *, const char *);
61	NTSTATUS (*list_all)(TALLOC_CTX *, struct share_context *, int *, const char ***);
62	NTSTATUS (*get_config)(TALLOC_CTX *, struct share_context *, const char *, struct share_config **);
63	NTSTATUS (*create)(struct share_context *, const char *, struct share_info *, int);
64	NTSTATUS (*set)(struct share_context *, const char *, struct share_info *, int);
65	NTSTATUS (*remove)(struct share_context *, const char *);
66};
67
68struct loadparm_context;
69
70#include "param/share_proto.h"
71
72/* list of shares options */
73
74#define SHARE_NAME		"name"
75#define SHARE_PATH		"path"
76#define SHARE_COMMENT		"comment"
77#define SHARE_PASSWORD		"password"
78#define SHARE_HOSTS_ALLOW	"hosts-allow"
79#define SHARE_HOSTS_DENY	"hosts-deny"
80#define SHARE_NTVFS_HANDLER	"ntvfs-handler"
81#define SHARE_TYPE		"type"
82#define SHARE_VOLUME		"volume"
83#define SHARE_CSC_POLICY	"csc-policy"
84#define SHARE_AVAILABLE		"available"
85#define SHARE_BROWSEABLE	"browseable"
86#define SHARE_MAX_CONNECTIONS	"max-connections"
87
88/* I'd like to see the following options go away
89 * and always use EAs and SECDESCs */
90#define SHARE_READONLY		"readonly"
91#define SHARE_MAP_SYSTEM	"map-system"
92#define SHARE_MAP_HIDDEN	"map-hidden"
93#define SHARE_MAP_ARCHIVE	"map-archive"
94
95#define SHARE_STRICT_LOCKING	"strict-locking"
96#define SHARE_OPLOCKS	        "oplocks"
97#define SHARE_STRICT_SYNC	"strict-sync"
98#define SHARE_MSDFS_ROOT	"msdfs-root"
99#define SHARE_CI_FILESYSTEM	"ci-filesystem"
100
101#define SHARE_DIR_MASK             "directory mask"
102#define SHARE_CREATE_MASK          "create mask"
103#define SHARE_FORCE_CREATE_MODE    "force create mode"
104#define SHARE_FORCE_DIR_MODE       "force directory mode"
105
106/* defaults */
107
108#define SHARE_HOST_ALLOW_DEFAULT	NULL
109#define SHARE_HOST_DENY_DEFAULT		NULL
110#define SHARE_VOLUME_DEFAULT		NULL
111#define SHARE_TYPE_DEFAULT		"DISK"
112#define SHARE_CSC_POLICY_DEFAULT	0
113#define SHARE_AVAILABLE_DEFAULT		true
114#define SHARE_BROWSEABLE_DEFAULT	true
115#define SHARE_MAX_CONNECTIONS_DEFAULT	0
116
117#define SHARE_DIR_MASK_DEFAULT                   0755
118#define SHARE_CREATE_MASK_DEFAULT                0744
119#define SHARE_FORCE_CREATE_MODE_DEFAULT          0000
120#define SHARE_FORCE_DIR_MODE_DEFAULT             0000
121
122
123
124/* I'd like to see the following options go away
125 * and always use EAs and SECDESCs */
126#define SHARE_READONLY_DEFAULT		true
127#define SHARE_MAP_SYSTEM_DEFAULT	false
128#define SHARE_MAP_HIDDEN_DEFAULT	false
129#define SHARE_MAP_ARCHIVE_DEFAULT	true
130
131#define SHARE_STRICT_LOCKING_DEFAULT	true
132#define SHARE_OPLOCKS_DEFAULT	true
133#define SHARE_STRICT_SYNC_DEFAULT	false
134#define SHARE_MSDFS_ROOT_DEFAULT	false
135#define SHARE_CI_FILESYSTEM_DEFAULT	false
136
137#endif /* _SHARE_H */
138