diff options
Diffstat (limited to 'fs/cifs/cifspdu.h')
-rw-r--r-- | fs/cifs/cifspdu.h | 76 |
1 files changed, 23 insertions, 53 deletions
diff --git a/fs/cifs/cifspdu.h b/fs/cifs/cifspdu.h index b4e2e9f0ee3d..b370489c8da5 100644 --- a/fs/cifs/cifspdu.h +++ b/fs/cifs/cifspdu.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * fs/cifs/cifspdu.h | 2 | * fs/cifs/cifspdu.h |
3 | * | 3 | * |
4 | * Copyright (c) International Business Machines Corp., 2002,2008 | 4 | * Copyright (c) International Business Machines Corp., 2002,2009 |
5 | * Author(s): Steve French (sfrench@us.ibm.com) | 5 | * Author(s): Steve French (sfrench@us.ibm.com) |
6 | * | 6 | * |
7 | * This library is free software; you can redistribute it and/or modify | 7 | * This library is free software; you can redistribute it and/or modify |
@@ -23,6 +23,7 @@ | |||
23 | #define _CIFSPDU_H | 23 | #define _CIFSPDU_H |
24 | 24 | ||
25 | #include <net/sock.h> | 25 | #include <net/sock.h> |
26 | #include "smbfsctl.h" | ||
26 | 27 | ||
27 | #ifdef CONFIG_CIFS_WEAK_PW_HASH | 28 | #ifdef CONFIG_CIFS_WEAK_PW_HASH |
28 | #define LANMAN_PROT 0 | 29 | #define LANMAN_PROT 0 |
@@ -34,15 +35,15 @@ | |||
34 | #define POSIX_PROT (CIFS_PROT+1) | 35 | #define POSIX_PROT (CIFS_PROT+1) |
35 | #define BAD_PROT 0xFFFF | 36 | #define BAD_PROT 0xFFFF |
36 | 37 | ||
37 | /* SMB command codes */ | 38 | /* SMB command codes: |
38 | /* | 39 | * Note some commands have minimal (wct=0,bcc=0), or uninteresting, responses |
39 | * Some commands have minimal (wct=0,bcc=0), or uninteresting, responses | ||
40 | * (ie which include no useful data other than the SMB error code itself). | 40 | * (ie which include no useful data other than the SMB error code itself). |
41 | * Knowing this helps avoid response buffer allocations and copy in some cases | 41 | * This can allow us to avoid response buffer allocations and copy in some cases |
42 | */ | 42 | */ |
43 | #define SMB_COM_CREATE_DIRECTORY 0x00 /* trivial response */ | 43 | #define SMB_COM_CREATE_DIRECTORY 0x00 /* trivial response */ |
44 | #define SMB_COM_DELETE_DIRECTORY 0x01 /* trivial response */ | 44 | #define SMB_COM_DELETE_DIRECTORY 0x01 /* trivial response */ |
45 | #define SMB_COM_CLOSE 0x04 /* triv req/rsp, timestamp ignored */ | 45 | #define SMB_COM_CLOSE 0x04 /* triv req/rsp, timestamp ignored */ |
46 | #define SMB_COM_FLUSH 0x05 /* triv req/rsp */ | ||
46 | #define SMB_COM_DELETE 0x06 /* trivial response */ | 47 | #define SMB_COM_DELETE 0x06 /* trivial response */ |
47 | #define SMB_COM_RENAME 0x07 /* trivial response */ | 48 | #define SMB_COM_RENAME 0x07 /* trivial response */ |
48 | #define SMB_COM_QUERY_INFORMATION 0x08 /* aka getattr */ | 49 | #define SMB_COM_QUERY_INFORMATION 0x08 /* aka getattr */ |
@@ -790,6 +791,12 @@ typedef struct smb_com_close_rsp { | |||
790 | __u16 ByteCount; /* bct = 0 */ | 791 | __u16 ByteCount; /* bct = 0 */ |
791 | } __attribute__((packed)) CLOSE_RSP; | 792 | } __attribute__((packed)) CLOSE_RSP; |
792 | 793 | ||
794 | typedef struct smb_com_flush_req { | ||
795 | struct smb_hdr hdr; /* wct = 1 */ | ||
796 | __u16 FileID; | ||
797 | __u16 ByteCount; /* 0 */ | ||
798 | } __attribute__((packed)) FLUSH_REQ; | ||
799 | |||
793 | typedef struct smb_com_findclose_req { | 800 | typedef struct smb_com_findclose_req { |
794 | struct smb_hdr hdr; /* wct = 1 */ | 801 | struct smb_hdr hdr; /* wct = 1 */ |
795 | __u16 FileID; | 802 | __u16 FileID; |
@@ -1924,19 +1931,19 @@ typedef struct smb_com_transaction2_get_dfs_refer_req { | |||
1924 | #define DFS_TYPE_ROOT 0x0001 | 1931 | #define DFS_TYPE_ROOT 0x0001 |
1925 | 1932 | ||
1926 | /* Referral Entry Flags */ | 1933 | /* Referral Entry Flags */ |
1927 | #define DFS_NAME_LIST_REF 0x0200 | 1934 | #define DFS_NAME_LIST_REF 0x0200 /* set for domain or DC referral responses */ |
1935 | #define DFS_TARGET_SET_BOUNDARY 0x0400 /* only valid with version 4 dfs req */ | ||
1928 | 1936 | ||
1929 | typedef struct dfs_referral_level_3 { | 1937 | typedef struct dfs_referral_level_3 { /* version 4 is same, + one flag bit */ |
1930 | __le16 VersionNumber; | 1938 | __le16 VersionNumber; /* must be 3 or 4 */ |
1931 | __le16 Size; | 1939 | __le16 Size; |
1932 | __le16 ServerType; /* 0x0001 = root targets; 0x0000 = link targets */ | 1940 | __le16 ServerType; /* 0x0001 = root targets; 0x0000 = link targets */ |
1933 | __le16 ReferralEntryFlags; /* 0x0200 bit set only for domain | 1941 | __le16 ReferralEntryFlags; |
1934 | or DC referral responce */ | ||
1935 | __le32 TimeToLive; | 1942 | __le32 TimeToLive; |
1936 | __le16 DfsPathOffset; | 1943 | __le16 DfsPathOffset; |
1937 | __le16 DfsAlternatePathOffset; | 1944 | __le16 DfsAlternatePathOffset; |
1938 | __le16 NetworkAddressOffset; /* offset of the link target */ | 1945 | __le16 NetworkAddressOffset; /* offset of the link target */ |
1939 | __le16 ServiceSiteGuid; | 1946 | __u8 ServiceSiteGuid[16]; /* MBZ, ignored */ |
1940 | } __attribute__((packed)) REFERRAL3; | 1947 | } __attribute__((packed)) REFERRAL3; |
1941 | 1948 | ||
1942 | typedef struct smb_com_transaction_get_dfs_refer_rsp { | 1949 | typedef struct smb_com_transaction_get_dfs_refer_rsp { |
@@ -1946,48 +1953,15 @@ typedef struct smb_com_transaction_get_dfs_refer_rsp { | |||
1946 | __u8 Pad; | 1953 | __u8 Pad; |
1947 | __le16 PathConsumed; | 1954 | __le16 PathConsumed; |
1948 | __le16 NumberOfReferrals; | 1955 | __le16 NumberOfReferrals; |
1949 | __le16 DFSFlags; | 1956 | __le32 DFSFlags; |
1950 | __u16 Pad2; | ||
1951 | REFERRAL3 referrals[1]; /* array of level 3 dfs_referral structures */ | 1957 | REFERRAL3 referrals[1]; /* array of level 3 dfs_referral structures */ |
1952 | /* followed by the strings pointed to by the referral structures */ | 1958 | /* followed by the strings pointed to by the referral structures */ |
1953 | } __attribute__((packed)) TRANSACTION2_GET_DFS_REFER_RSP; | 1959 | } __attribute__((packed)) TRANSACTION2_GET_DFS_REFER_RSP; |
1954 | 1960 | ||
1955 | /* DFS Flags */ | 1961 | /* DFS Flags */ |
1956 | #define DFSREF_REFERRAL_SERVER 0x0001 | 1962 | #define DFSREF_REFERRAL_SERVER 0x00000001 /* all targets are DFS roots */ |
1957 | #define DFSREF_STORAGE_SERVER 0x0002 | 1963 | #define DFSREF_STORAGE_SERVER 0x00000002 /* no further ref requests needed */ |
1958 | 1964 | #define DFSREF_TARGET_FAILBACK 0x00000004 /* only for DFS referral version 4 */ | |
1959 | /* IOCTL information */ | ||
1960 | /* | ||
1961 | * List of ioctl function codes that look to be of interest to remote clients | ||
1962 | * like this one. Need to do some experimentation to make sure they all work | ||
1963 | * remotely. Some of the following, such as the encryption/compression ones | ||
1964 | * would be invoked from tools via a specialized hook into the VFS rather | ||
1965 | * than via the standard vfs entry points | ||
1966 | */ | ||
1967 | #define FSCTL_REQUEST_OPLOCK_LEVEL_1 0x00090000 | ||
1968 | #define FSCTL_REQUEST_OPLOCK_LEVEL_2 0x00090004 | ||
1969 | #define FSCTL_REQUEST_BATCH_OPLOCK 0x00090008 | ||
1970 | #define FSCTL_LOCK_VOLUME 0x00090018 | ||
1971 | #define FSCTL_UNLOCK_VOLUME 0x0009001C | ||
1972 | #define FSCTL_GET_COMPRESSION 0x0009003C | ||
1973 | #define FSCTL_SET_COMPRESSION 0x0009C040 | ||
1974 | #define FSCTL_REQUEST_FILTER_OPLOCK 0x0009008C | ||
1975 | #define FSCTL_FILESYS_GET_STATISTICS 0x00090090 | ||
1976 | #define FSCTL_SET_REPARSE_POINT 0x000900A4 | ||
1977 | #define FSCTL_GET_REPARSE_POINT 0x000900A8 | ||
1978 | #define FSCTL_DELETE_REPARSE_POINT 0x000900AC | ||
1979 | #define FSCTL_SET_SPARSE 0x000900C4 | ||
1980 | #define FSCTL_SET_ZERO_DATA 0x000900C8 | ||
1981 | #define FSCTL_SET_ENCRYPTION 0x000900D7 | ||
1982 | #define FSCTL_ENCRYPTION_FSCTL_IO 0x000900DB | ||
1983 | #define FSCTL_WRITE_RAW_ENCRYPTED 0x000900DF | ||
1984 | #define FSCTL_READ_RAW_ENCRYPTED 0x000900E3 | ||
1985 | #define FSCTL_SIS_COPYFILE 0x00090100 | ||
1986 | #define FSCTL_SIS_LINK_FILES 0x0009C104 | ||
1987 | |||
1988 | #define IO_REPARSE_TAG_MOUNT_POINT 0xA0000003 | ||
1989 | #define IO_REPARSE_TAG_HSM 0xC0000004 | ||
1990 | #define IO_REPARSE_TAG_SIS 0x80000007 | ||
1991 | 1965 | ||
1992 | /* | 1966 | /* |
1993 | ************************************************************************ | 1967 | ************************************************************************ |
@@ -2508,8 +2482,6 @@ struct data_blob { | |||
2508 | 6) Use nanosecond timestamps throughout all time fields if | 2482 | 6) Use nanosecond timestamps throughout all time fields if |
2509 | corresponding attribute flag is set | 2483 | corresponding attribute flag is set |
2510 | 7) sendfile - handle based copy | 2484 | 7) sendfile - handle based copy |
2511 | 8) Direct i/o | ||
2512 | 9) Misc fcntls? | ||
2513 | 2485 | ||
2514 | what about fixing 64 bit alignment | 2486 | what about fixing 64 bit alignment |
2515 | 2487 | ||
@@ -2628,7 +2600,5 @@ typedef struct file_chattr_info { | |||
2628 | __le64 mode; /* list of actual attribute bits on this inode */ | 2600 | __le64 mode; /* list of actual attribute bits on this inode */ |
2629 | } __attribute__((packed)) FILE_CHATTR_INFO; /* ext attributes | 2601 | } __attribute__((packed)) FILE_CHATTR_INFO; /* ext attributes |
2630 | (chattr, chflags) level 0x206 */ | 2602 | (chattr, chflags) level 0x206 */ |
2631 | 2603 | #endif /* POSIX */ | |
2632 | #endif | ||
2633 | |||
2634 | #endif /* _CIFSPDU_H */ | 2604 | #endif /* _CIFSPDU_H */ |