#define SMB2_CONTINUE_FLAG_INDEX 0x04
#define SMB2_CONTINUE_FLAG_REOPEN 0x10
-/* getinfo classes */
-#define SMB2_GETINFO_FILE 0x01
-#define SMB2_GETINFO_FS 0x02
-#define SMB2_GETINFO_SECURITY 0x03
-#define SMB2_GETINFO_QUOTA 0x04
+/* get/setinfo classes, see [MS-SMB2] 2.2.37 and 2.2.39 */
+#define SMB2_0_INFO_FILE 0x01
+#define SMB2_0_INFO_FILESYSTEM 0x02
+#define SMB2_0_INFO_SECURITY 0x03
+#define SMB2_0_INFO_QUOTA 0x04
#define SMB2_CLOSE_FLAGS_FULL_INFORMATION (0x01)
status = cli_smb2_query_info_fnum(
cli,
fnum,
- SMB2_GETINFO_FS, /* in_info_type */
+ SMB2_0_INFO_FILESYSTEM, /* in_info_type */
SMB_FS_FULL_SIZE_INFORMATION - 1000, /* in_file_info_class */
0xFFFF, /* in_max_output_length */
NULL, /* in_input_buffer */
status = cli_smb2_query_info_fnum(
cli,
fnum,
- SMB2_GETINFO_FS, /* in_info_type */
+ SMB2_0_INFO_FILESYSTEM, /* in_info_type */
/* in_file_info_class */
SMB_FS_VOLUME_INFORMATION - 1000,
0xFFFF, /* in_max_output_length */
}
switch (in_info_type) {
- case SMB2_GETINFO_FILE:
+ case SMB2_0_INFO_FILE:
{
uint16_t file_info_level;
char *data = NULL;
break;
}
- case SMB2_GETINFO_FS:
+ case SMB2_0_INFO_FILESYSTEM:
{
uint16_t file_info_level;
char *data = NULL;
break;
}
- case SMB2_GETINFO_SECURITY:
+ case SMB2_0_INFO_SECURITY:
{
uint8_t *p_marshalled_sd = NULL;
size_t sd_size = 0;
break;
}
- case SMB2_GETINFO_QUOTA: {
+ case SMB2_0_INFO_QUOTA: {
#ifdef HAVE_SYS_QUOTAS
struct smb2_query_quota_info info;
enum ndr_err_code err;
}
switch (in_info_type) {
- case 0x01:/* SMB2_SETINFO_FILE */
+ case SMB2_0_INFO_FILE:
{
uint16_t file_info_level;
char *data;
break;
}
- case 0x02:/* SMB2_SETINFO_FS */
+ case SMB2_0_INFO_FILESYSTEM:
{
uint16_t file_info_level = in_file_info_class + 1000;
break;
}
- case 0x03:/* SMB2_SETINFO_SECURITY */
+ case SMB2_0_INFO_SECURITY:
{
if (!CAN_WRITE(conn)) {
tevent_req_nterror(req, NT_STATUS_ACCESS_DENIED);
break;
}
- case 0x04:/* SMB2_SETINFO_QUOTA */
+ case SMB2_0_INFO_QUOTA:
{
#ifdef HAVE_SYS_QUOTAS
struct file_quota_information info = {0};
cli->timeout,
cli->smb2.session,
cli->smb2.tcon,
- SMB2_GETINFO_SECURITY,
+ SMB2_0_INFO_SECURITY,
0, /* in_file_info_class */
1024, /* in_max_output_length */
NULL, /* in_input_buffer */
cli->timeout,
cli->smb2.session,
cli->smb2.tcon,
- SMB2_GETINFO_FILE,
+ SMB2_0_INFO_FILE,
in_file_info_class,
1024, /* in_max_output_length */
NULL, /* in_input_buffer */
cli->timeout,
cli->smb2.session,
cli->smb2.tcon,
- SMB2_GETINFO_FILE,
+ SMB2_0_INFO_FILE,
in_file_info_class,
&in_input_buffer,
0, /* in_additional_info */
cli->timeout,
cli->smb2.session,
cli->smb2.tcon,
- SMB2_GETINFO_SECURITY,
+ SMB2_0_INFO_SECURITY,
0, /* in_file_info_class */
1024, /* in_max_output_length */
NULL, /* in_input_buffer */
cli->timeout,
cli->smb2.session,
cli->smb2.tcon,
- SMB2_GETINFO_FILE,
+ SMB2_0_INFO_FILE,
in_file_info_class,
1024, /* in_max_output_length */
NULL, /* in_input_buffer */
cli->timeout,
cli->smb2.session,
cli->smb2.tcon,
- SMB2_GETINFO_FILE,
+ SMB2_0_INFO_FILE,
in_file_info_class,
&in_input_buffer,
0, /* in_additional_info */
cli->timeout,
cli->smb2.session,
cli->smb2.tcon,
- SMB2_GETINFO_FILE,
+ SMB2_0_INFO_FILE,
in_file_info_class,
1024, /* in_max_output_length */
NULL, /* in_input_buffer */
*/
uint16_t smb2_getinfo_map_level(uint16_t level, uint8_t info_class)
{
- if (info_class == SMB2_GETINFO_FILE &&
+ if (info_class == SMB2_0_INFO_FILE &&
level == RAW_FILEINFO_SEC_DESC) {
- return SMB2_GETINFO_SECURITY;
+ return SMB2_0_INFO_SECURITY;
}
if ((level & 0xFF) == info_class) {
return level;
struct smb2_request *smb2_getinfo_file_send(struct smb2_tree *tree, union smb_fileinfo *io)
{
struct smb2_getinfo b;
- uint16_t smb2_level = smb2_getinfo_map_level(io->generic.level, SMB2_GETINFO_FILE);
+ uint16_t smb2_level = smb2_getinfo_map_level(
+ io->generic.level, SMB2_0_INFO_FILE);
if (smb2_level == 0) {
return NULL;
struct smb2_request *smb2_getinfo_fs_send(struct smb2_tree *tree, union smb_fsinfo *io)
{
struct smb2_getinfo b;
- uint16_t smb2_level = smb2_getinfo_map_level(io->generic.level, SMB2_GETINFO_FS);
+ uint16_t smb2_level = smb2_getinfo_map_level(
+ io->generic.level, SMB2_0_INFO_FILESYSTEM);
if (smb2_level == 0) {
return NULL;
struct smb2_request *smb2_setinfo_file_send(struct smb2_tree *tree, union smb_setfileinfo *io)
{
struct smb2_setinfo b;
- uint16_t smb2_level = smb2_getinfo_map_level(io->generic.level, SMB2_GETINFO_FILE);
+ uint16_t smb2_level = smb2_getinfo_map_level(
+ io->generic.level, SMB2_0_INFO_FILE);
struct smb2_request *req;
if (smb2_level == 0) {
static NTSTATUS smb2srv_getinfo_backend(struct smb2srv_getinfo_op *op)
{
switch (op->info->in.info_type) {
- case SMB2_GETINFO_FILE:
+ case SMB2_0_INFO_FILE:
return smb2srv_getinfo_file(op, op->info->in.info_class);
- case SMB2_GETINFO_FS:
+ case SMB2_0_INFO_FILESYSTEM:
return smb2srv_getinfo_fs(op, op->info->in.info_class);
- case SMB2_GETINFO_SECURITY:
+ case SMB2_0_INFO_SECURITY:
return smb2srv_getinfo_security(op, op->info->in.info_class);
- case SMB2_GETINFO_QUOTA:
+ case SMB2_0_INFO_QUOTA:
return NT_STATUS_NOT_SUPPORTED;
}
smb2_level = 0xFF & (op->info->in.level>>8);
switch (smb2_class) {
- case SMB2_GETINFO_FILE:
+ case SMB2_0_INFO_FILE:
return smb2srv_setinfo_file(op, smb2_level);
- case SMB2_GETINFO_FS:
+ case SMB2_0_INFO_FILESYSTEM:
return smb2srv_setinfo_fs(op, smb2_level);
- case SMB2_GETINFO_SECURITY:
+ case SMB2_0_INFO_SECURITY:
return smb2srv_setinfo_security(op, smb2_level);
- case 0x04:
+ case SMB2_0_INFO_QUOTA:
return NT_STATUS_NOT_SUPPORTED;
}
ZERO_STRUCT(gf);
gf.in.file.handle = h;
- gf.in.info_type = SMB2_GETINFO_FILE;
+ gf.in.info_type = SMB2_0_INFO_FILE;
gf.in.info_class = 0x16;
gf.in.output_buffer_length = 0x1000;
gf.in.input_buffer = data_blob_null;
ZERO_STRUCT(gf);
gf.in.file.handle = hd;
- gf.in.info_type = SMB2_GETINFO_FILE;
+ gf.in.info_type = SMB2_0_INFO_FILE;
gf.in.info_class = 0x04; /* FILE_BASIC_INFORMATION */
gf.in.output_buffer_length = 0x1000;
gf.in.input_buffer = data_blob_null;
}
ZERO_STRUCT(b);
- b.in.info_type = SMB2_GETINFO_FS;
+ b.in.info_type = SMB2_0_INFO_FILESYSTEM;
b.in.info_class = levels[i].level;
b.in.file.handle = handle;
b.in.output_buffer_length = 65535;
struct smb2_getinfo b;
ZERO_STRUCT(b);
- b.in.info_type = SMB2_GETINFO_FILE;
+ b.in.info_type = SMB2_0_INFO_FILE;
b.in.info_class = levels[i].level;
b.in.file.handle = handle;
b.in.output_buffer_length = 65535;
handle = c.out.file.handle;
ZERO_STRUCT(b);
- b.in.info_type = SMB2_GETINFO_SECURITY;
+ b.in.info_type = SMB2_0_INFO_SECURITY;
b.in.info_class = 0;
b.in.file.handle = handle;
b.in.output_buffer_length = 0;