]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
[CIFS] DFS no longer experimental
authorSteve French <sfrench@us.ibm.com>
Sun, 22 Feb 2009 01:33:07 +0000 (01:33 +0000)
committerSteve French <sfrench@us.ibm.com>
Thu, 12 Mar 2009 01:36:20 +0000 (01:36 +0000)
Also updates some DFS flag definitions

Signed-off-by: Steve French <sfrench@us.ibm.com>
fs/cifs/Kconfig
fs/cifs/cifspdu.h

index 341a98965bd0122d2cf3b7348175b4048e66496e..6994a0f54f020510f498641d7d81002ad122c734 100644 (file)
@@ -118,6 +118,18 @@ config CIFS_DEBUG2
           option can be turned off unless you are debugging
           cifs problems.  If unsure, say N.
 
+config CIFS_DFS_UPCALL
+         bool "DFS feature support"
+         depends on CIFS && KEYS
+         help
+           Distributed File System (DFS) support is used to access shares
+           transparently in an enterprise name space, even if the share
+           moves to a different server.  This feature also enables
+           an upcall mechanism for CIFS which contacts userspace helper
+           utilities to provide server name resolution (host names to
+           IP addresses) which is needed for implicit mounts of DFS junction
+           points. If unsure, say N.
+
 config CIFS_EXPERIMENTAL
          bool "CIFS Experimental Features (EXPERIMENTAL)"
          depends on CIFS && EXPERIMENTAL
@@ -131,12 +143,3 @@ config CIFS_EXPERIMENTAL
            (which is disabled by default). See the file fs/cifs/README
            for more details.  If unsure, say N.
 
-config CIFS_DFS_UPCALL
-         bool "DFS feature support (EXPERIMENTAL)"
-         depends on CIFS_EXPERIMENTAL
-         depends on KEYS
-         help
-           Enables an upcall mechanism for CIFS which contacts userspace
-           helper utilities to provide server name resolution (host names to
-           IP addresses) which is needed for implicit mounts of DFS junction
-           points. If unsure, say N.
index eda6e511fd3eeeb060c8c9d00b0b33b7730694d9..56127638b91eeed54abedc9c787cb71046a9b868 100644 (file)
@@ -1931,19 +1931,19 @@ typedef struct smb_com_transaction2_get_dfs_refer_req {
 #define DFS_TYPE_ROOT 0x0001
 
 /* Referral Entry Flags */
-#define DFS_NAME_LIST_REF 0x0200
+#define DFS_NAME_LIST_REF 0x0200 /* set for domain or DC referral responses */
+#define DFS_TARGET_SET_BOUNDARY 0x0400 /* only valid with version 4 dfs req */
 
-typedef struct dfs_referral_level_3 {
-       __le16 VersionNumber;
+typedef struct dfs_referral_level_3 { /* version 4 is same, + one flag bit */
+       __le16 VersionNumber;  /* must be 3 or 4 */
        __le16 Size;
        __le16 ServerType; /* 0x0001 = root targets; 0x0000 = link targets */
-       __le16 ReferralEntryFlags; /* 0x0200 bit set only for domain
-                                     or DC referral responce */
+       __le16 ReferralEntryFlags;
        __le32 TimeToLive;
        __le16 DfsPathOffset;
        __le16 DfsAlternatePathOffset;
        __le16 NetworkAddressOffset; /* offset of the link target */
-       __le16 ServiceSiteGuid;
+       __u8   ServiceSiteGuid[16];  /* MBZ, ignored */
 } __attribute__((packed)) REFERRAL3;
 
 typedef struct smb_com_transaction_get_dfs_refer_rsp {
@@ -1953,15 +1953,15 @@ typedef struct smb_com_transaction_get_dfs_refer_rsp {
        __u8 Pad;
        __le16 PathConsumed;
        __le16 NumberOfReferrals;
-       __le16 DFSFlags;
-       __u16 Pad2;
+       __le32 DFSFlags;
        REFERRAL3 referrals[1]; /* array of level 3 dfs_referral structures */
        /* followed by the strings pointed to by the referral structures */
 } __attribute__((packed)) TRANSACTION2_GET_DFS_REFER_RSP;
 
 /* DFS Flags */
-#define DFSREF_REFERRAL_SERVER  0x0001
-#define DFSREF_STORAGE_SERVER   0x0002
+#define DFSREF_REFERRAL_SERVER  0x00000001 /* all targets are DFS roots */
+#define DFSREF_STORAGE_SERVER   0x00000002 /* no further ref requests needed */
+#define DFSREF_TARGET_FAILBACK  0x00000004 /* only for DFS referral version 4 */
 
 /* IOCTL information */
 /*