diff options
-rw-r--r-- | fs/cifs/Kconfig | 21 | ||||
-rw-r--r-- | fs/cifs/cifspdu.h | 20 |
2 files changed, 22 insertions, 19 deletions
diff --git a/fs/cifs/Kconfig b/fs/cifs/Kconfig index 341a98965bd0..6994a0f54f02 100644 --- a/fs/cifs/Kconfig +++ b/fs/cifs/Kconfig | |||
@@ -118,6 +118,18 @@ config CIFS_DEBUG2 | |||
118 | option can be turned off unless you are debugging | 118 | option can be turned off unless you are debugging |
119 | cifs problems. If unsure, say N. | 119 | cifs problems. If unsure, say N. |
120 | 120 | ||
121 | config CIFS_DFS_UPCALL | ||
122 | bool "DFS feature support" | ||
123 | depends on CIFS && KEYS | ||
124 | help | ||
125 | Distributed File System (DFS) support is used to access shares | ||
126 | transparently in an enterprise name space, even if the share | ||
127 | moves to a different server. This feature also enables | ||
128 | an upcall mechanism for CIFS which contacts userspace helper | ||
129 | utilities to provide server name resolution (host names to | ||
130 | IP addresses) which is needed for implicit mounts of DFS junction | ||
131 | points. If unsure, say N. | ||
132 | |||
121 | config CIFS_EXPERIMENTAL | 133 | config CIFS_EXPERIMENTAL |
122 | bool "CIFS Experimental Features (EXPERIMENTAL)" | 134 | bool "CIFS Experimental Features (EXPERIMENTAL)" |
123 | depends on CIFS && EXPERIMENTAL | 135 | depends on CIFS && EXPERIMENTAL |
@@ -131,12 +143,3 @@ config CIFS_EXPERIMENTAL | |||
131 | (which is disabled by default). See the file fs/cifs/README | 143 | (which is disabled by default). See the file fs/cifs/README |
132 | for more details. If unsure, say N. | 144 | for more details. If unsure, say N. |
133 | 145 | ||
134 | config CIFS_DFS_UPCALL | ||
135 | bool "DFS feature support (EXPERIMENTAL)" | ||
136 | depends on CIFS_EXPERIMENTAL | ||
137 | depends on KEYS | ||
138 | help | ||
139 | Enables an upcall mechanism for CIFS which contacts userspace | ||
140 | helper utilities to provide server name resolution (host names to | ||
141 | IP addresses) which is needed for implicit mounts of DFS junction | ||
142 | points. If unsure, say N. | ||
diff --git a/fs/cifs/cifspdu.h b/fs/cifs/cifspdu.h index eda6e511fd3e..56127638b91e 100644 --- a/fs/cifs/cifspdu.h +++ b/fs/cifs/cifspdu.h | |||
@@ -1931,19 +1931,19 @@ typedef struct smb_com_transaction2_get_dfs_refer_req { | |||
1931 | #define DFS_TYPE_ROOT 0x0001 | 1931 | #define DFS_TYPE_ROOT 0x0001 |
1932 | 1932 | ||
1933 | /* Referral Entry Flags */ | 1933 | /* Referral Entry Flags */ |
1934 | #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 */ | ||
1935 | 1936 | ||
1936 | typedef struct dfs_referral_level_3 { | 1937 | typedef struct dfs_referral_level_3 { /* version 4 is same, + one flag bit */ |
1937 | __le16 VersionNumber; | 1938 | __le16 VersionNumber; /* must be 3 or 4 */ |
1938 | __le16 Size; | 1939 | __le16 Size; |
1939 | __le16 ServerType; /* 0x0001 = root targets; 0x0000 = link targets */ | 1940 | __le16 ServerType; /* 0x0001 = root targets; 0x0000 = link targets */ |
1940 | __le16 ReferralEntryFlags; /* 0x0200 bit set only for domain | 1941 | __le16 ReferralEntryFlags; |
1941 | or DC referral responce */ | ||
1942 | __le32 TimeToLive; | 1942 | __le32 TimeToLive; |
1943 | __le16 DfsPathOffset; | 1943 | __le16 DfsPathOffset; |
1944 | __le16 DfsAlternatePathOffset; | 1944 | __le16 DfsAlternatePathOffset; |
1945 | __le16 NetworkAddressOffset; /* offset of the link target */ | 1945 | __le16 NetworkAddressOffset; /* offset of the link target */ |
1946 | __le16 ServiceSiteGuid; | 1946 | __u8 ServiceSiteGuid[16]; /* MBZ, ignored */ |
1947 | } __attribute__((packed)) REFERRAL3; | 1947 | } __attribute__((packed)) REFERRAL3; |
1948 | 1948 | ||
1949 | typedef struct smb_com_transaction_get_dfs_refer_rsp { | 1949 | typedef struct smb_com_transaction_get_dfs_refer_rsp { |
@@ -1953,15 +1953,15 @@ typedef struct smb_com_transaction_get_dfs_refer_rsp { | |||
1953 | __u8 Pad; | 1953 | __u8 Pad; |
1954 | __le16 PathConsumed; | 1954 | __le16 PathConsumed; |
1955 | __le16 NumberOfReferrals; | 1955 | __le16 NumberOfReferrals; |
1956 | __le16 DFSFlags; | 1956 | __le32 DFSFlags; |
1957 | __u16 Pad2; | ||
1958 | REFERRAL3 referrals[1]; /* array of level 3 dfs_referral structures */ | 1957 | REFERRAL3 referrals[1]; /* array of level 3 dfs_referral structures */ |
1959 | /* followed by the strings pointed to by the referral structures */ | 1958 | /* followed by the strings pointed to by the referral structures */ |
1960 | } __attribute__((packed)) TRANSACTION2_GET_DFS_REFER_RSP; | 1959 | } __attribute__((packed)) TRANSACTION2_GET_DFS_REFER_RSP; |
1961 | 1960 | ||
1962 | /* DFS Flags */ | 1961 | /* DFS Flags */ |
1963 | #define DFSREF_REFERRAL_SERVER 0x0001 | 1962 | #define DFSREF_REFERRAL_SERVER 0x00000001 /* all targets are DFS roots */ |
1964 | #define DFSREF_STORAGE_SERVER 0x0002 | 1963 | #define DFSREF_STORAGE_SERVER 0x00000002 /* no further ref requests needed */ |
1964 | #define DFSREF_TARGET_FAILBACK 0x00000004 /* only for DFS referral version 4 */ | ||
1965 | 1965 | ||
1966 | /* IOCTL information */ | 1966 | /* IOCTL information */ |
1967 | /* | 1967 | /* |