The branch, v3-0-test has been updated
       via  f04810e9f216ad43b45b69e6e0c6792cc93076a1 (commit)
      from  485cedadb0e61775e6cb152f42f4dfdf17e82666 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-0-test


- Log -----------------------------------------------------------------
commit f04810e9f216ad43b45b69e6e0c6792cc93076a1
Author: Volker Lendecke <[EMAIL PROTECTED]>
Date:   Sat Jan 26 21:35:01 2008 +0100

    Port SMB_FS_OBJECTID_INFORMATION from 3.2
    
    Patch by Corinna Vinschen -- Thanks

-----------------------------------------------------------------------

Summary of changes:
 source/include/smb.h |   11 +++++++++++
 source/smbd/trans2.c |   47 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 58 insertions(+), 0 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/include/smb.h b/source/include/smb.h
index 5ce8406..46afcde 100644
--- a/source/include/smb.h
+++ b/source/include/smb.h
@@ -1934,4 +1934,15 @@ enum usershare_err {
 /* Different reasons for closing a file. */
 enum file_close_type {NORMAL_CLOSE=0,SHUTDOWN_CLOSE,ERROR_CLOSE};
 
+/* Used in SMB_FS_OBJECTID_INFORMATION requests.  Must be exactly 48 bytes. */
+#define SAMBA_EXTENDED_INFO_MAGIC 0x536d4261 /* "SmBa" */
+#define SAMBA_EXTENDED_INFO_VERSION_STRING_LENGTH 28
+struct smb_extended_info {
+       uint32 samba_magic;             /* Always SAMBA_EXTRA_INFO_MAGIC */
+       uint32 samba_version;           /* Major/Minor/Release/Revision */
+       uint32 samba_subversion;        /* Prerelease/RC/Vendor patch */
+       NTTIME samba_gitcommitdate;
+       char   samba_version_string[SAMBA_EXTENDED_INFO_VERSION_STRING_LENGTH];
+};
+
 #endif /* _SMB_H */
diff --git a/source/smbd/trans2.c b/source/smbd/trans2.c
index 3e1ba8a..623117b 100644
--- a/source/smbd/trans2.c
+++ b/source/smbd/trans2.c
@@ -2223,6 +2223,41 @@ total_data=%u (should be %u)\n", (unsigned 
int)total_data, (unsigned int)IVAL(pd
        return(-1);
 }
 
+static void samba_extended_info_version(struct smb_extended_info 
*extended_info)
+{
+                               SMB_ASSERT(extended_info != NULL);
+
+                               extended_info->samba_magic = 
SAMBA_EXTENDED_INFO_MAGIC;
+                               extended_info->samba_version = 
((SAMBA_VERSION_MAJOR & 0xff) << 24)
+                                                                               
                                                                         | 
((SAMBA_VERSION_MINOR & 0xff) << 16)
+                                                                               
                                                                         | 
((SAMBA_VERSION_RELEASE & 0xff) << 8);
+#ifdef SAMBA_VERSION_REVISION
+                               extended_info->samba_version |= 
(tolower(*SAMBA_VERSION_REVISION) - 'a' + 1) & 0xff;
+#endif
+                               extended_info->samba_subversion = 0;
+#ifdef SAMBA_VERSION_RC_RELEASE
+                               extended_info->samba_subversion |= 
(SAMBA_VERSION_RC_RELEASE & 0xff) << 24;
+#else
+#ifdef SAMBA_VERSION_PRE_RELEASE
+                               extended_info->samba_subversion |= 
(SAMBA_VERSION_PRE_RELEASE & 0xff) << 16;
+#endif
+#endif
+#ifdef SAMBA_VERSION_VENDOR_PATCH
+                               extended_info->samba_subversion |= 
(SAMBA_VERSION_VENDOR_PATCH & 0xffff);
+#endif
+                               extended_info->samba_subversion = 0;
+#ifdef SAMBA_VERSION_GIT_COMMIT_TIME
+                               
unix_to_nt_time(&extended_info->samba_gitcommitdate, 
SAMBA_VERSION_GIT_COMMIT_TIME);
+#endif
+
+                               memset(extended_info->samba_version_string, 0,
+                                                        
sizeof(extended_info->samba_version_string));
+
+                               snprintf (extended_info->samba_version_string,
+                                                                       
sizeof(extended_info->samba_version_string),
+                                                                       "%s", 
samba_version_string());
+}
+
 /****************************************************************************
  Reply to a TRANS2_QFSINFO (query filesystem info).
 ****************************************************************************/
@@ -2511,8 +2546,20 @@ cBytesSector=%u, cUnitTotal=%u, cUnitAvail=%d\n", 
(unsigned int)bsize, (unsigned
                }
 #endif /* HAVE_SYS_QUOTAS */
                case SMB_FS_OBJECTID_INFORMATION:
+               {
+                       /*
+                        * No object id, but we transmit version information.
+                        */
+                       struct smb_extended_info extended_info;
+                       samba_extended_info_version (&extended_info);
+                       SIVAL(pdata,16,extended_info.samba_magic);
+                       SIVAL(pdata,20,extended_info.samba_version);
+                       SIVAL(pdata,24,extended_info.samba_subversion);
+                       SBIG_UINT(pdata,28,extended_info.samba_gitcommitdate);
+                       memcpy(pdata+36,extended_info.samba_version_string,28);
                        data_len = 64;
                        break;
+               }
 
                /*
                 * Query the version and capabilities of the CIFS UNIX 
extensions


-- 
Samba Shared Repository

Reply via email to