Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 87f440e7 authored by Steve French's avatar Steve French
Browse files

[CIFS] Additional POSIX CIFS Extensions infolevels



also includes cleanup of whitespace/80 columns

Signed-off-by: default avatarSteve French <sfrench@us.ibm.com>
parent a850790f
Loading
Loading
Loading
Loading
+46 −23
Original line number Diff line number Diff line
/*
 *   fs/cifs/cifspdu.h
 *
 *   Copyright (c) International Business Machines  Corp., 2002,2005
 *   Copyright (c) International Business Machines  Corp., 2002,2007
 *   Author(s): Steve French (sfrench@us.ibm.com)
 *
 *   This library is free software; you can redistribute it and/or modify
@@ -544,7 +544,8 @@ typedef union smb_com_session_setup_andx {
/*      unsigned char  * NativeOS;      */
/*	unsigned char  * NativeLanMan;  */
/*      unsigned char  * PrimaryDomain; */
	} __attribute__((packed)) resp;	/* NTLM response with or without extended sec*/
	} __attribute__((packed)) resp;	/* NTLM response 
					   (with or without extended sec) */

	struct {		/* request format */
		struct smb_hdr hdr;	/* wct = 10 */
@@ -1352,11 +1353,13 @@ struct smb_t2_rsp {
#define SMB_QUERY_FILE_UNIX_BASIC       0x200
#define SMB_QUERY_FILE_UNIX_LINK        0x201
#define SMB_QUERY_POSIX_ACL             0x204
#define SMB_QUERY_XATTR                 0x205
#define SMB_QUERY_XATTR                 0x205  /* e.g. system EA name space */
#define SMB_QUERY_ATTR_FLAGS            0x206  /* append,immutable etc. */
#define SMB_QUERY_POSIX_PERMISSION      0x207
#define SMB_QUERY_POSIX_LOCK            0x208
/* #define SMB_POSIX_OPEN               0x209 */
/* #define SMB_POSIX_UNLINK             0x20a */
#define SMB_QUERY_FILE__UNIX_INFO2      0x20b
#define SMB_QUERY_FILE_INTERNAL_INFO    0x3ee
#define SMB_QUERY_FILE_ACCESS_INFO      0x3f0
#define SMB_QUERY_FILE_NAME_INFO2       0x3f1 /* 0x30 bytes */
@@ -1377,8 +1380,10 @@ struct smb_t2_rsp {
#define SMB_SET_ATTR_FLAGS              0x206  /* append, immutable etc. */
#define SMB_SET_POSIX_LOCK              0x208
#define SMB_POSIX_OPEN                  0x209
#define SMB_POSIX_UNLINK                0x20a
#define SMB_SET_FILE_UNIX_INFO2
#define SMB_SET_FILE_BASIC_INFO2        0x3ec
#define SMB_SET_FILE_RENAME_INFORMATION 0x3f2 /* BB check if qpathinfo level too */
#define SMB_SET_FILE_RENAME_INFORMATION 0x3f2 /* BB check if qpathinfo too */
#define SMB_FILE_ALL_INFO2              0x3fa
#define SMB_SET_FILE_ALLOCATION_INFO2   0x3fb
#define SMB_SET_FILE_END_OF_FILE_INFO2  0x3fc
@@ -1428,7 +1433,7 @@ typedef struct smb_com_transaction2_qpi_rsp {
	struct smb_hdr hdr;	/* wct = 10 + SetupCount */
	struct trans2_resp t2;
	__u16 ByteCount;
	__u16 Reserved2;	/* parameter word reserved - present for infolevels > 100 */
	__u16 Reserved2; /* parameter word is present for infolevels > 100 */
} __attribute__((packed)) TRANSACTION2_QPI_RSP;

typedef struct smb_com_transaction2_spi_req {
@@ -1461,7 +1466,7 @@ typedef struct smb_com_transaction2_spi_rsp {
	struct smb_hdr hdr;	/* wct = 10 + SetupCount */
	struct trans2_resp t2;
	__u16 ByteCount;
	__u16 Reserved2;	/* parameter word reserved - present for infolevels > 100 */
	__u16 Reserved2; /* parameter word is present for infolevels > 100 */
} __attribute__((packed)) TRANSACTION2_SPI_RSP;

struct set_file_rename {
@@ -1627,6 +1632,7 @@ typedef struct smb_com_transaction2_fnext_rsp_parms {
#define SMB_QUERY_FS_ATTRIBUTE_INFO 0x105
#define SMB_QUERY_CIFS_UNIX_INFO    0x200
#define SMB_QUERY_POSIX_FS_INFO     0x201
#define SMB_QUERY_POSIX_WHO_AM_I    0x202
#define SMB_QUERY_LABEL_INFO        0x3ea
#define SMB_QUERY_FS_QUOTA_INFO     0x3ee
#define SMB_QUERY_FS_FULL_SIZE_INFO 0x3ef
@@ -1659,9 +1665,21 @@ typedef struct smb_com_transaction_qfsi_rsp {
	struct smb_hdr hdr;	/* wct = 10 + SetupCount */
	struct trans2_resp t2;
	__u16 ByteCount;
	__u8 Pad;		/* may be three bytes *//* followed by data area */
	__u8 Pad;	/* may be three bytes? *//* followed by data area */
} __attribute__((packed)) TRANSACTION2_QFSI_RSP;

typedef struct whoami_rsp_data { /* Query level 0x202 */
	__u32 flags; /* 0 = Authenticated user 1 = GUEST */
	__u32 mask; /* which flags bits server understands ie 0x0001 */
	__u64 unix_user_id;
	__u64 unix_user_gid;
	__u32 number_of_supplementary_gids; /* may be zero */
	__u32 number_of_sids; /* may be zero */
	__u32 length_of_sid_array; /* in bytes - may be zero */
	__u32 pad; /* reserved - MBZ */
	/* __u64 gid_array[0]; */  /* may be empty */
	/* __u8 * psid_list */  /* may be empty */
} __attribute__((packed)) WHOAMI_RSP_DATA;

/* SETFSInfo Levels */
#define SMB_SET_CIFS_UNIX_INFO    0x200
@@ -1858,8 +1876,11 @@ typedef struct {
#define CIFS_UNIX_XATTR_CAP             0x00000004 /* support new namespace   */
#define CIFS_UNIX_EXTATTR_CAP           0x00000008 /* support chattr/chflag   */
#define CIFS_UNIX_POSIX_PATHNAMES_CAP   0x00000010 /* Allow POSIX path chars  */
#define CIFS_UNIX_POSIX_PATH_OPS_CAP    0x00000020 /* Allow new POSIX path based
						      calls including posix open
						      and posix unlink */ 
#ifdef CONFIG_CIFS_POSIX
#define CIFS_UNIX_CAP_MASK              0x0000001b
#define CIFS_UNIX_CAP_MASK              0x0000003b
#else 
#define CIFS_UNIX_CAP_MASK              0x00000013
#endif /* CONFIG_CIFS_POSIX */
@@ -2238,7 +2259,8 @@ struct data_blob {
	1) PosixCreateX - to set and return the mode, inode#, device info and
	perhaps add a CreateDevice - to create Pipes and other special .inodes
	Also note POSIX open flags
	2) Close - to return the last write time to do cache across close more safely
	2) Close - to return the last write time to do cache across close 
		more safely
	3) FindFirst return unique inode number - what about resume key, two 
	forms short (matches readdir) and full (enough info to cache inodes)
	4) Mkdir - set mode
@@ -2273,7 +2295,8 @@ struct data_blob {
	TRANSACTION2 (18 cases)
		SMB_SET_FILE_END_OF_FILE_INFO2 SMB_SET_PATH_END_OF_FILE_INFO2
		(BB verify that never need to set allocation size)
		SMB_SET_FILE_BASIC_INFO2 (setting times - BB can it be done via Unix ext?)
		SMB_SET_FILE_BASIC_INFO2 (setting times - BB can it be done via
			 Unix ext?)
	
	COPY (note support for copy across directories) - FUTURE, OPTIONAL
	setting/getting OS/2 EAs - FUTURE (BB can this handle